

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.

# Tutorial: Crear una canalización que utilice variables de las acciones de AWS CloudFormation despliegue
<a name="tutorials-cloudformation-action"></a>

En este tutorial, utilizarás la AWS CodePipeline consola para crear una canalización con una acción de despliegue. Cuando se ejecuta la canalización, la plantilla crea una pila y también crea un archivo `outputs`. Los resultados generados por la plantilla de pila son las variables generadas por la AWS CloudFormation acción en CodePipeline.

En la acción en la que se crea la pila a partir de la plantilla, se designa un espacio de nombres variable. Acciones posteriores pueden consumir las variables producidas por el archivo `outputs`. En este ejemplo, se crea un conjunto de cambios basado en la `StackName` variable producida por la AWS CloudFormation acción. Después de una aprobación manual, ejecute el conjunto de cambios y, a continuación, cree una acción de eliminación de pila que elimine la pila en función de la variable `StackName`.

**importante**  
Como parte de la creación de una canalización, se utilizará un depósito de artefactos de S3 proporcionado por el cliente CodePipeline para los artefactos. (Es diferente del bucket que se usa para una acción de origen de S3). Si el depósito de artefactos de S3 está en una cuenta diferente a la de tu canalización, asegúrate de que el depósito de artefactos de S3 pertenezca a una Cuentas de AWS persona segura y fiable.

**Topics**
+ [Requisitos previos: crear un rol de AWS CloudFormation servicio y un repositorio CodeCommit](#tutorials-cloudformation-action-prereq)
+ [Paso 1: Descargue, edite y cargue la plantilla de muestra AWS CloudFormation](#tutorials-cloudformation-action-upload)
+ [Paso 2: Crear la canalización](#tutorials-cloudformation-action-pipeline)
+ [Paso 3: Añade una acción CloudFormation de despliegue para crear el conjunto de cambios](#tutorials-cloudformation-action-changeset)
+ [Paso 4: Agregar una acción de aprobación manual](#tutorials-cloudformation-action-approval)
+ [Paso 5: Agrega una acción de CloudFormation despliegue para ejecutar el conjunto de cambios](#tutorials-cloudformation-action-deployment)
+ [Paso 6: Añade una acción CloudFormation de despliegue para eliminar la pila](#tutorials-cloudformation-action-delete)

## Requisitos previos: crear un rol de AWS CloudFormation servicio y un repositorio CodeCommit
<a name="tutorials-cloudformation-action-prereq"></a>

Debe disponer de lo siguiente:
+ Un CodeCommit repositorio. Puede usar el AWS CodeCommit repositorio en el que creó[Tutorial: Crear una canalización sencilla (CodeCommit repositorio)](tutorials-simple-codecommit.md).
+ En este ejemplo se crea una pila de Amazon DocumentDB a partir de una plantilla. Debe usar AWS Identity and Access Management (IAM) para crear un rol de AWS CloudFormation servicio con los siguientes permisos para Amazon DocumentDB.

  ```
  "rds:DescribeDBClusters",
  "rds:CreateDBCluster",
  "rds:DeleteDBCluster",
  "rds:CreateDBInstance"
  ```

## Paso 1: Descargue, edite y cargue la plantilla de muestra AWS CloudFormation
<a name="tutorials-cloudformation-action-upload"></a>

Descarga el archivo de AWS CloudFormation plantilla de muestra y súbelo a tu CodeCommit repositorio.

1. Desplácese hasta la plantilla de ejemplo de su región. Por ejemplo, utilice la tabla de [https://docs.aws.amazon.com/documentdb/latest/developerguide/quick_start_cfn.html#quick_start_cfn-launch_stack](https://docs.aws.amazon.com/documentdb/latest/developerguide/quick_start_cfn.html#quick_start_cfn-launch_stack) para elegir la región y descargar la plantilla. Descargue la plantilla para un clúster de Amazon DocumentDB. El nombre de archivo es `documentdb_full_stack.yaml`.

1. Descomprima el archivo `documentdb_full_stack.yaml` y ábralo en un editor de texto. Realice los siguientes cambios.

   1. Para este ejemplo, agregue el siguiente parámetro `Purpose:` a la sección `Parameters` de la plantilla.

      ```
        Purpose:
          Type: String
          Default: testing
          AllowedValues:
            - testing
            - production
          Description: The purpose of this instance.
      ```

   1. Para este ejemplo, agregue el siguiente resultado `StackName` a la sección `Outputs:` de la plantilla.

      ```
        StackName:
          Value: !Ref AWS::StackName
      ```

1. Sube el archivo de plantilla a tu AWS CodeCommit repositorio. Debe cargar el archivo de plantilla descomprimido y editado en el directorio raíz de su repositorio. 

   Para usar la CodeCommit consola para cargar tus archivos: 

   1. Abre la CodeCommit consola y elige tu repositorio en la lista de **repositorios**.

   1. Elija **Add file (Añadir archivo)** y, a continuación, **Upload file (Cargar archivo)**. 

   1. Seleccione **Choose file (Elegir archivo)** y, a continuación, busque el archivo. Para confirmar el cambio, introduzca su nombre de usuario y la dirección de correo electrónico. Seleccione **Confirmar cambios**.

   Su archivo debe tener un aspecto similar a este en el nivel raíz de su repositorio:

   ```
   documentdb_full_stack.yaml
   ```

## Paso 2: Crear la canalización
<a name="tutorials-cloudformation-action-pipeline"></a>

En esta sección, debe crear una canalización con las siguientes acciones:
+ Una etapa de origen con una CodeCommit acción en la que el artefacto fuente es tu archivo de plantilla.
+ Una etapa de despliegue con una acción CloudFormation de despliegue.

A cada acción de las fases de origen e implementación creadas por el asistente se le asigna un espacio de nombres variable, `SourceVariables` y `DeployVariables`, respectivamente. Debido a que las acciones tienen asignado un espacio de nombres, las variables configuradas en este ejemplo están disponibles para las acciones posteriores. Para obtener más información, consulte [Referencia de variables](reference-variables.md).

**Para crear una canalización con el asistente**

1. Inicie sesión Consola de administración de AWS y abra la CodePipeline consola en [http://console.aws.amazon. com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home).

1. En la página **Bienvenido**, **Introducción** o **Canalizaciones**, elija **Crear canalización**.

1. En la página **Paso 1: elección de la opción de creación**, en **Opciones de creación**, seleccione la opción **Crear una canalización personalizada**. Elija **Siguiente**.

1. En **Paso 2: elegir la configuración de la canalización**, en **Nombre de la canalización**, escriba **MyCFNDeployPipeline**.

1. CodePipeline proporciona tuberías de tipo V1 y V2, que difieren en características y precio. El tipo V2 es el único tipo que puede elegir en la consola. Para obtener más información, consulte [Tipos de canalización](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipeline-types-planning.html?icmpid=docs_acp_help_panel). Para obtener información sobre los precios de CodePipeline, consulte [Precios](https://aws.amazon.com/codepipeline/pricing/).

1. En **Service role (Rol de servicio)**, realice una de las operaciones siguientes:
   + Elija **Nueva función de servicio** para CodePipeline permitir la creación de una función de servicio en IAM.
   + Elija **Existing service role (Rol de servicio existente)** En **Role name (Nombre del rol)**, elija el nombre del rol de servicio en la lista.

1. En **Artifact store (Almacén de artefactos)**: 

   1. Seleccione **Ubicación predeterminada** para utilizar con la canalización el almacén de artefactos predeterminado (por ejemplo, el bucket de Amazon S3 que se estableció como predeterminado) que esté en la región que seleccionó para la canalización.

   1. Elija **Ubicación personalizada** si ya dispone de un almacén de artefactos (por ejemplo, un bucket de artefactos de Amazon S3) en la misma región que la canalización.
**nota**  
Este no es el bucket de origen para su código fuente. Este es el almacén de artefactos de la canalización. Cada canalización debe tener su propio almacén de artefactos independiente, como un bucket de S3. Al crear o editar una canalización, debes tener un depósito de artefactos en la región de la canalización y un depósito de artefactos por AWS región en la que ejecutes una acción.  
Para obtener más información, consulte [Artefactos de entrada y salida](welcome-introducing-artifacts.md) y [CodePipeline referencia de estructura de tubería](reference-pipeline-structure.md).

   Elija **Siguiente**.

1. En **Paso 3: agregar la etapa de origen**: 

   1. En **Source provider (Proveedor de código fuente)**, elija **AWS CodeCommit**.

   1. En **Nombre del repositorio**, elige el nombre del CodeCommit repositorio en el que lo creaste. [Paso 1: Crea un CodeCommit repositorio](tutorials-simple-codecommit.md#codecommit-create-repository)

   1. En **Nombre de ramificación**, elija el nombre de la ramificación que incluye la última actualización del código.

   Tras seleccionar el nombre y la sucursal del repositorio, se muestra la regla de Amazon CloudWatch Events que se va a crear para esta canalización. 

   Elija **Siguiente**.

1. En **Paso 4: agregar la etapa de compilación**, elija **Omitir la etapa de compilación** y, a continuación, acepte el mensaje de advertencia eligiendo **Omitir** una vez más. 

   Elija **Siguiente**.

1. En **Paso 5: agregación de la etapa de prueba**, elija **Omitir la etapa de prueba** y, a continuación, acepte el mensaje de advertencia eligiendo **Omitir** una vez más. 

   Elija **Siguiente**.

1. En el **paso 6: Añadir la etapa de despliegue**:

   1. En **Nombre de acción**, elija **Implementar**. En **Deploy provider (Proveedor de implementación)**, elija **CloudFormation**.

   1. En **Modo acción**, elija **Crear o actualizar una pila**.

   1. En **Nombre de la pila**, escriba un nombre para la pila. Este es el nombre de la pila que creará la plantilla.

   1. En **Nombre del archivo de salida**, escriba un nombre para el archivo de salida, como **outputs**. Este es el nombre del archivo que la acción creará después de que se cree la pila.

   1. Expanda **Advanced (Avanzadas)**. En **Sobrescritura de parámetros**, especifique las invalidaciones de la plantilla como pares de clave-valor. Por ejemplo, esta plantilla requiere las siguientes invalidaciones.

      ```
      {
      "DBClusterName": "MyDBCluster",
      "DBInstanceName": "MyDBInstance",
      "MasterUser": "UserName",
      "MasterPassword": "Password",
      "DBInstanceClass": "db.r4.large",
      "Purpose": "testing"}
      ```

      Si no especifica las invalidaciones, la plantilla crea una pila con valores predeterminados.

   1. Elija **Siguiente**.

   1. En el **paso 7: Revisar**, selecciona **Crear canalización**. Debería ver un diagrama con las etapas de la canalización. Permita que su canalización se ejecute. Su canalización de dos etapas está completa y lista para agregar las etapas adicionales.

## Paso 3: Añade una acción CloudFormation de despliegue para crear el conjunto de cambios
<a name="tutorials-cloudformation-action-changeset"></a>

Cree una siguiente acción en su proceso que permita CloudFormation crear el conjunto de cambios antes de la acción de aprobación manual.



1. Abre la CodePipeline consola en [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/).

   En **Canalizaciones**, elija la canalización y luego **Ver**. El diagrama muestra las etapas de código fuente e implementación de la canalización.

1. Elija editar la canalización o continuar mostrando la canalización en el modo **Editar**.

1. Elija editar la etapa **Implementación**.

1. Agregue una acción de implementación que creará un conjunto de cambios para la pila que se creó en la acción anterior. Esta acción se añade después de la acción existente en la etapa.

   1. En **Nombre de la acción**, escriba **Change\$1Set**. En **Proveedor de acción**, seleccione **AWS CloudFormation **.

   1. En **Artefacto de entrada**, elija **SourceArtifact**.

   1. En **Action mode (Modo acción)**, elija **Create or replace a change set (Crear o reemplazar un conjunto de cambios)**.

   1. En **Nombre de la pila**, escriba la sintaxis de la variable como se muestra. Este es el nombre de la pila para la que se crea el conjunto de cambios, donde se asigna el espacio de nombres predeterminado `DeployVariables` a la acción.

      ```
      #{DeployVariables.StackName}
      ```

   1. En **Nombre del conjunto de cambios**, escriba el nombre del conjunto de cambios.

      ```
      my-changeset
      ```

   1. En **Sobrescritura de parámetros**, cambie el parámetro `Purpose` de `testing` a `production`.

      ```
      {
      "DBClusterName": "MyDBCluster",
      "DBInstanceName": "MyDBInstance",
      "MasterUser": "UserName",
      "MasterPassword": "Password",
      "DBInstanceClass": "db.r4.large",
      "Purpose": "production"}
      ```

   1. Elija **Listo** para guardar la acción.

## Paso 4: Agregar una acción de aprobación manual
<a name="tutorials-cloudformation-action-approval"></a>

Cree una acción de aprobación manual en la canalización.



1. Elija editar la canalización o continuar mostrando la canalización en el modo **Editar**.

1. Elija editar la etapa **Implementación**.

1. Agregue una acción de aprobación manual después de la acción de implementación que crea el conjunto de cambios. Esta acción le permite verificar el conjunto de cambios de recursos creado CloudFormation antes de que la canalización ejecute el conjunto de cambios.

## Paso 5: Agrega una acción de CloudFormation despliegue para ejecutar el conjunto de cambios
<a name="tutorials-cloudformation-action-deployment"></a>

Cree una acción siguiente en su proceso que CloudFormation permita ejecutar el conjunto de cambios después de la acción de aprobación manual.



1. Abre la CodePipeline consola en [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/).

   En **Canalizaciones**, elija la canalización y luego **Ver**. El diagrama muestra las etapas de código fuente e implementación de la canalización.

1. Elija editar la canalización o continuar mostrando la canalización en el modo **Editar**.

1. Elija editar la etapa **Implementación**.

1. Agregue una acción de implementación que ejecutará el conjunto de cambios aprobado en la acción manual anterior:

   1. En **Nombre de la acción**, escriba **Execute\$1Change\$1Set**. En **Proveedor de acción**, seleccione **AWS CloudFormation**.

   1. En **Artefacto de entrada**, elija **SourceArtifact**.

   1. En **Action mode (Modo de acción)**, elija **Execute a change set (Ejecutar un conjunto de cambios)**.

   1. En **Nombre de la pila**, escriba la sintaxis de la variable como se muestra. Este es el nombre de la pila para la que se crea el conjunto de cambios.

      ```
      #{DeployVariables.StackName}
      ```

   1. En **Nombre del conjunto de cambios**, escriba el nombre del conjunto de cambios que creó en la acción anterior.

      ```
      my-changeset
      ```

   1. Elija **Listo** para guardar la acción.

   1. Continúe la ejecución de la canalización.

## Paso 6: Añade una acción CloudFormation de despliegue para eliminar la pila
<a name="tutorials-cloudformation-action-delete"></a>

Crea una acción final en tu canalización que permita CloudFormation obtener el nombre de la pila a partir de la variable del archivo de resultados y eliminar la pila.



1. Abre la CodePipeline consola en [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/).

   En **Canalizaciones**, elija la canalización y luego **Ver**. El diagrama muestra las etapas de código fuente e implementación de la canalización.

1. Elija esta opción para editar la canalización.

1. Elija editar la etapa **Implementación**.

1. Agregue una acción de implementación que eliminará la pila:

   1. En **Nombre de la acción**, elija **DeleteStack**. En **Deploy provider (Proveedor de implementación)**, elija **CloudFormation**.

   1. En **Modo acción**, elija **Eliminar una pila**.

   1. En **Nombre de la pila**, escriba la sintaxis de la variable como se muestra. Este es el nombre de la pila que la acción eliminará.

   1. Elija **Listo** para guardar la acción.

   1. Elija **Guardar** para guardar la canalización.

   La canalización se ejecuta cuando se guarda.