Fn::FindInMap - AWS CloudFormation

Fn::FindInMap

Fn::FindInMap 내장 함수는 Mappings 섹션에서 선언된 2수준 맵의 키에 해당하는 값을 반환합니다.

선언

JSON

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

YAML

전체 함수 이름의 구문:

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

짧은 형식의 구문:

!FindInMap [ MapName, TopLevelKey, SecondLevelKey ]
참고

두 함수의 인스턴스 두 개는 짧은 형식으로 중첩할 수 없습니다.

파라미터

MapName

키 및 값이 포함된 매핑 섹션에서 선언된 매핑의 논리적 이름입니다.

TopLevelKey

최상위 키 이름입니다. 이 값은 키-값 페어 목록입니다.

SecondLevelKey

TopLevelKey에 할당된 목록의 키 중 하나로 설정된 두 번째 수준 키 이름입니다.

반환 값:

SecondLevelKey에 할당된 값입니다.

다음 예에서는 AMI를 AWS 리전과 연결하는 단일 맵 Fn::FindInMap이 포함된 Mappings 섹션이 있는 템플릿에 RegionMap을 사용하는 방법을 보여줍니다.

  • 이 맵에는 다양한 AWS 리전에 해당하는 5가지 최상위 키가 있습니다.

  • 각 최상위 키는 AMI의 아키텍처에 해당하는 두 번째 수준 키 2개 "HVM64""HVMG2"가 있는 목록에 할당됩니다.

  • 각각의 두 번째 수준 키에는 적절한 AMI 이름이 할당됩니다.

예제 템플릿에는 AWS::EC2::Instance 함수를 통해 ImageId 속성이 설정된 FindInMap 리소스가 포함되어 있습니다.

이 예제에서는 MapName이 관심 맵인 "RegionMap"으로 설정되어 있습니다. TopLevelKey는 스택이 생성된 리전으로 설정되어 있습니다. 리전은 "AWS::Region" 가상 파라미터를 사용하여 결정됩니다. SecondLevelKey는 이 예제에 필요한 아키텍처인 "HVM64"로 설정되어 있습니다.

FindInMapFindInMap에 할당된 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