Fn::FindInMap - AWS CloudFormation

Fn::FindInMap

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

AWS::LanguageExtensions トランスフォームを使用する際の Fn::FindInMap 組み込み関数の拡張の詳細については、「Fn::FindInMap enhancements」を参照してください。

宣言

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 つ ("HVM64""HVMG2") 持つリストが割り当てられます。

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

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

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

FindInMap は、FindInMap に割り当てられた AMI を返します。us-east-1 の HVM64 のインスタンスの場合は、FindInMap"ami-0ff8a91507f77f867" を返します。

JSON

{ ... "Mappings" : { "RegionMap" : { "us-east-1" : { "HVM64" : "ami-0ff8a91507f77f867", "HVMG2" : "ami-0a584ac55a7631c0c" }, "us-west-1" : { "HVM64" : "ami-0bdb828fd58c52235", "HVMG2" : "ami-066ee5fd4a9ef77f1" }, "eu-west-1" : { "HVM64" : "ami-047bb4163c506cd98", "HVMG2" : "ami-0a7c483d527806435" }, "ap-southeast-1" : { "HVM64" : "ami-08569b978cc4dfa10", "HVMG2" : "ami-0be9df32ae9f92309" }, "ap-northeast-1" : { "HVM64" : "ami-06cd52961ce9f0d85", "HVMG2" : "ami-053cdd503598e4a9d" } } }, "Resources" : { "myEC2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "ImageId" : { "Fn::FindInMap" : [ "RegionMap", { "Ref" : "AWS::Region" }, "HVM64" ] }, "InstanceType" : "m1.small" } } } }

YAML

Mappings: RegionMap: us-east-1: HVM64: "ami-0ff8a91507f77f867" HVMG2: "ami-0a584ac55a7631c0c" us-west-1: HVM64: "ami-0bdb828fd58c52235" HVMG2: "ami-066ee5fd4a9ef77f1" eu-west-1: HVM64: "ami-047bb4163c506cd98" HVMG2: "ami-31c2f645" ap-southeast-1: HVM64: "ami-08569b978cc4dfa10" HVMG2: "ami-0be9df32ae9f92309" ap-northeast-1: HVM64: "ami-06cd52961ce9f0d85" HVMG2: "ami-053cdd503598e4a9d" Resources: myEC2Instance: Type: "AWS::EC2::Instance" Properties: ImageId: !FindInMap - RegionMap - !Ref 'AWS::Region' - HVM64 InstanceType: m1.small

サポートされている関数

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

  • Fn::FindInMap

  • Ref