メニュー
AWS CloudFormation
ユーザーガイド (API バージョン 2010-05-15)

Fn::FindInMap

組み込み関数 Fn::FindInMap は、Mappings セクションで宣言された 2 つのレベルのマッピングのキーに対応する値を返します。

宣言

JSON

{ "Fn::FindInMap" : [ "MapName", "TopLevelKey", "SecondLevelKey"] }

YAML

完全名関数の構文:

Fn::FindInMap: [ MapName, TopLevelKey, SecondLevelKey ]

短縮形の構文:

!FindInMap [ MapName, TopLevelKey, SecondLevelKey ]

注記

短縮形を使用した 2 つの関数の 2 つのインスタンスをネストすることはできません。

パラメータ

MapName

Mappings セクションで宣言された、キーと値を含むマッピングの論理名。

TopLevelKey

最上位のキー名。この値は、キーと値のペアのリストです。

SecondLevelKey

2 番目のレベルのキー名で、TopLevelKey に割り当てられたリストのキーの 1 つに設定されます。

戻り値:

SecondLevelKey に割り当てられた値。

次の例は、AMI と AWS リージョンを関連付ける 1 つのマッピング RegionMap を含む Mappings セクションを使用して、テンプレートに対して Fn::FindInMap を使用する方法を示します。

  • このマッピングには、さまざまな AWS リージョンに対応する 5 つの最上位キーがあります。

  • 最上位キーにはそれぞれ、AMI のアーキテクチャに対応する 2 番目のレベルのキーを 2 つ ("32""64") 持つリストが割り当てられます。

  • 2 番目のレベルのキーにはそれぞれ、適切な AMI 名が割り当てられます。

サンプルテンプレートには、FindInMap 関数によって ImageId プロパティが設定された AWS::EC2::Instance リソースが含まれています。

MapName は目的のマッピング、この例では "RegionMap" に設定されます。TopLevelKey は、スタックが作成されるリージョン ("AWS::Region" 疑似パラメーターを使用して決定されます) に設定されます。SecondLevelKey は目的のアーキテクチャ、この例では "32" に設定されます。

FindInMap は、FindInMap に割り当てられた AMI を返します。us-east-1 の 32 ビットのインスタンスの場合は、FindInMap"ami-6411e20d" を返します。

JSON

{ ... "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

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

サポートされている関数

Fn::FindInMap 関数で以下の関数を使用できます。

  • Fn::FindInMap

  • Ref