Fn::FindInMap
The intrinsic function Fn::FindInMap
returns the value corresponding to keys in
a two-level map that's declared in the Mappings
section.
For more information on enhancements to the Fn::FindInMap
intrinsic function
when using the AWS::LanguageExtensions
transform, see Fn::FindInMap
enhancements.
Declaration
JSON
{ "Fn::FindInMap" : [ "
MapName
", "TopLevelKey
", "SecondLevelKey
"] }
YAML
Syntax for the full function name:
Fn::FindInMap: [
MapName
,TopLevelKey
,SecondLevelKey
]
Syntax for the short form:
!FindInMap [
MapName
,TopLevelKey
,SecondLevelKey
]
You can't nest two instances of two functions in short form.
Parameters
Return value:
The value that's assigned to SecondLevelKey
.
Example
The following example shows how to use Fn::FindInMap
for a template with a
Mappings
section that contains a single map, RegionMap
, that
associates AMIs with AWS Regions.
-
The map has 5 top-level keys that correspond to various AWS Regions.
-
Each top-level key is assigned a list with two second level keys,
"HVM64"
and"HVMG2"
, that correspond to the AMI's architecture. -
Each of the second-level keys is assigned an appropriate AMI name.
The example template contains an AWS::EC2::Instance
resource whose
ImageId
property is set by the FindInMap
function.
MapName
is set to the map of interest, "RegionMap"
in this
example. TopLevelKey
is set to the region where the stack is created, which is
determined by using the "AWS::Region"
pseudo parameter.
SecondLevelKey
is set to the desired architecture, "HVM64"
for
this example.
FindInMap
returns the AMI assigned to FindInMap
. For a HVM64
instance in us-east-1, FindInMap
would return
"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
Supported functions
You can use the following functions in a Fn::FindInMap
function:
-
Fn::FindInMap
-
Ref