

這是新的 *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
```

## Parameters
<a name="intrinsic-function-reference-foreach-parameters"></a>

*迴圈邏輯名稱*  
迴圈的邏輯 ID。名稱在範本中必須是唯一的，且不能與範本 `Resources` 區段中的任何邏輯 ID 值衝突。轉換後的輸出中沒有此名稱。它用於 CloudFormation 範本本身的內部參考。

*識別符*  
在 `OutputKey` 和 `OutputValue` 參數中取代的預留位置識別符。在 `OutputKey` 和 `OutputValue` 參數中，`${Identifier}` 或 `&{Identifier}` 的全部執行個體將被取代為來自 `Collection` 參數的值。

*收集*  
要逐一查看的值的集合。這可以是此參數中的陣列，也可以是 `CommaDelimitedList` 的 [`Ref`](intrinsic-function-reference-ref.md)。使用 `&{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>

展開的物件包含為集合中每個項目重複一次的物件片段，片段中的識別碼被來自集合的項目替換。

## 支援的函數
<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>

可以在 [範例](intrinsic-function-reference-foreach-examples.md) 中找到 `Conditions`、`Outputs`和 `Resources` 區段的範例。