CloudFormationでいつでも最新のWindows AMIからEC2を起動したい(パブリックパラメータストア利用)
西澤です。AWSサービスのアップデート情報のキャッチアップをしていた中で、以前に書いた記事が、非常に簡単にスマートに実装できるようになっていたことに気付いたのでご紹介したいと思います。
最新のAMIを利用する為の戦いの記録
以前に書いた記事は下記のものです。
その他、色々な方が似たようなことで苦しんでいるところも合わせてご確認ください。
最新のWindows AMIはパラメータストアから簡単に取得できるようになっていた
そして、アンサーブログは、中山順博さんが書かれたこちらの記事。
もう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にさらに期待したいです。
どこかの誰かのお役に立てば嬉しいです。