View a markdown version of this page

Fn::FindInMap enhancements - Amazon CloudFormation
Services or capabilities described in Amazon Web Services documentation might vary by Region. To see the differences applicable to the China Regions, see Getting Started with Amazon Web Services in China (PDF).

This is the new Amazon CloudFormation Template Reference Guide. Please update your bookmarks and links. For help getting started with CloudFormation, see the Amazon CloudFormation User Guide.

Fn::FindInMap enhancements

The AWS::LanguageExtensions transform enhances the functionality of the Fn::FindInMap intrinsic function in CloudFormation templates.

The standard Fn::FindInMap function supports only Fn::FindInMap and Ref as nested intrinsic functions. The AWS::LanguageExtensions transform removes this limitation, allowing you to use a wider range of intrinsic functions to define the parameters of Fn::FindInMap.

Note

The DefaultValue parameter for Fn::FindInMap no longer requires the AWS::LanguageExtensions transform. You can use DefaultValue in any CloudFormation template. For more information, see Fn::FindInMap.

Declaration

JSON

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

If you want to specify a fallback value for when a key isn't found in the mapping, include a DefaultValue:

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

YAML

Syntax for the full function name:

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

Syntax for the short form:

!FindInMap [ MapName, TopLevelKey, SecondLevelKey ]

If you want to specify a fallback value for when a key isn't found in the mapping, include a DefaultValue:

Syntax for the full function name:

Fn::FindInMap: - MapName - TopLevelKey - SecondLevelKey - DefaultValue: DefaultValue

Syntax for the short form:

!FindInMap - MapName - TopLevelKey - SecondLevelKey - DefaultValue: DefaultValue

Parameters

With the AWS::LanguageExtensions transform, the parameters MapName, TopLevelKey, SecondLevelKey, and DefaultValue can each be an intrinsic function, as long as it resolves to a valid value during the transform.

Examples

The following examples demonstrate how to use intrinsic functions in the parameters of Fn::FindInMap when you add the AWS::LanguageExtensions transform.

Using intrinsic functions to define the top level key

The following is an example of using a Fn::FindInMap function with the Fn::Select and Fn::Split intrinsic functions embedded inside it to define the top level key.

JSON

{ //... "Transform": "AWS::LanguageExtensions", //... "Fn::FindInMap": [ "MyMap", { "Fn::Select": [ 0, { "Fn::Split": [ "|", { "Ref": "InputKeys" } ] } ] }, "SecondKey" ] //... }

YAML

Transform: 'AWS::LanguageExtensions' #... !FindInMap: [MyMap, !Select [0, !Split [|, !Ref InputKeys]], SecondKey] #...

Supported functions

You can use the following functions in the parameters of Fn::FindInMap with the AWS::LanguageExtensions transform:

Related resources

For more information and examples that show how to use the Fn::FindInMap intrinsic function, including the DefaultValue parameter, see Fn::FindInMap.

For more information about the AWS::LanguageExtensions transform, see AWS::LanguageExtensions transform.