Fn::ForEach - AWS CloudFormation

Fn::ForEach

The Fn::ForEach intrinsic function takes a collection and a fragment, and applies the items in the collection to the identifier in the provided fragment. Fn::ForEach can contain other intrinsic functions, including Fn::ForEach itself, and be used within the Conditions, Outputs, Resources (including the resource properties) sections. It cannot be used in the Format version, Description, Metadata, Transform, Parameters, Mappings, Rules, or Hooks sections. For examples, see Examples.

Important

You must use the AWS::LanguageExtensions transform to use the Fn::ForEach intrinsic function.

Important

Using the Fn::ForEach intrinsic function does not change the quotas, which apply to the resultant template. Quotas include the maximum size of a template and the maximum number of resources in a template. For more information, see AWS CloudFormation quotas.

Declaration

JSON

"Fn::ForEach::UniqueLoopName": [ "Identifier", ["Value1","Value2"], // Collection {"OutputKey": {OutputValue}} ]

YAML

'Fn::ForEach::UniqueLoopName': - Identifier - - Value1 # Collection - Value2 - 'OutputKey': OutputValue

Parameters

UniqueLoopName

A name for this loop. The name must be unique within the template and cannot conflict with any logical ID values in the Resources section of the template. This name is not in the transformed output.

Identifier

The identifier you want to replace in the OutputKey and OutputValue parameters that represent the template fragment that is replicated. All instances of ${Identifier}, or &{Identifier}, in the OutputKey and OutputValue parameters are replaced with the values from the Collection parameter.

Collection

The collection of values to iterate over. This can be an array in this parameter, or it can be a Ref to a CommaDelimitedList. When using the &{Identifier}, non-alphanumeric characters can be passed in the Collection.

OutputKey

The key in the transformed template. ${Identifier} or &{Identifier} must be included within the OutputKey parameter. For example, if Fn::ForEach is used in the Resources section of the template, this is the logical Id of each resource.

The &{} syntax allows non-alphanumeric characters in the Collection to be used in OutputKey parameter.

OutputValue

The value that is replicated in the transformed template for each item in the Collection parameter. For example, if Fn::ForEach is used in the Resources section of the template, this is the template fragment that is repeated to configure each resource.

Return value

An expanded object that contains the object fragment repeated once for each item in the collection, where the identifier in the fragment is replaced with the item from the collection.

Supported functions

You can use the following functions within Fn::ForEach.

Examples

For examples, see Examples.