パラメータ - AWS CloudFormation

パラメータ

オプションの Parameters セクションを使用して、テンプレートをカスタマイズします。パラメーターを使用すると、スタックを作成または更新するたびにテンプレートにカスタム値を入力できます。

テンプレートでのパラメーターの定義

以下の例では、InstanceTypeParameter というパラメーターを宣言します。このパラメーターを使用すると、スタックの作成または更新時に使用するスタックの Amazon EC2 インスタンスタイプを指定できます。

InstanceTypeParameter には、t2.micro のデフォルトの値があることに注意してください。これは、別の値が用意されていない限り、AWS CloudFormation がスタックをプロビジョニングするために使用する値です。

JSON

"Parameters" : { "InstanceTypeParameter" : { "Type" : "String", "Default" : "t2.micro", "AllowedValues" : ["t2.micro", "m1.small", "m1.large"], "Description" : "Enter t2.micro, m1.small, or m1.large. Default is t2.micro." } }

YAML

Parameters: InstanceTypeParameter: Type: String Default: t2.micro AllowedValues: - t2.micro - m1.small - m1.large Description: Enter t2.micro, m1.small, or m1.large. Default is t2.micro.

テンプレート内でのパラメーターの参照

パラメータを参照するには、Ref 組み込み関数を使用します。AWS CloudFormation は、パラメータの値を使用してスタックをプロビジョニングします。同じテンプレートの Resources および Outputs セクションのパラメーターを参照できます。

次の例では、EC2 インスタンスリソースの InstanceType プロパティが InstanceTypeParameter パラメーター値を参照します。

JSON

"Ec2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "InstanceType" : { "Ref" : "InstanceTypeParameter" }, "ImageId" : "ami-0ff8a91507f77f867" } }

YAML

Ec2Instance: Type: AWS::EC2::Instance Properties: InstanceType: Ref: InstanceTypeParameter ImageId: ami-0ff8a91507f77f867

パラメーターの一般要件

パラメーターを使用するときに以下の要件が適用されます。

  • AWS CloudFormation テンプレートに指定できるパラメーターは最大 200 個です。

  • 各パラメーターには、英数字でテンプレート内のどの論理名とも重複しない論理名 (論理 ID と呼ばれます) を指定する必要があります。

  • 各パラメーターには、AWS CloudFormation でサポートされているパラメータータイプを割り当てることができます。詳細については、「Type」を参照してください。

  • AWS CloudFormation がスタックを正常にプロビジョニングするには、各パラメーターに実行時に値を割り当てる必要があります。別の値が指定されている場合を除き、必要に応じて、使用する AWS CloudFormation のデフォルト値を指定できます。

  • パラメーターは、同じテンプレート内から宣言および参照する必要があります。テンプレートの Resources および Outputs セクションのパラメーターを参照できます。

JSON

"Parameters" : { "ParameterLogicalID" : { "Type" : "DataType", "ParameterProperty" : "value" } }

YAML

Parameters: ParameterLogicalID: Type: DataType ParameterProperty: value

プロパティ

AllowedPattern

String または CommaDelimitedList タイプに使用できるパターンを表す正規表現。タイプ String のパラメータに適用される場合、パターンは指定されたパラメータ値全体と一致する必要があります。タイプ CommaDelimitedList のパラメータに適用される場合、パターンはリスト内の各値と一致する必要があります。

必須: いいえ

AllowedValues

パラメーターに許容される一連の値を含む配列。タイプ String のパラメータに適用する場合、パラメータ値は許可された値のいずれかである必要があります。タイプ CommaDelimitedList のパラメータに適用される場合、リスト内の各値は、指定および許可された値のいずれかである必要があります。

必須: いいえ

注記

YAML を使用していて、AllowedValuesYesNo 文字列を使用する場合、一重引用符を使用して YAML パーサーがこれらのブール値を考慮することを防ぎます。

ConstraintDescription

制約が違反された場合に、制約について説明する文字列。たとえば、制約の説明を指定しないとき、許容されているパターンが [A-Za-z0-9]+ であるパラメーターの場合、ユーザーが無効な値を指定すると次のエラーメッセージが表示されます。

Malformed input-Parameter MyParameter must match pattern [A-Za-z0-9]+

must only contain letters (uppercase and lowercase) and numbers などの制約の説明を追加することによって、次のようにカスタマイズされたエラーメッセージを表示することができます。

Malformed input-Parameter MyParameter must only contain uppercase and lowercase letters and numbers

必須: いいえ

Default

スタックの作成時に値を指定しなかった場合に、テンプレートで使用される適切な型の値。パラメーターの制約を定義する場合は、これらの制約に従う値を指定する必要があります。

必須: いいえ

Description

パラメーターについて説明する最大 4000 文字の文字列。

必須: いいえ

MaxLength

String 型に使用できる最大文字数を決定する整数値。

必須: いいえ

MaxValue

Number 型に使用できる数値の最大値を決定する数値。

必須: いいえ

MinLength

String 型に使用できる最小文字数を決定する整数値。

必須: いいえ

MinValue

Number 型に使用できる数値の最小値を決定する数値。

必須: いいえ

NoEcho

パラメータ値をマスクして、コンソール、コマンドラインツール、または API に表示されないようにするかどうか。NoEcho 属性を true に設定すると、CloudFormation は、スタックまたはスタックイベントを記述するすべての呼び出しに対して、アスタリスク (*****) としてマスクされたパラメータ値を返します。ただし、以下に指定された場所に保存されている情報は除きます。

必須: いいえ

重要

NoEcho 属性を使用しても、以下に保存されている情報はマスクされません。

  • Metadata テンプレートセクション。CloudFormation は、Metadata セクションに含める情報の変換、変更、または編集を行いません。詳細については、「メタデータ」を参照してください。

  • Outputs テンプレートセクション。詳細については、「出力」を参照してください。

  • リソース定義の Metadata 属性。詳細については、「Metadata 属性」を参照してください。

パスワードやシークレットなどの機密情報を含めるには、これらのメカニズムを使用しないことを強くお勧めします。

重要

機密情報は、CloudFormation テンプレートに直接埋め込むのではなく、スタックテンプレートの動的パラメータを使用して CloudFormation の外部 (AWS Systems Manager パラメータストアや AWS Secrets Manager など) に保存して管理した上で 参照することをお勧めします。

詳細については、「テンプレートに認証情報を埋め込まない のベストプラクティス」を参照してください。

重要

リソースのプライマリ識別子の一部であるリソースプロパティには、NoEcho パラメータや機密データを含めないことを強くお勧めします。

プライマリリソース識別子を形成するプロパティに NoEcho パラメータが含まれている場合、CloudFormation はプライマリリソース識別子に実際の平文値を使用する場合があります。このリソース ID は、派生した出力または送信先に表示されます。

リソースタイプのプライマリ識別子を構成するリソースプロパティを確認するには、そのリソースの「リソースリファレンスドキュメント」を参照してください。[Return values] (戻り値) セクションの Ref 関数の戻り値は、リソースタイプのプライマリ識別子を構成するリソースプロパティを表します。

Type

パラメーターのデータ型 (DataType)。

必須: はい

AWS CloudFormation では次のパラメータータイプをサポートしています。

String

リテラル文字列。

たとえば、次のように指定します。"MyUserName"

Number

整数または浮動小数点値。AWS CloudFormation は、このパラメータを数値として検証しますが、テンプレート内の他の場所で使用した場合には (Ref 組み込み関数を使用した場合など) 文字列として扱います。

たとえば、次のように指定します。"8888"

List<Number>

カンマで区切られた整数または浮動小数点値の配列。AWS CloudFormation は、このパラメータを数値として検証しますが、テンプレート内の他の場所で使用した場合には (Ref 組み込み関数を使用した場合など) 一連の文字列として扱います。

たとえば、"80,20" と指定し、Ref を使用した場合には ["80","20"] となります。

CommaDelimitedList

カンマで区切られたリテラル文字列の配列。文字列の合計数は、カンマの合計数よりも 1 つ多いはずです。また、各メンバー文字列の前後の空白は削除されます。

たとえば、"test,dev,prod" と指定し、Ref を使用した場合には ["test","dev","prod"] となります。

AWS 固有のパラメータタイプ

Amazon EC2 キーペアの名前や VPC の ID などの AWS の値です。詳細については、「AWS 固有のパラメータタイプ」を参照してください。

SSM パラメータータイプ

Systems Manager パラメーターストア内の既存のパラメーターに対応するパラメーター。Systems Manager パラメータキーは SSM パラメータの値として指定します。AWS CloudFormation は、スタックに使用するパラメータストアから最新の値を取得します。詳細については、「SSM パラメータタイプ」を参照してください。

AWS 固有のパラメータタイプ

AWS 固有のパラメータタイプは、スタックの作成または更新の開始時に無効な値を見つけるのに役立ちます。AWS 固有のパラメータを指定するには、テンプレートのユーザーは AWS アカウントにある既存の AWS 値を指定する必要があります。AWS CloudFormation は、アカウントの既存の値と照らしてこれらの入力値を検証します。たとえば、AWS::EC2::VPC::Id パラメータタイプの場合、ユーザーはアカウント内およびスタックを作成しているリージョン内に存在する既存の VPC ID を入力する必要があります。

テンプレートユーザーが異なる AWS アカウントからの入力値を入力できるようにする場合は、AWS 固有のタイプでパラメータを定義することはできません。代わりに、タイプ String または CommaDelimitedList のパラメータを定義してください。

サポートされている AWS 固有のパラメータタイプ

AWS CloudFormation では次の AWS 固有型をサポートしています。

AWS::EC2::AvailabilityZone::Name

アベイラビリティーゾーン (us-west-2a など)。

AWS::EC2::Image::Id

Amazon EC2 イメージ ID (ami-0ff8a91507f77f867 など)。AWS CloudFormation コンソールには、このパラメータータイプの値のドロップダウンリストが表示されないことに注意してください。

AWS::EC2::Instance::Id

Amazon EC2 インスタンス ID (i-1e731a32 など)。

AWS::EC2::KeyPair::KeyName

Amazon EC2 のキーペア名。

AWS::EC2::SecurityGroup::GroupName

EC2-Classic またはデフォルトの VPC セキュリティグループ名 (my-sg-abc など)。

AWS::EC2::SecurityGroup::Id

セキュリティグループ ID (sg-a123fd85 など)。

AWS::EC2::Subnet::Id

サブネット ID (subnet-123a351e など)。

AWS::EC2::Volume::Id

Amazon EBS ボリューム ID (vol-3cdd3f56 など)。

AWS::EC2::VPC::Id

VPC ID (vpc-a123baa3 など)。

AWS::Route53::HostedZone::Id

Amazon Route 53 ホストゾーン ID (Z23YXV4OVPL04A など)。

List<AWS::EC2::AvailabilityZone::Name>

リージョンのアベイラビリティーゾーンの配列 (us-west-2a, us-west-2b など)。

List<AWS::EC2::Image::Id>

Amazon EC2 イメージ ID の配列 (ami-0ff8a91507f77f867, ami-0a584ac55a7631c0c など)。AWS CloudFormation コンソールには、このパラメータータイプの値のドロップダウンリストが表示されないことに注意してください。

List<AWS::EC2::Instance::Id>

Amazon EC2 インスタンス ID の配列 (i-1e731a32, i-1e731a34 など)。

List<AWS::EC2::SecurityGroup::GroupName>

EC2-Classic またはデフォルトの VPC セキュリティグループ名の配列 (my-sg-abc, my-sg-def など)。

List<AWS::EC2::SecurityGroup::Id>

セキュリティグループ ID の配列 (sg-a123fd85, sg-b456fd85 など)。

List<AWS::EC2::Subnet::Id>

サブネット ID の配列 (subnet-123a351e, subnet-456b351e など)。

List<AWS::EC2::Volume::Id>

Amazon EBS ボリューム ID の配列 (vol-3cdd3f56, vol-4cdd3f56 など)。

List<AWS::EC2::VPC::Id>

VPC ID の配列 (vpc-a123baa3, vpc-b456baa3 など)。

List<AWS::Route53::HostedZone::Id>

Amazon Route 53 ホストゾーン ID の配列 (Z23YXV4OVPL04A, Z23YXV4OVPL04B など)。

SSM パラメータタイプ

SSM パラメータタイプは、Systems Manager パラメータストア内の既存のパラメータに対応します。Systems Manager パラメータキーは SSM パラメータの値として指定します。AWS CloudFormation は、スタックに使用するパラメータストアから最新の値を取得します。同じ AWS アカウント に保存されている SSM パラメータの場合は、パラメータ名を入力します。別の AWS アカウント によって共有される SSM パラメータの場合は、完全なパラメータ ARN を入力します。Systems Manager パラメータの詳細については、「AWS Systems Manager ユーザーガイド」の「Systems Manager パラメータストア」および「共有パラメータの操作」を参照してください。

ssm または ssm-secure の動的なパラメータパターンを使用し、テンプレート内のパラメータを指定することもできます。詳細については、「動的な参照を使用してテンプレート値を指定する」を参照してください。

スタックを作成または更新して変更セットを作成すると、AWS CloudFormation はオペレーションの実行時点でパラメーターストアに存在する任意の値を使用します。指定されたパラメータが、呼び出し元の AWS アカウントの下のパラメータストアに存在しない場合、AWS CloudFormation は検証エラーを返します。

変更セットを実行すると、AWS CloudFormation は変更セットで指定されている値を使用します。これらの値は、変更セットの作成時と実行時の間にパラメータストアで変化する可能性があるため、変更セットを実行する前に確認してください。

ヒント

SSM パラメータの解決された値 は、コンソールにあるスタックの [パラメータ] タブで確認するか、describe-stacks または describe-change-set を実行することにより確認できます。これらは、対応する Systems Manager パラメーターキーのスタック定義で現在使用されている値です。これらの値は、スタックが作成または更新される時に設定されるため、パラメーターストアにおける最新の値とは異なる場合がある点に注意してください。

ssm-secure パターンを使用してパラメータ値として Secure String を指定した場合、AWS CloudFormation は Secure String 値を保存したり、コンソールまたは API コールの結果に表示したりしません。

SSM パラメータの値は Systems Manager パラメータキーであるため、以下の動作にも注意してください。

  • スタックの更新の場合、コンソールの [Use existing value] (既存の値の使用) オプションと update-stackUsePreviousValue 属性は、AWS CloudFormation に対して、値ではなく既存の Systems Manager パラメータキーを使用するように指示します。AWS CloudFormation は、スタックを更新する際は常にパラメータストアから最新の値を取得します。

    ただし、パラメータ値を指定する ssm または ssm-secure の動的なパラメータパターンを使用する場合は、AWS CloudFormation が使用する Systems Manager パラメータのバージョンを指定する必要があります。

  • AWS CloudFormation は、対応する値ではなく Systems Manager パラメータキーで検証を実行できます。検証のため、パラメーターキーを文字列として扱うことができます。パラメーターストアでは、Systems Manager パラメーター値の検証を実行する必要があります。

SSM パラメータタイプの使用例については、「SSM パラメータタイプ」を参照してください。

サポートされている SSM パラメータタイプ

AWS CloudFormation では次の SSM パラメータタイプをサポートしています。

AWS::SSM::Parameter::Name

Systems Manager パラメーターキーの名前。

パラメーターキーを渡す場合は、このパラメーターを使用します。たとえば、このタイプを使用してパラメーターが存在するかどうかを確認できます。

AWS::SSM::Parameter::Value<String>

値が文字列の Systems Manager パラメーター。これは、パラメーターストア内の String パラメータータイプに対応します。

AWS::SSM::Parameter::Value<List<String>>、または AWS::SSM::Parameter::Value<CommaDelimitedList>

値が文字列のリストである Systems Manager パラメーター。これは、パラメーターストア内の StringList パラメータータイプに対応します。

AWS::SSM::Parameter::Value<AWS-specific parameter type>

値が AWS 固有のパラメータタイプである Systems Manager パラメータ。たとえば、次の例は AWS::EC2::KeyPair::KeyName タイプを指定します。

AWS::SSM::Parameter::Value<AWS::EC2::KeyPair::KeyName>

AWS::SSM::Parameter::Value<List<AWS-specific parameter type>>

値が AWS 固有のパラメータタイプのリストである Systems Manager パラメータ。たとえば、次の例は AWS::EC2::KeyPair::KeyName タイプのリストを指定します。

AWS::SSM::Parameter::Value<List<AWS::EC2::KeyPair::KeyName>>

サポートされていない SSM パラメータタイプ

AWS CloudFormation では次の SSM パラメータタイプをサポートしていません。

  • SSM パラメータタイプのリストの例。List<AWS::SSM::Parameter::Value<String>>

さらに、AWS CloudFormation は、SecureString Systems Manager パラメータタイプとしてのテンプレートパラメータの定義をサポートしていません。ただし、動的なパラメータパターンを使用して、特定のリソースのパラメータとして Secure String を指定できます。詳細については、「動的な参照を使用してテンプレート値を指定する」を参照してください。

AWS CloudFormation コンソールでのパラメーターのグループ化およびソート

AWS CloudFormation コンソールを使用してスタックを作成または更新すると、コンソールに論理 ID により入力パラメーターがアルファベット順に並べられてリストされます。デフォルトの順序を上書きするには、AWS::CloudFormation::Interface メタデータキーを使用できます。パラメーターをグループ化および順序付けすることで、ユーザーがパラメーター値をさらに指定しやすくなります。たとえば、VPC 関連のすべてのパラメーターをグループ化し、アルファベットリスト全体に分散しないようにするとします。

メタデータキーで、作成するグループ、各グループに含めるパラメーター、コンソールで各パラメーターがそのグループ内に表示される順序を指定できます。コンソールで論理 ID の代わりにわかりやすい名前が表示されるように、フレンドリパラメーター名を定義することもできます。メタデータキーで参照するすべてのパラメーターは、テンプレートの Parameters セクションで宣言する必要があります。

AWS::CloudFormation::Interface メタデータキーの詳細と例については、「AWS::CloudFormation::Interface」を参照してください。

基本的な入力パラメータ

以下の例では、Parameters セクションに 2 つのパラメーターが宣言されています。DBPort パラメーターの型は Number で、デフォルトは 3306 です。指定できる最小値は 1150、最大値は 65535 です。DBPwd パラメーターの型は String で、デフォルト値はありません。NoEcho プロパティは、スタックの説明の呼び出し (aws cloudformation describe-stacks AWS CLI コマンドなど) によってパラメータ値が返されるのを防ぐために、true に設定されています。指定できる最小値は 1、最大値は 41 です。パターンには、英文字の大文字と小文字、および数字を使用できます。

JSON

"Parameters" : { "DBPort" : { "Default" : "3306", "Description" : "TCP/IP port for the database", "Type" : "Number", "MinValue" : "1150", "MaxValue" : "65535" }, "DBPwd" : { "NoEcho" : "true", "Description" : "The database admin account password", "Type" : "String", "MinLength" : "1", "MaxLength" : "41", "AllowedPattern" : "^[a-zA-Z0-9]*$" } }

YAML

Parameters: DBPort: Default: 3306 Description: TCP/IP port for the database Type: Number MinValue: 1150 MaxValue: 65535 DBPwd: NoEcho: true Description: The database admin account password Type: String MinLength: 1 MaxLength: 41 AllowedPattern: ^[a-zA-Z0-9]*$

AWS 固有のパラメータタイプ

AWS 固有のパラメータタイプを使用する場合、スタックを作成または更新するためにテンプレートを使用するユーザーは、必ず自分のアカウントおよび現在のスタックのリージョンにある既存の AWS 値を指定する必要があります。AWS 固有のパラメーター型は、AWS CloudFormation がリソースを作成または更新する前に、これらの型の入力値が存在し、正しい値であることを確認するのに役立ちます。例えば、AWS::EC2::KeyPair::KeyName パラメータタイプを使用すると、AWS CloudFormation はリソース (Amazon EC2 インスタンスなど) を作成する前に、入力値をユーザーの既存のキーペア名に照らして検証します。

ユーザーが AWS Management Console を使用している場合、AWS CloudFormation によって AWS 固有のパラメータタイプに有効な値が事前に設定されます。そのため、ユーザーは特定の名前や ID を記憶したり、正確に入力したりする必要がありません。ドロップダウンリストから 1 つまたは複数の値を選択するだけです。また、パラメータータイプに応じて、ユーザーは ID、名前、Name タグ値で値を検索することもできます。詳細については、「スタック名とパラメーターの指定」を参照してください。

以下の例では、AWS::EC2::KeyPair::KeyName および AWS::EC2::Subnet::Id の型の 2 つのパラメーターが宣言されています。これらの型では、有効な値は既存のキーペア名およびサブネット ID に制限されています。mySubnetIDs パラメーターがリストとして指定されているので、ユーザーは 1 つ以上のサブネット ID を指定できます。

JSON

"Parameters" : { "myKeyPair" : { "Description" : "Amazon EC2 Key Pair", "Type" : "AWS::EC2::KeyPair::KeyName" }, "mySubnetIDs" : { "Description" : "Subnet IDs", "Type" : "List<AWS::EC2::Subnet::Id>" } }

YAML

Parameters: myKeyPair: Description: Amazon EC2 Key Pair Type: "AWS::EC2::KeyPair::KeyName" mySubnetIDs: Description: Subnet IDs Type: "List<AWS::EC2::Subnet::Id>"

AWS CLI および API サポート

現時点では、AWS CLI または AWS CloudFormation API を使用して、AWS 固有のパラメータの有効な値のリストを表示することはできません。ただし、aws cloudformation get-template-summary コマンドまたは GetTemplateSummary API を使用して、パラメータタイプなどの各パラメータの情報を表示することは可能です。

カンマ区切りリストのパラメータ型

単一のパラメーターに複数の文字列値を指定するには、CommaDelimitedList パラメーター型を使用します。このように、さまざまなパラメーターの多数使用するのではなく、単一のパラメーターを使用することで、複数の値を指定することができます。たとえば、独自の CIDR ブロックで 3 種類のサブネットを作成した場合に、3 つの異なるパラメーターを使って 3 種類の CIDR ブロックを指定することは可能です。しかし、3 つの CIDR ブロックを指定するパラメーターを 1 つだけ使った方が簡潔に記述できます。その例を次に示します。

JSON

"Parameters" : { "DbSubnetIpBlocks": { "Description": "Comma-delimited list of three CIDR blocks", "Type": "CommaDelimitedList", "Default": "10.0.48.0/24, 10.0.112.0/24, 10.0.176.0/24" } }

YAML

Parameters: DbSubnetIpBlocks: Description: "Comma-delimited list of three CIDR blocks" Type: CommaDelimitedList Default: "10.0.48.0/24, 10.0.112.0/24, 10.0.176.0/24"

カンマ区切りリストのパラメータから値を返します

一連の値から特定の値を参照するには、テンプレートの Fn::Select セクションで、Resources 組み込み関数を使用します。次の例のように、必要なオブジェクトのインデックス値とオブジェクトのリストとを渡します。

JSON
"DbSubnet1" : { "Type" : "AWS::EC2::Subnet", "Properties" : { "AvailabilityZone" : {"Fn::Join" : ["",[ { "Ref" : "AWS::Region" }, { "Fn::Select" : [ "0", {"Ref" : "VpcAzs"} ] } ] ]} , "VpcId" : { "Ref" : "VPC" }, "CidrBlock" : { "Fn::Select" : [ "0", {"Ref" : "DbSubnetIpBlocks"} ] } } }, "DbSubnet2" : { "Type" : "AWS::EC2::Subnet", "Properties" : { "AvailabilityZone" : {"Fn::Join" : ["",[ { "Ref" : "AWS::Region" }, { "Fn::Select" : [ "1", {"Ref" : "VpcAzs"} ] } ] ]} , "VpcId" : { "Ref" : "VPC" }, "CidrBlock" : { "Fn::Select" : [ "1", {"Ref" : "DbSubnetIpBlocks"} ] } } }, "DbSubnet3" : { "Type" : "AWS::EC2::Subnet", "Properties" : { "AvailabilityZone" : {"Fn::Join" : ["",[ { "Ref" : "AWS::Region" }, { "Fn::Select" : [ "2", {"Ref" : "VpcAzs"} ] } ] ]} , "VpcId" : { "Ref" : "VPC" }, "CidrBlock" : { "Fn::Select" : [ "2", {"Ref" : "DbSubnetIpBlocks"} ] } } }
YAML
DbSubnet1: Type: AWS::EC2::Subnet Properties: AvailabilityZone: !Sub - "${AWS::Region}${AZ}" - AZ: !Select [0, !Ref VpcAzs] VpcId: !Ref VPC CidrBlock: !Select [0, !Ref DbSubnetIpBlocks] DbSubnet2: Type: AWS::EC2::Subnet Properties: AvailabilityZone: !Sub - "${AWS::Region}${AZ}" - AZ: !Select [1, !Ref VpcAzs] VpcId: !Ref VPC CidrBlock: !Select [1, !Ref DbSubnetIpBlocks] DbSubnet3: Type: AWS::EC2::Subnet Properties: AvailabilityZone: !Sub - "${AWS::Region}${AZ}" - AZ: !Select [2, !Ref VpcAzs] VpcId: !Ref VPC CidrBlock: !Select [2, !Ref DbSubnetIpBlocks]

SSM パラメータタイプ

AWS::SSM::Parameter::Value<String> タイプ

以下のテンプレートでは、AWS::SSM::Parameter::Value<String> パラメータータイプを宣言します。

JSON
{ "Parameters": { "InstanceType": { "Type": "AWS::SSM::Parameter::Value<String>" } }, "Resources": { "Instance": { "Type": "AWS::EC2::Instance", "Properties": { "InstanceType": { "Ref": "InstanceType" } } } } }
YAML
Parameters: InstanceType: Type: 'AWS::SSM::Parameter::Value<String>' Resources: Instance: Type: 'AWS::EC2::Instance' Properties: InstanceType: !Ref InstanceType

次のコマンドは、サンプルテンプレートに基づいてスタックを作成します。InstanceType テンプレートパラメータの値として Systems Manager パラメータキー (myInstanceType) を指定します。これは、myInstanceType パラメータが呼び出し元の AWS アカウントの下のパラメータストアに存在することを前提としています。

aws cloudformation create-stack --stack-name S1 --template-body example template --parameters ParameterKey=InstanceType,ParameterValue=myInstanceType

 

AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>タイプ

以下のテンプレートでは、AWS::SSM::Parameter::Value<AWS::EC2::Image::Id> パラメータータイプを宣言します。

JSON
{ "Parameters": { "ImageId": { "Type": "AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>" } }, "Resources": { "Instance": { "Type": "AWS::EC2::Instance", "Properties": { "ImageId": { "Ref": "ImageId" } } } } }
YAML
Parameters: ImageId: Type: 'AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>' Resources: Instance: Type: 'AWS::EC2::Instance' Properties: ImageId: !Ref ImageId

次のコマンドは、サンプルテンプレートに基づいてスタックを作成します。ImageId テンプレートパラメータの値として Systems Manager パラメータキー (myLatestAMI) を指定します。これは、myLatestAMI パラメータが呼び出し元の AWS アカウントの下のパラメータストアに存在することを前提としています。

aws cloudformation create-stack --stack-name S2 --template-body example template --parameters ParameterKey=ImageId,ParameterValue=myLatestAMI