CloudFormationでいつでも最新のWindows AMIからEC2を起動したい(パブリックパラメータストア利用)

2018.04.11

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

西澤です。AWSサービスのアップデート情報のキャッチアップをしていた中で、以前に書いた記事が、非常に簡単にスマートに実装できるようになっていたことに気付いたのでご紹介したいと思います。

最新のAMIを利用する為の戦いの記録

以前に書いた記事は下記のものです。

CloudFormationでいつでも最新AMIからEC2を起動したい

その他、色々な方が似たようなことで苦しんでいるところも合わせてご確認ください。

Terraformでもいつでも最新AMIからEC2を起動したい

指定AMIの最新版を使ったWindowsEC2インスタンスを作成するスクリプト

最新のWindows AMIはパラメータストアから簡単に取得できるようになっていた

そして、アンサーブログは、中山順博さんが書かれたこちらの記事。

パラメーターストアから最新のWindows AMIのIDを取得する

もうLambdaで最新のAMI IDを取得する処理を書く必要も無いですし、CloudFormationをネストするようなややこしいことをする必要も無くなっていました。

最新のWindows AMIからEC2を起動するCloudFormationテンプレートサンプル

前回書いた記事では試行錯誤して苦労した記憶があったのですが、非常に簡単に短時間で用意することができました。逆に言うと、簡単に用意できるので、あまり需要がないかもしれませんが、一応私が試したサンプルテンプレートをご紹介しておきます。

---
AWSTemplateFormatVersion: '2010-09-09'
Description: Launch from Latest Windows AMI Template
Parameters:
  WindowsLatestAmi:
    Type : AWS::SSM::Parameter::Value<String>
    Default: /aws/service/ami-windows-latest/Windows_Server-2016-Japanese-Full-Base
    AllowedValues:
    - /aws/service/ami-windows-latest/Windows_Server-2008-R2_SP1-Japanese-64Bit-Base
    - /aws/service/ami-windows-latest/Windows_Server-2012-R2_RTM-Japanese-64Bit-Base
    - /aws/service/ami-windows-latest/Windows_Server-2016-Japanese-Full-Base
  VPC:
    Type: AWS::EC2::VPC::Id
    Description: VPC ID
  Subnet:
    Type: AWS::EC2::Subnet::Id
    Description: Subnet ID
  KeyName:
    Type: AWS::EC2::KeyPair::KeyName
    Description: Name of an existing EC2 KeyPair to enable SSH access to the instances
  EC2SecurityGroup:
    Type: List<AWS::EC2::SecurityGroup::Id>
    Description: SecurityGroupId to attach
  InstanceType:
    Type: String
    Default: t2.medium
    Description: EC2 Instance Type.
  EC2Tag:
    Type: String
    Default: wintest
    Description: Name Tag for EC2 Instance.
Resources:
  EC2Instance:
    Type: AWS::EC2::Instance
    Properties:
      InstanceType: !Ref InstanceType
      KeyName: !Ref KeyName
      SubnetId: !Ref Subnet
      ImageId: !Ref WindowsLatestAmi
      SecurityGroupIds: !Ref EC2SecurityGroup
      Tags:
      - Key: Name
        Value: !Ref EC2Tag

AMI IDの検索などせずに非常に簡単にWindowsサーバを用意することができます。ぜひお試しいただければと思います。

まとめ

前回苦労して検証をしてようやく動いたCloudFormationテンプレートが、ここまですっきり簡単に書けるようになるとは本当に驚きました。Lambdaを書いて動かすのも楽しいのですが、本来の目的の為に必要な作業は少ないに越したことはありません。便利に使えるパブリックなパラメータストアが他にも増えていくと嬉しいですよね。進化を続けるAWSにさらに期待したいです。

どこかの誰かのお役に立てば嬉しいです。