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 Understand 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 CloudFormation template Resources syntax section of the template. This name is not in the transformed output.
Identifier
-
The identifier you want to replace in the
andOutputKey
parameters that represent the template fragment that is replicated. All instances ofOutputValue
${Identifier}
, or&{Identifier}
, in the
andOutputKey
parameters are replaced with the values from theOutputValue
parameter.Collection
Collection
-
The collection of values to iterate over. This can be an array in this parameter, or it can be a
Ref
to aCommaDelimitedList
. When using the&{Identifier}
, non-alphanumeric characters can be passed in theCollection
. OutputKey
-
The key in the transformed template.
${Identifier}
or&{Identifier}
must be included within the
parameter. For example, ifOutputKey
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 theCollection
to be used in
parameter. For an example of this, see Passing non-alphanumeric characters within the Collection for Fn::ForEach.OutputKey
OutputValue
-
The value that is replicated in the transformed template for each item in the
parameter. For example, ifCollection
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
.
-
Condition functions:
Examples
For examples, see Examples.