CloudFormationで値を動的にする

概要

CloudFormation入門 - juve534のブログ

でCloudFormationに入門したのでその続き。 今回は値を動的にする方法を学びました。

内容

前回作ったものは値が動的になっており、そのまま使い回しができない状態になっています。

AWSTemplateFormatVersion: '2010-09-09'
Resources:
  FirstVPC:
    Type: AWS::EC2::VPC
    Properties:
      CidrBlock: 10.0.0.0/16

これはVPCなので、ピンと来ないかもしれません。 では、EC2で見てみましょう。

 FirstEC2:
    Type: AWS::EC2::Instance
    Properties:
      InstanceType: 't2.micro'
      SecurityGroupIds: 
        - !GetAtt FirstSecurityGroup.GroupId
      SubnetId: !Ref FrontendSubnet
      ImageId: 'ami-id'
      KeyName: '鍵名'

このテンプレートでいうと、AMIのIDやsshで使う鍵は動的にしたいと思いました。
また、Git等のバージョン管理に上げるときに、隠したいとも思います。

なので、Parametersを使って動的にします。

Parameters:
  # SSH用キーペアの指定
  KeyPair:
    Description: KeyPair Name
    Type: AWS::EC2::KeyPair::KeyName
  AmiId:
    Description: AMI ID
    Type: AWS::EC2::Image::Id

 FirstEC2:
    Type: AWS::EC2::Instance
    Properties:
      InstanceType: 't2.micro'
      SecurityGroupIds: 
        - !GetAtt FirstSecurityGroup.GroupId
      SubnetId: !Ref FrontendSubnet
      ImageId: !Ref AmiId
      KeyName: !Ref KeyPair

Parametersには2つ定義を作りました。
KeyPairはコンソール上でいくつか作っていたので、既存のものを流用しています。 AMIも同様にいくつか作っていたので、流用できるようにしました。

これで、CloudFormationのコンソール上からテンプレートをアップし、Parameterを定義しました。

目論見通り、動的に値を変えられました。

まとめ

Parametersを使うことで、値を動的に変更できる。
テンプレートを使い回しに有効そうでした。