

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Referencia de la acción de implementación de CloudFormation
<a name="action-reference-CloudFormation"></a>

Ejecuta una operación en una CloudFormation pila. Una pila es un conjunto de AWS recursos que se pueden gestionar como una sola unidad. Los recursos de una pila se definen según la plantilla de CloudFormation de la pila. Un conjunto de cambios crea una comparación que se puede visualizar sin modificar la pila original. Para obtener información sobre los tipos de CloudFormation acciones que se pueden realizar en las pilas y los conjuntos de cambios, consulte el `ActionMode` parámetro.

Para crear un mensaje de error para una CloudFormation acción en la que se ha producido un error en una operación de apilado, CodePipeline llama a la CloudFormation `DescribeStackEvents` API. Si un rol de IAM de acción tiene permiso para acceder a esa API, los detalles sobre el primer recurso fallido se incluirán en el mensaje de CodePipeline error. De lo contrario, si la política de roles no tiene el permiso adecuado, CodePipeline ignorará el acceso a la API y, en su lugar, mostrará un mensaje de error genérico. Para ello, el permiso `cloudformation:DescribeStackEvents` debe agregarse al rol de servicio o a otros roles de IAM de la canalización.

Si no desea que los detalles del recurso aparezcan en los mensajes de error de la canalización, puede eliminar el permiso `cloudformation:DescribeStackEvents` para revocar este permiso para el rol de IAM de acción.

**Topics**
+ [Tipo de acción](#action-reference-CloudFormation-type)
+ [Parámetros de configuración](#action-reference-CloudFormation-config)
+ [Artefactos de entrada](#action-reference-CloudFormation-input)
+ [Artefactos de salida](#action-reference-CloudFormation-output)
+ [Variables de salida](#action-reference-CloudFormation-variables)
+ [Permisos de rol de servicio: CloudFormation acción](#edit-role-cloudformation)
+ [Declaración de acciones](#action-reference-CloudFormation-example)
+ [Véase también](#action-reference-CloudFormation-links)

## Tipo de acción
<a name="action-reference-CloudFormation-type"></a>
+ Categoría: `Deploy`
+ Propietario: `AWS`
+ Proveedor: `CloudFormation`
+ Versión: `1` 

## Parámetros de configuración
<a name="action-reference-CloudFormation-config"></a>

**ActionMode**  
Obligatorio: sí  
`ActionMode`es el nombre de la acción que se CloudFormation realiza en una pila o conjunto de cambios. Están disponibles los siguientes modos de acción:  
+ `CHANGE_SET_EXECUTE` ejecuta un conjunto de cambios para la pila de recursos que se basa en un conjunto de actualizaciones de recursos especificadas. Con esta acción, CloudFormation comienza a alterar la pila.
+ `CHANGE_SET_REPLACE` crea el conjunto de cambios, si no existe, basándose en el nombre de la pila y la plantilla que envíe. Si el conjunto de cambios existe, lo CloudFormation elimina y, a continuación, crea uno nuevo. 
+ `CREATE_UPDATE` crea la pila si no existe. Si la pila existe, CloudFormation actualiza la pila. Utilice esta acción para actualizar pilas existentes. Por el contrario`REPLACE_ON_FAILURE`, si la pila existe y se encuentra en un estado fallido, CodePipeline no la eliminará ni la reemplazará.
+ `DELETE_ONLY` elimina una pila. Si especifica una pila que no existe, la acción se realiza de forma satisfactoria sin eliminar una pila.
+ `REPLACE_ON_FAILURE` crea una pila si no existe. Si la pila existe y se encuentra en un estado fallido, la CloudFormation elimina y, a continuación, crea una nueva pila. Si la pila no está en un estado fallido, la CloudFormation actualiza. 

  La pila está en un estado de error cuando se muestra alguno de los siguientes tipos de estado en CloudFormation: 
  + `ROLLBACK_FAILED`
  + `CREATE_FAILED`
  + `DELETE_FAILED`
  + `UPDATE_ROLLBACK_FAILED`

  Utilice esta acción para sustituir automáticamente pilas fallidas sin recuperarlos ni solucionar sus problemas.
**importante**  
Le recomendamos que utilice `REPLACE_ON_FAILURE` solo con fines de prueba, ya que podría eliminar la pila.

**StackName**  
Obligatorio: sí  
`StackName` es el nombre de una pila existente o una pila que desea crear.

**Capacidades**  
Obligatorio: condicional  
El uso de `Capabilities` reconoce que la plantilla podría tener las capacidades de crear y actualizar algunos recursos por sí misma y que estas capacidades se determinan en función de los tipos de recursos de la plantilla.  
Esta propiedad es necesaria si tiene recursos de IAM en la plantilla de pila o si crea una pila directamente desde una plantilla que contiene macros. Para que la CloudFormation acción funcione correctamente de esta manera, debe reconocer explícitamente que desea que lo haga con una de las siguientes capacidades:  
+ `CAPABILITY_IAM` 
+ `CAPABILITY_NAMED_IAM` 
+ `CAPABILITY_AUTO_EXPAND` 
 Puede especificar más de una capacidad mediante el uso de una coma (sin espacio) entre las capacidades. El ejemplo de [Declaración de acciones](#action-reference-CloudFormation-example) muestra una entrada con las propiedades CAPABILITY\$1IAM y CAPABILITY\$1AUTO\$1EXPAND.  
Para obtener más información al respecto`Capabilities`, consulte las propiedades que aparecen [UpdateStack](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_UpdateStack.html)en la *referencia de la AWS CloudFormation API*.

**ChangeSetName**  
Obligatorio: condicional  
`ChangeSetName` es el nombre de un conjunto de cambios existentes o un nuevo conjunto de cambios que desee crear para la pila especificada.  
 Esta propiedad es necesaria para los siguientes modos de acción: CHANGE\$1SET\$1REPLACE y CHANGE\$1SET\$1EXECUTE. Para todos los demás modos de acción, se pasa por alto esta propiedad.

**RoleArn**  
Obligatorio: condicional  
El `RoleArn` es el ARN del rol de servicio de IAM que CloudFormation asume cuando opera en los recursos de la pila especificada. `RoleArn` no se aplica al ejecutar un conjunto de cambios. Si no lo utiliza CodePipeline para crear el conjunto de cambios, asegúrese de que el conjunto o la pila de cambios tengan una función asociada.  
Este rol debe estar en la misma cuenta que el role de la acción que se está ejecutando, tal como se configura en la declaración de acción `RoleArn`.
Esta propiedad es necesaria para los siguientes modos de acción:  
+ CREATE\$1UPDATE
+ REPLACE\$1ON\$1FAILURE
+ DELETE\$1ONLY
+ CHANGE\$1SET\$1REPLACE
CloudFormation recibe una URL de la plantilla firmada por S3; por lo tanto, `RoleArn` no necesita permiso para acceder al depósito de artefactos. Sin embargo, la acción `RoleArn` *necesita* permiso para acceder al bucket de artefactos para generar la URL firmada.

**TemplatePath**  
Obligatorio: condicional  
`TemplatePath`representa el archivo de plantilla CloudFormation . Incluya el archivo en un artefacto de entrada en esta acción. El nombre del archivo sigue este formato:  
`Artifactname::TemplateFileName`  
`Artifactname` es el nombre del artefacto de entrada, tal y como aparece en CodePipeline. Por ejemplo, una etapa de origen con el nombre de artefacto de `SourceArtifact` y un nombre de archivo `template-export.json` crea un nombre `TemplatePath`, tal y como se muestra en este ejemplo:  

```
"TemplatePath": "SourceArtifact::template-export.json"
```
Esta propiedad es necesaria para los siguientes modos de acción:   
+ CREATE\$1UPDATE
+ REPLACE\$1ON\$1FAILURE
+ CHANGE\$1SET\$1REPLACE
Para todos los demás modos de acción, se pasa por alto esta propiedad.  
El archivo de CloudFormation plantilla que contiene el cuerpo de la plantilla tiene una longitud mínima de 1 byte y una longitud máxima de 1 MB. Para las acciones de CloudFormation despliegue en CodePipeline, el tamaño máximo del artefacto de entrada es siempre de 256 MB. Para obtener más información, consulte [Cuotas en AWS CodePipeline](limits.md) y [Límites de CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cloudformation-limits.html).

**OutputFileName**  
Obligatorio: no  
Se utiliza `OutputFileName` para especificar un nombre de archivo de salida, por ejemplo`CreateStackOutput.json`, que se CodePipeline añada al artefacto de salida de la canalización para esta acción. El archivo JSON contiene el contenido de la `Outputs` sección de la CloudFormation pila.  
Si no especificas un nombre, CodePipeline no generará un archivo o artefacto de salida.

**ParameterOverrides**  
Obligatorio: no  
Los parámetros se definen en la plantilla de pila y le permiten proporcionarles valores en el momento de la creación o actualización de la pila. Puede utilizar un objeto JSON para establecer valores de parámetros en la plantilla (estos valores anulan los establecidos en el archivo de configuración de la plantilla). Para obtener más información sobre el uso de anulaciones de parámetros, consulte [Propiedades de configuración (objeto JSON)](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/continuous-delivery-codepipeline-action-reference.html#w4363ab1c13c13b9).  
Le recomendamos que use el archivo de configuración de la plantilla para la mayoría de los valores de parámetros. Utilice anulaciones de parámetros solo para valores que no se conocen hasta que la canalización se está ejecutando. *Para obtener más información, consulte [Uso de funciones de anulación de parámetros con CodePipeline canalizaciones](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/continuous-delivery-codepipeline-parameter-override-functions.html) en la Guía del AWS CloudFormation usuario.*  
Todos los nombres de parámetros deben estar presentes en la plantilla de pila.

**TemplateConfiguration**  
Obligatorio: no  
`TemplateConfiguration` es el archivo de configuración de la plantilla. Incluya el archivo en un artefacto de entrada en esta acción. Puede incluir valores de parámetros de plantilla y una política de pilas. Para obtener más información sobre el formato del archivo de configuración de plantilla, consulte [Artefactos de AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/continuous-delivery-codepipeline-cfn-artifacts.html).   
El nombre del archivo de configuración de la plantilla se ajusta a este formato:   
`Artifactname::TemplateConfigurationFileName`  
`Artifactname` es el nombre del artefacto de entrada, tal y como aparece en CodePipeline. Por ejemplo, una etapa de origen con el nombre de artefacto de `SourceArtifact` y un nombre de archivo `test-configuration.json` crea un nombre `TemplateConfiguration`, tal y como se muestra en este ejemplo:  

```
"TemplateConfiguration": "SourceArtifact::test-configuration.json"
```

## Artefactos de entrada
<a name="action-reference-CloudFormation-input"></a>
+ **Número de artefactos:** `0 to 10`
+ **Descripción:** Como entrada, la CloudFormation acción acepta artefactos de forma opcional para los siguientes fines:
  + Para proporcionar el archivo de plantilla de pila que se va a ejecutar (consulte el parámetro `TemplatePath`).
  + Para proporcionar el archivo de configuración de la plantilla que se va a utilizar (consulte el parámetro `TemplateConfiguration`). Para obtener más información sobre el formato del archivo de configuración de plantilla, consulte [Artefactos de AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/continuous-delivery-codepipeline-cfn-artifacts.html). 
  + Proporcionar el artefacto para que una función Lambda se despliegue como parte de la CloudFormation pila.

## Artefactos de salida
<a name="action-reference-CloudFormation-output"></a>
+ **Número de artefactos:** `0 to 1` 
+ **Descripción:** si se especifica el parámetro `OutputFileName`, esta acción produce un artefacto de salida que incluye un archivo JSON con el nombre especificado. El archivo JSON incluye el contenido de la sección Outputs de la pila de CloudFormation .

  Para obtener más información acerca de la sección Outputs que puede crear para la acción de CloudFormation , consulte [Salidas](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/outputs-section-structure.html).

## Variables de salida
<a name="action-reference-CloudFormation-variables"></a>

Cuando se configura, esta acción produce variables a las que se puede hacer referencia mediante la configuración de acción de una acción descendente en la canalización. Configure una acción con un espacio de nombres para que esas variables estén disponibles para la configuración de las acciones posteriores.

En el caso de las CloudFormation acciones, las variables se generan a partir de cualquier valor designado en la `Outputs` sección de una plantilla de pila. Tenga en cuenta que los únicos modos de CloudFormation acción que generan resultados son aquellos que dan como resultado la creación o actualización de una pila, como la creación de la pila, las actualizaciones de la pila y la ejecución de conjuntos de cambios. Los modos de acción correspondientes que generan variables son:
+ `CHANGE_SET_EXECUTE`
+ `CHANGE_SET_REPLACE`
+ `CREATE_UPDATE`
+ `REPLACE_ON_FAILURE`

Para obtener más información, consulte [Referencia de variables](reference-variables.md). Para ver un tutorial que muestra cómo crear una canalización con una acción de CloudFormation despliegue en una canalización que utilice variables CloudFormation de salida, consulte[Tutorial: Crear una canalización que utilice variables de las acciones de AWS CloudFormation despliegue](tutorials-cloudformation-action.md).

## Permisos de rol de servicio: CloudFormation acción
<a name="edit-role-cloudformation"></a>

Cuando CodePipeline se ejecuta la acción, la política de rol de CodePipeline servicio requiere los siguientes permisos, que se limitan adecuadamente al ARN del recurso de canalización para mantener el acceso con los mínimos privilegios. Por ejemplo, agregue lo siguiente a su declaración de política:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowCFNStackAccess",
            "Effect": "Allow",
            "Action": [
                "cloudformation:CreateStack",
                "cloudformation:UpdateStack",
                "cloudformation:DeleteStack",
                "cloudformation:DescribeStacks",
                "cloudformation:DescribeStackResources",
                "cloudformation:DescribeStackEvents",
                "cloudformation:GetTemplate",
                "cloudformation:DescribeChangeSet",
                "cloudformation:CreateChangeSet",
                "cloudformation:DeleteChangeSet",
                "cloudformation:ExecuteChangeSet"
            ],
            "Resource": [
                "arn:aws:cloudformation:*:111122223333:stack/[[cfnDeployStackNames]]/*"
            ]
        },
        {
            "Sid": "ValidateTemplate",
            "Effect": "Allow",
            "Action": [
                "cloudformation:ValidateTemplate"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowIAMPassRole",
            "Effect": "Allow",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": [
                "arn:aws:iam::111122223333:role/[[cfnExecutionRoles]]"
            ],
            "Condition": {
                "StringEqualsIfExists": {
                    "iam:PassedToService": [
                        "cloudformation.amazonaws.com"
                    ]
                }
            }
        }
    ]
}
```

------

Tenga en cuenta que el permiso `cloudformation:DescribeStackEvents` es opcional. Permite que la CloudFormation acción muestre un mensaje de error más detallado. Puede revocar este permiso desde el rol de IAM si no quiere que los detalles de los recursos aparezcan en los mensajes de error de la canalización.

## Declaración de acciones
<a name="action-reference-CloudFormation-example"></a>

------
#### [ YAML ]

```
Name: ExecuteChangeSet
ActionTypeId:
  Category: Deploy
  Owner: AWS
  Provider: CloudFormation
  Version: '1'
RunOrder: 2
Configuration:
  ActionMode: CHANGE_SET_EXECUTE
  Capabilities: CAPABILITY_NAMED_IAM,CAPABILITY_AUTO_EXPAND
  ChangeSetName: pipeline-changeset
  ParameterOverrides: '{"ProjectId": "my-project","CodeDeployRole": "CodeDeploy_Role_ARN"}'
  RoleArn: CloudFormation_Role_ARN
  StackName: my-project--lambda
  TemplateConfiguration: 'my-project--BuildArtifact::template-configuration.json'
  TemplatePath: 'my-project--BuildArtifact::template-export.yml'
OutputArtifacts: []
InputArtifacts:
  - Name: my-project-BuildArtifact
```

------
#### [ JSON ]

```
{
    "Name": "ExecuteChangeSet",
    "ActionTypeId": {
        "Category": "Deploy",
        "Owner": "AWS",
        "Provider": "CloudFormation",
        "Version": "1"
    },
    "RunOrder": 2,
    "Configuration": {
        "ActionMode": "CHANGE_SET_EXECUTE",
        "Capabilities": "CAPABILITY_NAMED_IAM,CAPABILITY_AUTO_EXPAND",
        "ChangeSetName": "pipeline-changeset",
        "ParameterOverrides": "{\"ProjectId\": \"my-project\",\"CodeDeployRole\": \"CodeDeploy_Role_ARN\"}",
        "RoleArn": "CloudFormation_Role_ARN",
        "StackName": "my-project--lambda",
        "TemplateConfiguration": "my-project--BuildArtifact::template-configuration.json",
        "TemplatePath": "my-project--BuildArtifact::template-export.yml"
    },
    "OutputArtifacts": [],
    "InputArtifacts": [
        {
             "Name": "my-project-BuildArtifact"
        }
    ]
},
```

------

## Véase también
<a name="action-reference-CloudFormation-links"></a>

Los recursos relacionados siguientes pueden serle de ayuda cuando trabaje con esta acción.
+ [Referencia sobre las propiedades de configuración](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/continuous-delivery-codepipeline-action-reference.html): este capítulo de referencia de la *Guía del AWS CloudFormation usuario* proporciona más descripciones y ejemplos de estos CodePipeline parámetros.
+ [AWS CloudFormation Referencia de la API](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/): el [CreateStack](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CreateStack.html)parámetro de la *referencia de la AWS CloudFormation API* describe los parámetros de pila de CloudFormation las plantillas.