

Este é o novo *Guia de referência de modelos do CloudFormation*. Atualize seus favoritos e links. Para obter ajuda para começar a usar o CloudFormation, consulte o [Guia do usuário do AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html).

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

A função intrínseca `Fn::ForEach` utiliza uma coleção e um fragmento e aplica os itens da coleção ao identificador no fragmento fornecido. `Fn::ForEach` pode conter outras funções intrínsecas, inclusive a própria `Fn::ForEach`, e ser usada nas seções `Conditions`, `Outputs` e `Resources` (incluindo as propriedades do recurso). Ela não pode ser usada em nenhuma das seções a seguir: `AWSTemplateFormatVersion`, `Description`, `Metadata`, `Transform`, `Parameters`, `Mappings`, `Rules`, ou `Hooks`.

Se você usar a função intrínseca `Fn::ForEach` em seu modelo, também deverá usar o [`AWS::LanguageExtensions`Transformação](transform-aws-languageextensions.md).

O uso da função intrínseca `Fn::ForEach` não altera as cotas que se aplicam ao modelo resultante. As cotas incluem o tamanho máximo de um modelo e o número máximo de recursos em um modelo. Para obter mais informações, consulte [Entender cotas do CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cloudformation-limits.html) no *Guia do usuário do AWS CloudFormation*.

## Declaração
<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
```

## Parâmetros
<a name="intrinsic-function-reference-foreach-parameters"></a>

*Nome lógico do loop*  
Um ID lógico para o loop. O nome deve ser exclusivo no modelo e não pode entrar em conflito com nenhum valor lógico de ID na seção `Resources` do modelo. Esse nome não está na saída transformada. Ele é usado para referência interna no próprio modelo do CloudFormation.

*Identificador*  
Um identificador para o espaço reservado que é substituído nos parâmetros `OutputKey` e `OutputValue`. Todas as instâncias de `${Identifier}` ou `&{Identifier}` nos parâmetros `OutputKey` e `OutputValue` serão substituídas pelos valores do parâmetro `Collection`.

*Coleta*  
A coleção de valores sobre os quais iterar. Isso pode ser uma matriz nesse parâmetro ou pode ser uma [`Ref`](intrinsic-function-reference-ref.md) para uma `CommaDelimitedList`. Ao usar `&{Identifier}`, os caracteres que não são alfanuméricos podem ser passados na `Collection`.

*Chave de saída*  
A chave no modelo transformado. `${Identifier}` ou `&{Identifier}` deve ser incluído no parâmetro `OutputKey`. Por exemplo, se `Fn::ForEach` for usado na seção `Resources` do modelo, esse será o ID lógico de cada recurso.  
A sintaxe `&{}` permite que caracteres não alfanuméricos em `Collection` sejam usados no parâmetro `OutputKey`. Para obter um exemplo disso, consulte [Passar caracteres não alfanuméricos da `Collection` para `Fn::ForEach`](intrinsic-function-reference-foreach-example-resource.md#intrinsic-function-reference-foreach-example-non-alphanumeric).

*Valor de saída*  
O valor que é replicado no modelo transformado para cada item no parâmetro `Collection`. Por exemplo, se `Fn::ForEach` for usado na seção `Resources` do modelo, esse será o fragmento do modelo repetido para configurar cada recurso.

## Valor de retorno
<a name="intrinsic-function-reference-foreach-return-value"></a>

Um objeto expandido que contém o fragmento do objeto repetido uma vez para cada item na coleção, em que o identificador no fragmento é substituído pelo item da coleção.

## Funções compatíveis
<a name="intrinsic-function-reference-foreach-nested-functions"></a>

É possível usar as funções a seguir em `Fn::ForEach`.
+ Funções de condição:
  + [`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)

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

É possível encontrar exemplos das seções `Conditions`, `Outputs` e `Resources` no [Exemplos](intrinsic-function-reference-foreach-examples.md).