CloudFormationテンプレートのパラメータ
Parametersセクションを利用すると、スタック作成時に様々な値を渡すことができます。
パラメータ構文
Parameters: パラメータ名: Type: データ型 プロパティ: 値 ...
Typeプロパティは必須項目でデータ型を指定します。
データ型
データ型は、文字列や数値などのプリミティブな型とAWS固有のタイプがあります。
データ型 | 説明 | 入力例 |
---|---|---|
String | リテラル文字列 | "MyTest" |
Number | 整数または浮動小数点値 | 90 |
List<Number> | カンマで区切られた整数または浮動小数点値の配列 | "10,20,30" |
CommaDelimitedList | カンマで区切られたリテラル文字列の配列 | "aaa,bbb,ccc" |
AWS固有のタイプ | Amazon EC2キーペアの名前やVPCのIDなど |
AWS固有のタイプは、下記エントリを参照してください。
入力値の参照
組み込み関数 Ref を使用して、入力した値を参照できます。
RefはReference(参照)の略です。
下記テンプレートを実行すると、パラメータ名 VpcName
をVPCの名前タグに設定します。
AWSTemplateFormatVersion: '2010-09-09' Parameters: VpcName: Type: String Resources: MyVPC: Type: AWS::EC2::VPC Properties: CidrBlock: 10.0.0.0/16 Tags: - Key: Name Value: !Ref VpcName
- Parametersセクションで文字列型のパラメータ
VpcName
を定義 - ResourcesセクションのVPC定義内で
VpcName
を参照して名前タグに設定
!RefはRefの短縮形です。
「短縮形?文字数増えてるやんけ」と思いましたが、エディタによってはハイライト機能が有効になるので、積極的に使っていきましょう。
デフォルト値
パラメータに値を指定しなかった場合にセットする値です。
プロパティ | 説明 |
---|---|
Default | 値を指定しなかった場合にセットする値 |
制約
制約関連のプロパティです。型によって使用出来る、出来ないがあります。 制約に違反する場合は、エラーになり実行出来ません。 パラメータを必須入力させる場合も制約を利用します。
プロパティ | String型 | Number型 | 説明 |
---|---|---|---|
AllowedValues | ○ | ○ | 許可する値をリストで指定 |
AllowedPattern | ○ | 値を正規表現でチェック | |
MinLength | ○ | 最小文字数 | |
MaxLength | ○ | 最大文字数 | |
MinValue | ○ | 最小値 | |
MaxValue | ○ | 最大値 |
表示系
表示に関するプロパティです。
残念ながら日本語には対応していません。日本語を入力すると???になります。
プロパティ | 説明 |
---|---|
Description | パラメータの説明 |
ConstraintDescription | 入力した値が制約にひっかかった場合の説明 |
NoEcho | 値をアスタリスク(*)で見えなくするかどうか true/false |
サンプル
入力した値を出力するだけのサンプルです。 リソースはVPCを作成しています。
AWSTemplateFormatVersion: '2010-09-09' Parameters: Input1: Type: String AllowedValues: ["apple", "banana", "melon", "grape"] Description: Select fruit Input2: Type: Number MinValue: 0 MaxValue: 100 Description: Input your weight (0-100) Input3: Type: List<Number> Default: "10,20,30" MinValue: 10 MaxValue: 100 Description: Input your numbers (10-100) Input4: Type: CommaDelimitedList Default: "var,www,html" Description: Input directory Input5: Type: String NoEcho: true MinLength: 4 MaxLength: 16 Description: Input your secret word (4-16chars) Resources: MyVPC: Type: AWS::EC2::VPC Properties: CidrBlock: 10.0.0.0/16 Outputs: Output1: Description: Fruit Value: !Ref Input1 Output2: Description: Weight Value: !Ref Input2 Output3: Description: Numbers Value: !Join [" or ", !Ref Input3] Output4: Description: Directory Value: !Join ["/", !Ref Input4] Output5: Description: Secret word Value: !Ref Input5
入力 (Parameters)
- Input1
AllowedValues
を利用するとセレクトボックスが表示されます。- 未選択の場合は、[次へ]ボタン押下時にエラーになります。
- Input2
- Number型だと整数だけでなく浮動小数点も入力可能です。整数だけにしたい場合は
AllowedPattern
で数値のみに限定します。
- Number型だと整数だけでなく浮動小数点も入力可能です。整数だけにしたい場合は
- Input3, Input4
- カンマ区切りで指定します。カンマの前後にある半角スペースは除去されます。
- Input5
NoEcho
を有効にするとアスタリスク(*)表示で入力値が見えなくなります。
入力例
出力 (Outputs)
- Output3, Output4
- 組み込み関数 Fn::Join (短縮形は!Join) を使用して、リストの値を連結しています。
出力タブ
疑問点
誰か教えてください。
Description
にマルチバイトを入力出来ないの?対応予定もなし?- NumberとList<Number>に対して、StringとCommaDelimitedList。なんでList<String>じゃないの?
参考
- AWSドキュメント