メニュー
AWS CloudFormation
ユーザーガイド (API Version 2010-05-15)

Mappings

任意の Mappings セクションでは、キーと名前付きの一連の値とが対応付けられます。たとえば、リージョンに基づく値を設定する場合、リージョン名をキーとして必要な値を保持するマッピングを作成します。具体的なリージョンごとに必要な値を指定します。マップ内の値を取得するには、Fn::FindInMap 組み込み関数を使用します。

Mappings セクションにパラメーター、擬似パラメーターまたは組み込み関数を含めることはできません。

構文

Mappings セクションは、キー名 Mappings で構成されます。マッピングに含まれるキーと値は、リテラル文字列であることが必要です。 以下の例は、Mappings という名前 (論理名) のマッピングを 1 つ含んだ Mapping01 セクションを示します。

マッピング内では、各マッピングは、別のマッピングが後に続くキーです。キーによって、名前と値のペアのマップが識別されます。キーはマッピング内で一意である必要があります。名前には、英数字 (A-Za-z0-9) のみを使用できます。

JSON

Copy
"Mappings" : { "Mapping01" : { "Key01" : { "Name" : "Value01" }, "Key02" : { "Name" : "Value02" }, "Key03" : { "Name" : "Value03" } } }

YAML

Copy
Mappings: Mapping01: Key01: Name: Value01 Key02: Name: Value02 Key03: Name: Value03

基本的なマッピング

以下に示したのは、RegionMap というマップを持つ Mappings セクションの例です。キーは 5 つ存在し、それぞれ単一の文字列値を含んだ名前と値のペアに対応しています。キーはリージョンの名前です。名前と値のペアはそれぞれ対応するキーが表すリージョンの 32 ビット AMI の ID となっています。

名前と値のペアには、名前 (この例では 32) と値があります。値に名前を付けることで、1 つのキーに対して値のセットを複数、対応付けることができます。

JSON

Copy
"Mappings" : { "RegionMap" : { "us-east-1" : { "32" : "ami-6411e20d"}, "us-west-1" : { "32" : "ami-c9c7978c"}, "eu-west-1" : { "32" : "ami-37c2f643"}, "ap-southeast-1" : { "32" : "ami-66f28c34"}, "ap-northeast-1" : { "32" : "ami-9c03a89d"} } }

YAML

Copy
Mappings: RegionMap: us-east-1: "32": "ami-6411e20d" us-west-1: "32": "ami-c9c7978c" eu-west-1: "32": "ami-37c2f643" ap-southeast-1: "32": "ami-66f28c34" ap-northeast-1: "32": "ami-9c03a89d"

複数の値のマッピング

次の例では、2 セットの値にそれぞれ 32 と 64 という名前を付けて、リージョンキーに対応付けています。

JSON

Copy
"RegionMap" : { "us-east-1" : { "32" : "ami-6411e20d", "64" : "ami-7a11e213" }, "us-west-1" : { "32" : "ami-c9c7978c", "64" : "ami-cfc7978a" }, "eu-west-1" : { "32" : "ami-37c2f643", "64" : "ami-31c2f645" }, "ap-southeast-1" : { "32" : "ami-66f28c34", "64" : "ami-60f28c32" }, "ap-northeast-1" : { "32" : "ami-9c03a89d", "64" : "ami-a003a8a1" } }

YAML

Copy
RegionMap: us-east-1: "32": "ami-6411e20d" "64": "ami-7a11e213" us-west-1: "32": "ami-c9c7978c" "64": "ami-cfc7978a" eu-west-1: "32": "ami-37c2f643" "64": "ami-31c2f645" ap-southeast-1: "32": "ami-66f28c34" "64": "ami-60f28c32" ap-northeast-1: "32": "ami-9c03a89d" "64": "ami-a003a8a1"

マッピングから値を返します

Fn::FindInMap 関数を使用すると、指定したキーによって名前付きの値を取得できます。次に示したのは、Amazon EC2 というリソースを含んだテンプレートの例です。このリソースの ImageId プロパティを、FindInMap 関数によって割り当てています。FindInMap 関数で、 (AWS::Region 擬似パラメーターを使用して) スタックの作成先となるリージョンとしてキーを指定し、対応付ける値の名前として を指定しています。32

JSON

Copy
{ "AWSTemplateFormatVersion" : "2010-09-09", "Mappings" : { "RegionMap" : { "us-east-1" : { "32" : "ami-6411e20d", "64" : "ami-7a11e213" }, "us-west-1" : { "32" : "ami-c9c7978c", "64" : "ami-cfc7978a" }, "eu-west-1" : { "32" : "ami-37c2f643", "64" : "ami-31c2f645" }, "ap-southeast-1" : { "32" : "ami-66f28c34", "64" : "ami-60f28c32" }, "ap-northeast-1" : { "32" : "ami-9c03a89d", "64" : "ami-a003a8a1" } } }, "Resources" : { "myEC2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "ImageId" : { "Fn::FindInMap" : [ "RegionMap", { "Ref" : "AWS::Region" }, "32"]}, "InstanceType" : "m1.small" } } } }

YAML

Copy
AWSTemplateFormatVersion: "2010-09-09" Mappings: RegionMap: us-east-1: "32": "ami-6411e20d" "64": "ami-7a11e213" us-west-1: "32": "ami-c9c7978c" "64": "ami-cfc7978a" eu-west-1: "32": "ami-37c2f643" "64": "ami-31c2f645" ap-southeast-1: "32": "ami-66f28c34" "64": "ami-60f28c32" ap-northeast-1: "32": "ami-9c03a89d" "64": "ami-a003a8a1" Resources: myEC2Instance: Type: "AWS::EC2::Instance" Properties: ImageId: !FindInMap [RegionMap, !Ref "AWS::Region", 32] InstanceType: m1.small

入力パラメーターと FindInMap

Fn::FindInMap 関数を使用して、マップ内の特定の値を参照するために入力パラメーターを使用できます。たとえば、特定の AMI ID にマッピングされているリージョンと環境タイプのリストがあるとします。インスタンスタイプの入力パラメーター (EnvironmentType) を使用して、スタックが使用する AMI ID を選択できます。リージョンを決定するには、AWS::Region 擬似パラメーターを使用して、スタックを作成する AWS リージョンを取得します。

JSON

Copy
{ "Parameters" : { "EnvironmentType": { "Description": "The environment type", "Type": "String", "Default": "test", "AllowedValues": ["prod", "test"], "ConstraintDescription": "must be a prod or test" } }, "Mappings" : { "RegionAndInstanceTypeToAMIID" : { "us-east-1": { "test": "ami-8ff710e2", "prod": "ami-f5f41398" }, "us-west-2" : { "test" : "ami-eff1028f", "prod" : "ami-d0f506b0" }, ...other regions and AMI IDs... } }, "Resources" : { ...other resources... }, "Outputs" : { "TestOutput" : { "Description" : "Return the name of the AMI ID that matches the region and environment type keys", "Value" : { "Fn::FindInMap" : [ "RegionAndInstanceTypeToAMIID", { "Ref" : "AWS::Region" }, { "Ref" : "EnvironmentType" } ]} } } }

YAML

Copy
Parameters: EnvironmentType: Description: The environment type Type: String Default: test AllowedValues: - prod - test ConstraintDescription: must be a prod or test Mappings: RegionAndInstanceTypeToAMIID: us-east-1: test: "ami-8ff710e2" prod: "ami-f5f41398" us-west-2: test: "ami-eff1028f" prod: "ami-d0f506b0" ...other regions and AMI IDs... Resources: ...other resources... Outputs: TestOutput: Description: Return the name of the AMI ID that matches the region and environment type keys Value: !FindInMap [RegionAndInstanceTypeToAMIID, !Ref "AWS::Region", !Ref EnvironmentType]

このページの内容: