

Esta es la nueva *Guía de referencia de plantillas de CloudFormation*. Actualice sus marcadores y enlaces. Para obtener ayuda sobre cómo empezar a usar CloudFormation, consulte la [Guía del usuario de AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html).

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

La función intrínseca `Fn::ForEach` toma una colección y un fragmento y aplica los elementos de la colección al identificador del fragmento proporcionado. `Fn::ForEach` puede contener otras funciones intrínsecas, incluida la propia función `Fn::ForEach`, y usarse en las secciones `Conditions`, `Outputs` y `Resources` (incluidas las propiedades de los recursos). No se puede usar en ninguna de las siguientes secciones: `AWSTemplateFormatVersion`, `Description`, `Metadata`, `Transform`, `Parameters`, `Mappings`, `Rules`, o `Hooks`.

Si usa la función intrínseca `Fn::ForEach` en su plantilla, también debe usar las [`AWS::LanguageExtensions`Transformación de](transform-aws-languageextensions.md).

El uso de la función intrínseca `Fn::ForEach` no cambia las cuotas, que se aplican a la plantilla resultante. Las cuotas incluyen el tamaño máximo de una plantilla y el número máximo de recursos en una plantilla. Para obtener más información, consulte las [Comprensión de las cuotas de CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cloudformation-limits.html) en la *Guía del usuario de AWS CloudFormation*.

## Declaración
<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>

*Nombre lógico del bucle*  
Un identificador lógico para el bucle. El nombre debe ser único dentro de la plantilla y no puede entrar en conflicto con ningún valor de ID lógico en la sección `Resources` de la plantilla. Este nombre no aparece en la salida transformada. Se usa para referencia interna dentro de la propia plantilla de CloudFormation.

*Identificador*  
Un identificador del marcador de posición que se reemplaza en los parámetros `OutputKey` y `OutputValue`. Todas las instancias de `${Identifier}` o `&{Identifier}` en los parámetros `OutputKey` y `OutputValue` se reemplazarán con los valores del parámetro `Collection`.

*Recopilación*  
La colección de valores sobre la que iterar. Puede ser una matriz en este parámetro o una [`Ref`](intrinsic-function-reference-ref.md) a una `CommaDelimitedList`. Cuando se utiliza `&{Identifier}`, se pueden pasar caracteres no alfanuméricos en la `Collection`.

*Clave de salida*  
La clave en la plantilla transformada. `${Identifier}` o `&{Identifier}` debe estar incluidos dentro del parámetro `OutputKey`. Por ejemplo, si se usa `Fn::ForEach` en la sección `Resources` de la plantilla, este es el ID lógico de cada recurso.  
La sintaxis `&{}` permite utilizar caracteres no alfanuméricos en la `Collection` que se utilizará en el parámetro `OutputKey`. Para ver un ejemplo de esto, consulte [Transferencia de caracteres no alfanuméricos en `Collection` para `Fn::ForEach`](intrinsic-function-reference-foreach-example-resource.md#intrinsic-function-reference-foreach-example-non-alphanumeric).

*Valor de la salida*  
El valor que se replica en la plantilla transformada para cada elemento en el parámetro `Collection`. Por ejemplo, si se usa `Fn::ForEach` en la sección `Resources` de la plantilla, este es el fragmento de plantilla que se repite para configurar cada recurso.

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

Un objeto expandido que contiene el fragmento de objeto repetido una vez para cada elemento de la colección, donde el identificador del fragmento se reemplaza por el elemento de la colección.

## Funciones compatibles
<a name="intrinsic-function-reference-foreach-nested-functions"></a>

Puede utilizar las siguientes funciones en `Fn::ForEach`.
+ Funciones de condiciones:
  + [`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)

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

Encontrará ejemplos de las secciones `Conditions`, `Outputs` y `Resources` en [Ejemplos](intrinsic-function-reference-foreach-examples.md).