

これは新しい CloudFormation テンプレートリファレンスガイドです。ブックマークとリンクを更新してください。CloudFormation の開始方法については、『[AWS CloudFormation ユーザーガイド](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)』を参照してください。

# `Fn::ForEach`
<a name="intrinsic-function-reference-foreach"></a>

`Fn::ForEach` 組み込み関数はコレクションとフラグメントを受け取り、コレクションの項目を指定されたフラグメントの識別子に適用します。`Fn::ForEach` は (`Fn::ForEach` 自体など) 他の組み込み関数を含めることができ、`Conditions`、`Outputs`、`Resources` (リソース プロパティを含む) セクション内で使用できます。`AWSTemplateFormatVersion`、`Description`、`Metadata`、`Transform`、`Parameters`、`Mappings`、`Rules`、または `Hooks` の各セクションでは使用できません。

テンプレートで `Fn::ForEach` 組み込み関数を使用する場合は、[`AWS::LanguageExtensions` 変換](transform-aws-languageextensions.md) も使用する必要があります。

`Fn::ForEach` 組み込み関数を使用しても、生成されるテンプレートに適用されるクォータは変更されません。クォータには、テンプレートの最大サイズとテンプレート内の最大リソース数が含まれます。詳細については、『AWS CloudFormation ユーザーガイド』の「[CloudFormation のクォータを理解する](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cloudformation-limits.html)」を参照してください。

## 宣言
<a name="intrinsic-function-reference-foreach-declaration"></a>

### JSON
<a name="intrinsic-function-reference-foreach-declaration.json"></a>

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

### YAML
<a name="intrinsic-function-reference-foreach-declaration.yaml"></a>

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

## パラメータ
<a name="intrinsic-function-reference-foreach-parameters"></a>

*ループ論理名*  
ループの論理 ID。名前はテンプレート内で一意である必要があり、テンプレートの `Resources` セクションのどの論理 ID 値とも競合できません。この名前は変換された出力には含まれません。これは、CloudFormation テンプレート自体の内部参照に使用されます。

*識別子*  
`OutputKey` パラメータおよび `OutputValue` パラメータで置き換えられるプレースホルダーの識別子。`OutputKey` パラメータと `OutputValue` パラメータにある `${Identifier}` または `&{Identifier}` のすべてのインスタンスは、`Collection` パラメータの値に置き換えられます。

*収集*  
反復処理の対象となる値のコレクション。このパラメーターの配列または [`Ref`](intrinsic-function-reference-ref.md) に対する `CommaDelimitedList` の場合があります。`&{Identifier}` を使用すると、英数字以外の文字を `Collection` に渡すことができます。

*出力キー*  
変換されたテンプレートのキー。`${Identifier}` または `&{Identifier}` は `OutputKey` パラメータに含める必要があります。たとえば、テンプレートの `Resources` セクションで `Fn::ForEach` が使用されている場合、これは各リソースの論理 ID です。  
`&{}` 構文では、`OutputKey` パラメータで使用する `Collection` に英数字以外の文字を使用できます。この例については、「[`Fn::ForEach` の `Collection` 内に英数字以外の文字を渡す](intrinsic-function-reference-foreach-example-resource.md#intrinsic-function-reference-foreach-example-non-alphanumeric)」を参照してください。

*出力値*  
`Collection` パラメータの各項目に変換されたテンプレートで複製される値。たとえば、`Fn::ForEach` をテンプレートの `Resources` セクションで使用する場合、これは各リソースを設定するために繰り返されるテンプレートフラグメントです。

## 戻り値
<a name="intrinsic-function-reference-foreach-return-value"></a>

コレクションの項目ごとに 1 回繰り返されるオブジェクト フラグメントを含む展開オブジェクト。フラグメントの識別子はコレクションの項目に置き換えられます。

## サポートされている関数
<a name="intrinsic-function-reference-foreach-nested-functions"></a>

`Fn::ForEach` 内で次の関数を使用できます。
+ 条件関数
  + [`Fn::And`](intrinsic-function-reference-conditions.md#intrinsic-function-reference-conditions-and)
  + [`Fn::Equals`](intrinsic-function-reference-conditions.md#intrinsic-function-reference-conditions-equals)
  + [`Fn::If`](intrinsic-function-reference-conditions.md#intrinsic-function-reference-conditions-if)
  + [`Fn::Not`](intrinsic-function-reference-conditions.md#intrinsic-function-reference-conditions-not)
  + [`Fn::Or`](intrinsic-function-reference-conditions.md#intrinsic-function-reference-conditions-or)
+ [`Fn::Base64`](intrinsic-function-reference-base64.md)
+ [`Fn::FindInMap`](intrinsic-function-reference-findinmap.md)
+ [`Fn::GetAtt`](intrinsic-function-reference-getatt.md)
+ [`Fn::GetAZs`](intrinsic-function-reference-getavailabilityzones.md)
+ [`Fn::ImportValue`](intrinsic-function-reference-importvalue.md)
+ [`Fn::Join`](intrinsic-function-reference-join.md)
+ [`Fn::Length`](intrinsic-function-reference-length.md)
+ [`Fn::Transform`](intrinsic-function-reference-transform.md)
+ [`Fn::Select`](intrinsic-function-reference-select.md)
+ [`Fn::Sub`](intrinsic-function-reference-sub.md)
+ [`Fn::ToJsonString`](intrinsic-function-reference-ToJsonString.md)
+ [`Ref`](intrinsic-function-reference-ref.md)

## 例
<a name="intrinsic-function-reference-foreach-example-pointer"></a>

`Conditions`、`Outputs`、`Resources` の各セクションの例は、[例](intrinsic-function-reference-foreach-examples.md) に記載されています。