BETA

AWS CloudFormation練習帖:パラメータを使用してみる

投稿日:2019-07-10
最終更新:2019-07-10

何をする?

  • AWS CloudFormation練習帖:VPCを作ってみる』で利用したようなテンプレートでは、常に同じ構成でしかスタックを作れない
  • そこで、パラメータを利用して一部の設定を可変にして同じテンプレートから設定を変えた複数のスタックを作れるようにする

前提条件

  • AWSアカウントは開設済み
  • アジアパシフィック(東京)リージョンを利用
  • VPCは未作成(デフォルトVPCのみ)
  • パラメータ未使用時のテンプレートはこんな感じ
    # ここはお決まり  
    AWSTemplateFormatVersion: "2010-09-09"  
    # テンプレートについての説明  
    Description: Create VPC  
    # ここから作成するリソースについての記述  
    Resources:  
    MyVPC:  
      # リソースのタイプを指定  
      Type: AWS::EC2::VPC  
      # リソースのプロパティを指定  
      Properties:  
        # IPv4 CIDR  
        CidrBlock: 10.0.0.0/16  
        # タグ  
        Tags:  
          - Key: Name  
            Value: VPC1  

やってみた

まずはパラメータ未使用のテンプレートでスタックを2つ作成してみる

  • 同じテンプレートファイルを使用してスタック名だけ変えて実行
    • どちらもスタック作成は正常終了する
    • しかし全く同じ内容なので作成されたVPCはこんな感じ

      これでは使い物にならないので、IPv4 CIDRとNameをパラメータで指定できるようにしたい

テンプレートを修正する

  • とりあえずシンプルにパラメータの定義を追加してみます
    # ここはお決まり  
    AWSTemplateFormatVersion: "2010-09-09"  
    # テンプレートについての説明  
    Description: Create VPC  
    # パラメータについての記述  
    Parameters:  
    IPv4CidrBlock:  
      Description: IPv4 CIDR Block  
      Type: String  
    NameTag:  
      Description: Tag(Name) Value  
      Type: String  
    # ここから作成するリソースについての記述  
    Resources:  
    MyVPC:  
      # リソースのタイプを指定  
      Type: AWS::EC2::VPC  
      # リソースのプロパティを指定  
      Properties:  
        # IPv4 CIDR(パラメータ:IPv4CidrBlockを参照)  
        CidrBlock: !Ref IPv4CidrBlock  
        # タグ(パラメータ:NameTagを参照)  
        Tags:  
          - Key: Name  
            Value: !Ref NameTag  
    • 変更点は以下
      • パラメータの定義を2つ追加(5行目~12行目)
      • VPCのプロパティをパラメータ参照するように変更(21行目、25行目)

実行

  • 修正したテンプレートを指定してスタックを作成
  • ステップ2でパラメータが指定できるようになっているので任意の値を設定
  • ステータスが「CREATE_IN_PROGRESS」から「CREATE_COMPLETE」になれば作成完了
  • IPv4 CIDRとNameが、パラメータで指定した値になっていることを確認

しかしこのテンプレートには問題が

  • String型なら何でも入力可能なので…
  • こうなる(そりゃそうだ)
  • そうならないように、パラメータに指定できる各種プロパティを使いましょう
    • AllowedPattern:String 型に使用できるパターンを表す正規表現。
    • AllowedValues:パラメーターに許容される一連の値を含む配列。
    • MaxLength/MinLength:String 型に使用できる最大(最小)文字数を決定する整数値。
    • MaxValue/MinValue:Number 型に使用できる数値の最大(最小)値を決定する数値。

おまけ

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

AWSやAzureについて勉強したことをつらつらと。 基本的には未来の自分に向けたメモ的な何か。

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
or 外部アカウントではじめる
10秒で技術ブログが作れます!