Referencia de propiedades de configuración de AWS CloudFormation - AWS CloudFormation

Referencia de propiedades de configuración de AWS CloudFormation

Al crear una canalización de CodePipeline, agrega una acción Deploy a la canalización con AWS CloudFormation como proveedor. A continuación, debe especificar qué acción de AWS CloudFormation invoca la canalización y la configuración de la acción. Este tema describe las propiedades de configuración de AWS CloudFormation. Para especificar propiedades, puede utilizar la consola de CodePipeline o crear un objeto JSON a fin de usarlo para las plantillas de la AWS CLI, la API de CodePipeline o AWS CloudFormation.

Propiedades de configuración (consola)

La consola de CodePipeline muestra las propiedades de configuración e indica las propiedades necesarias en función del modo de acción que elija.

nota

Al crear una canalización, puede especificar solo los modos de acción Create or update a stack (Crear o actualizar una pila) o Create or replace a change set (Crear o reemplazar un conjunto de cambios). Además, las propiedades de la sección Advanced (Avanzadas) solo están disponibles al editar una canalización.

Action mode (Modo de acción)

La acción de AWS CloudFormation que CodePipeline invoca al procesar la fase asociada. Elija uno de los siguientes modos de acción:

  • Create or replace a change set (Crear o reemplazar un conjunto de cambios) 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 ya existe, AWS CloudFormation lo elimina y luego crea otro nuevo.

  • Create or update a stack (Crear o reemplazar una pila) crea la pila si la pila especificada no existe. Si la pila existe, AWS CloudFormation lo actualiza. Utilice esta acción para actualizar pilas existentes. CodePipeline no sustituirá la pila.

  • Delete a stack (Eliminar una pila) elimina una pila. Si especifica una pila que no existe, la acción se realiza de forma satisfactoria sin eliminar una pila.

  • Execute a change set (Ejecutar un conjunto de cambios) ejecuta un conjunto de cambios.

  • Replace a failed stack (Reemplazar una pila con errores) crea la pila si la pila especificada no existe. Si la pila existe y está en un estado de error (notificado como ROLLBACK_COMPLETE, ROLLBACK_FAILED, CREATE_FAILED, DELETE_FAILED o UPDATE_ROLLBACK_FAILED), AWS CloudFormation elimina la pila y luego crea otra nueva. Si la pila no está en un estado de error, AWS CloudFormation lo actualiza. Utilice esta acción para sustituir pilas con error sin recuperarlos ni solucionar sus problemas. Por lo general, debería elegir este modo para las pruebas.

Nombre de pila

El nombre que se asocia a una pila existente o a una pila que desea crear. El nombre debe ser único en la región AWS en la que está creando la pila.

nota

El nombre de una pila solo puede contener caracteres alfanuméricos (con distinción de mayúsculas y minúsculas) y guiones. Debe comenzar por una letra y no puede tener más de 128 caracteres.

Cambiar nombre de conjunto

El nombre de un conjunto de cambios existentes o un nuevo conjunto de cambios que desee crear para la pila especificada.

Plantilla

La ubicación de un archivo de plantilla de AWS CloudFormation, que sigue el formato ArtifactName::TemplateFileName.

Template configuration (Configuración de plantilla)

La ubicación de un archivo de configuración de plantilla, que sigue el formato ArtifactName::TemplateConfigurationFileName. El archivo de configuración de la plantilla puede contener los valores de los parámetros de la plantilla, una política de pila y etiquetas. Si incluye información confidencial, como contraseñas, restrinja el acceso a este archivo. Para obtener más información, consulte Artefactos de AWS CloudFormation.

Capacidades

Respecto a las pilas que contengan determinados recursos, reconozca explícitamente que AWS CloudFormation podría crear o actualizar dichos recursos. Por ejemplo, debe especificar CAPABILITY_IAM si la plantilla de su pila contiene recursos de AWS Identity and Access Management (IAM). Para obtener más información, consulte los parámetros CreateStack de solicitud de operación de API.

Si dispone de recursos de IAM en su plantilla de pila, debe especificar esta propiedad.

Puede especificar más de una capacidad.

Nombre del rol

El nombre del rol de servicio IAM que AWS CloudFormation asume cuando opera con recursos en la pila especificada.

Output file name (Nombre de archivo de salida)

En la sección Advanced (Avanzados), puede especificar un nombre de archivo de salida, como CreateStackOutput.json, que CodePipeline añade al artefacto de salida después de realizar la acción especificada. El artefacto de salida contiene un archivo JSON con el contenido de la sección Outputs de la plantilla de AWS CloudFormation.

Si no especifica un nombre, CodePipeline no genera un artefacto de salida.

Parameter overrides (Sobrescritura de parámetros)

Los parámetros se definen en la plantilla y le permiten ingresar valores personalizados al crear o actualizar una pila. Puede especificar un objeto JSON que anule los valores de los parámetros de la plantilla en el archivo de configuración de la plantilla. Todos los nombres de parámetros deben estar presentes en la plantilla de pila. Para obtener más información, consulte Sintaxis de Parameters de la plantilla de CloudFormation.

nota

El límite máximo de tamaño del objeto JSON que se puede almacenar en la propiedad ParameterOverrides es de 1 kilobyte.

Le recomendamos que use el archivo de configuración de la plantilla para especificar la mayoría de sus valores de parámetros. Utilice anulaciones de parámetros para especificar solo valores de parámetros dinámicos. Los parámetros dinámicos son desconocidos hasta que se ejecuta la canalización.

En el siguiente ejemplo, se define un valor para el parámetro ParameterName usando una función de anulación de parámetros. La función recupera un valor de un artefacto de entrada de CodePipeline. Para obtener más información acerca de las funciones de anulación de parámetros, consulte Uso de funciones de anulación de parámetros con canalizaciones de CodePipeline.

{ "ParameterName" : { "Fn::GetParam" : ["ArtifactName", "config-file-name.json", "ParamName"]} }

Propiedades de configuración (objeto JSON)

Cuando especifique CloudFormation como proveedor de la acción de una fase, defina las siguientes propiedades en la propiedad Configuration. Utilice el objeto JSON para las plantillas de la AWS CLI, la API de CodePipeline o AWS CloudFormation. Para ver ejemplos, consulte Tutorial: Creación de una canalización para pilas de prueba y pilas de producción y Referencia de propiedades de configuración de AWS CloudFormation.

ActionMode

La acción de AWS CloudFormation que CodePipeline invoca al procesar la fase asociada. Especifique solo uno de los siguientes modos de acción:

  • CHANGE_SET_EXECUTE ejecuta un conjunto de cambios.

  • 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 ya existe, AWS CloudFormation lo elimina y luego crea otro nuevo.

  • CREATE_UPDATE crea la pila si la pila especificado no existe. Si la pila existe, AWS CloudFormation lo actualiza. Utilice esta acción para actualizar pilas existentes. CodePipeline no sustituirá la pila.

  • 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 la pila especificada no existe. Si la pila existe y está en un estado de error (notificado como ROLLBACK_COMPLETE, ROLLBACK_FAILED, CREATE_FAILED, DELETE_FAILED o UPDATE_ROLLBACK_FAILED), AWS CloudFormation elimina la pila y luego crea otra nueva. Si la pila no está en un estado de error, AWS CloudFormation lo actualiza. Utilice esta acción para sustituir automáticamente pilas fallidas sin recuperarlos ni solucionar sus problemas. Por lo general, debería elegir este modo para las pruebas.

Esta propiedad es obligatoria.

Capabilities

Respecto a las pilas que contengan determinados recursos, reconozca explícitamente que AWS CloudFormation podría crear o actualizar dichos recursos. Por ejemplo, debe especificar CAPABILITY_IAM si la plantilla de su pila contiene recursos de AWS Identity and Access Management (IAM). Para obtener más información, consulte los parámetros CreateStack de solicitud de operación de API.

Esta propiedad es condicional. Si dispone de recursos de IAM en su plantilla de pila, debe especificar esta propiedad.

Puede especificar varias capacidades. El siguiente ejemplo agrega las propiedades CAPABILITY_IAM y CAPABILITY_AUTO_EXPAND a la plantilla:

YAML
configuration: ActionMode: CHANGE_SET_REPLACE Capabilities: CAPABILITY_IAM,CAPABILITY_AUTO_EXPAND ChangeSetName: pipeline-changeset RoleArn: CloudFormation_Role_ARN StackName: my-pipeline-stack TemplateConfiguration: 'my-pipeline-stack::template-configuration.json' TemplatePath: 'my-pipeline-stack::template-export.yml'
JSON
"configuration": { "ActionMode": "CHANGE_SET_REPLACE", "Capabilities": "CAPABILITY_IAM,CAPABILITY_AUTO_EXPAND", "ChangeSetName": "pipeline-changeset", "RoleArn": "CloudFormation_Role_ARN", "StackName": "my-pipeline-stack", "TemplateConfiguration": "my-pipeline-stack::template-configuration.json", "TemplatePath": "my-pipeline-stack::template-export.yml" }
ChangeSetName

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_SET_REPLACE y CHANGE_SET_EXECUTE. Para todos los demás modos de acción, se pasa por alto esta propiedad.

OutputFileName

Un nombre para el archivo de salida, como CreateStackOutput.json. CodePipeline agrega el archivo para el artefacto de salida después de llevar a cabo la acción especificada. El artefacto de salida contiene un archivo JSON con el contenido de la sección Outputs de la plantilla de AWS CloudFormation.

Esta propiedad es opcional. Si no especifica un nombre, CodePipeline no genera un artefacto de salida.

ParameterOverrides

Los parámetros se definen en la plantilla y le permiten ingresar valores personalizados al crear o actualizar una pila. Puede especificar un objeto JSON que anule los valores de los parámetros de la plantilla en el archivo de configuración de la plantilla. Todos los nombres de parámetros deben estar presentes en la plantilla de pila. Para obtener más información, consulte Sintaxis de Parameters de la plantilla de CloudFormation.

En el siguiente ejemplo se añaden las anulaciones de parámetros InstanceType y KeyName a la plantilla:

YAML
configuration: ActionMode: CHANGE_SET_REPLACE Capabilities: CAPABILITY_NAMED_IAM ChangeSetName: pipeline-changeset ParameterOverrides: '{"InstanceType": "t2.small","KeyName": "my-keypair"}' RoleArn: CloudFormation_Role_ARN StackName: my-pipeline-stack TemplateConfiguration: 'my-pipeline-stack::template-configuration.json' TemplatePath: 'my-pipeline-stack::template-export.yml'
JSON
"configuration": { "ActionMode": "CHANGE_SET_REPLACE", "Capabilities": "CAPABILITY_NAMED_IAM", "ChangeSetName": "pipeline-changeset", "ParameterOverrides": "{\"InstanceType\": \"t2.small\",\"KeyName\": \"my-keypair\"}", "RoleArn": "CloudFormation_Role_ARN", "StackName": "my-pipeline-stack", "TemplateConfiguration": "my-pipeline-stack::template-configuration.json", "TemplatePath": "my-pipeline-stack::template-export.yml" }
nota

El tamaño máximo del objeto JSON que se puede almacenar en la propiedad ParameterOverrides es de 1 kilobyte.

Le recomendamos que use el archivo de configuración de la plantilla para especificar la mayoría de sus valores de parámetros. Utilice anulaciones de parámetros para especificar solo valores de parámetros dinámicos. Los valores de los parámetros dinámicos son desconocidos hasta que se ejecuta la canalización.

En el siguiente ejemplo, se define un valor para el parámetro ParameterName usando una función de anulación de parámetros. La función recupera un valor de un artefacto de entrada de CodePipeline. Para obtener más información acerca de las funciones de anulación de parámetros, consulte Uso de funciones de anulación de parámetros con canalizaciones de CodePipeline.

{ "ParameterName" : { "Fn::GetParam" : ["ArtifactName", "config-file-name.json", "ParamName"]} }

Esta propiedad es opcional.

RoleArn

El nombre de recurso de Amazon (ARN) del rol de servicio de IAM que AWS CloudFormation asume cuando opera con recursos en una pila.

Esta propiedad es necesaria para los siguientes modos de acción: CREATE_UPDATE, REPLACE_ON_FAILURE, DELETE_ONLY y CHANGE_SET_REPLACE. RoleArn no se aplica a la hora de ejecutar un conjunto de cambios. Si no utiliza CodePipeline para crear el conjunto de cambios, debe asegurarse de que el conjunto de cambios o la pila tenga un rol asociado.

StackName

El nombre de una pila existente o una pila que desee crear.

Esta propiedad es obligatoria para todos los demás modos de acción.

TemplateConfiguration

TemplateConfiguration es el archivo de configuración de la plantilla. Incluya el archivo en un artefacto de entrada en esta acción. 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"

El archivo de configuración de la plantilla puede contener los valores de los parámetros de la plantilla y una política de pila. Si incluye información confidencial, como contraseñas, restrinja el acceso a este archivo. Para ver un archivo de configuración de plantilla de ejemplo, consulte Artefactos de AWS CloudFormation.

Esta propiedad es opcional.

TemplatePath

TemplatePath representa el archivo de plantilla de AWS 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.yaml crea un nombre TemplatePath, tal y como se muestra en este ejemplo:

"TemplatePath": "SourceArtifact::template.yaml"

Esta propiedad es necesaria para los siguientes modos de acción: CREATE_UPDATE, REPLACE_ON_FAILURE y CHANGE_SET_REPLACE. Para todos los demás modos de acción, se pasa por alto esta propiedad.

Véase también

Los recursos relacionados siguientes pueden serle de ayuda cuando trabaje con estos parámetros.