Tutorial: Crear una canalización que utilice variables a partir de acciones de implementación de AWS CloudFormation - AWS CodePipeline

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 a partir de acciones de implementación de AWS CloudFormation

En este tutorial, se utiliza la consola de AWS CodePipeline para crear una canalización con una acción de implementación. Cuando se ejecuta la canalización, la plantilla crea una pila y también crea un archivo outputs. Las salidas generadas por la plantilla de pila son las variables generadas por la acción de AWS CloudFormation 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 en función de la variable StackName producida por la acción de AWS CloudFormation. 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, CodePipeline utilizará un bucket de artefactos de S3 proporcionado por el cliente para los artefactos. (Es diferente del bucket que se usa para una acción de origen de S3). Si el bucket de artefactos de S3 se encuentra en una cuenta diferente a la cuenta de su canalización, asegúrese de que el bucket de artefactos de S3 pertenezca a Cuentas de AWS que sean seguras y fiables.

Requisitos previos: Crear un rol de servicio de AWS CloudFormation y un repositorio de CodeCommit

Debe disponer de lo siguiente:

  • Un repositorio de CodeCommit. Puede utilizar el repositorio de AWS CodeCommit creado en Tutorial: Crear una canalización sencilla (repositorio de CodeCommit).

  • 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 servicio de AWS CloudFormation con los siguientes permisos para Amazon DocumentDB.

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

Paso 1: Descargar, editar y cargar la plantilla de AWS CloudFormation de ejemplo

Descargue el archivo de plantilla de AWS CloudFormation de ejemplo y cárguelo en su repositorio de CodeCommit.

  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 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.

  2. 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.
    2. Para este ejemplo, agregue el siguiente resultado StackName a la sección Outputs: de la plantilla.

      StackName: Value: !Ref AWS::StackName
  3. Cargue el archivo de plantilla en su repositorio de AWS CodeCommit. Debe cargar el archivo de plantilla descomprimido y editado en el directorio raíz de su repositorio.

    Para utilizar la consola de CodeCommit para cargar los archivos:

    1. Abra la consola de CodeCommit y elija el repositorio en la lista Repositorios.

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

    3. 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

En esta sección, debe crear una canalización con las siguientes acciones:

  • Una fase de origen con una acción de CodeCommit en la que el artefacto de origen es el archivo de plantilla.

  • Una etapa de implementación con una acción de implementación de CloudFormation.

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.

Para crear una canalización con el asistente
  1. Inicie sesión en la Consola de administración de AWS y abra la consola de CodePipeline en http://console.aws.amazon.com/codesuite/codepipeline/home.

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

  3. 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.

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

  5. CodePipeline proporciona canalizaciones 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. Para obtener más información acerca de los precios de CodePipeline, consulte Precios.

  6. En Service role (Rol de servicio), realice una de las operaciones siguientes:

    • Elija Nuevo rol de servicio para permitir que CodePipeline cree un rol 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.

  7. 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.

    2. 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, debe tener un bucket de artefactos en la región de la canalización y un bucket de artefactos en cada región de AWS en la que ejecute una acción.

    Para obtener más información, consulte Artefactos de entrada y salida y CodePipeline referencia de estructura de tubería.

    Elija Siguiente.

  8. En Paso 3: agregar la etapa de origen:

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

    2. En Nombre de repositorio, elija el nombre del repositorio de CodeCommit que ha creado en Paso 1: Crea un CodeCommit repositorio.

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

    Después de seleccionar el nombre y la ramificación del repositorio, se muestra la regla de Eventos de Amazon CloudWatch que se creará para esta canalización.

    Elija Siguiente.

  9. 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.

  10. 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.

  11. En Paso 6: agregar la etapa de implementación:

    1. En Nombre de acción, elija Implementar. En Proveedor de implementación, elija CloudFormation.

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

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

    4. 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.

    5. 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.

    6. Elija Siguiente.

    7. En el Paso 7: revisión, elija Crear la 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: Agregar una acción de implementación de CloudFormation para crear el conjunto de cambios

Cree la acción siguiente en la canalización que permita a CloudFormation crear el conjunto de cambios antes de la acción de aprobación manual.

  1. Abra la consola de CodePipeline en 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.

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

  3. Elija editar la etapa Implementación.

  4. 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_Set. En Proveedor de acción, seleccione AWS CloudFormation .

    2. En Artefacto de entrada, elija SourceArtifact.

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

    4. 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}
    5. En Nombre del conjunto de cambios, escriba el nombre del conjunto de cambios.

      my-changeset
    6. 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"}
    7. Elija Listo para guardar la acción.

Paso 4: Agregar una acción de aprobación manual

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.

  2. Elija editar la etapa Implementación.

  3. 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 comprobar el conjunto de cambios de recursos creado en CloudFormation antes de que la canalización ejecute el conjunto de cambios.

Paso 5: Agregar una acción de implementación de CloudFormation para ejecutar el conjunto de cambios

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

  1. Abra la consola de CodePipeline en 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.

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

  3. Elija editar la etapa Implementación.

  4. 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_Change_Set. En Proveedor de acción, seleccione AWS CloudFormation.

    2. En Artefacto de entrada, elija SourceArtifact.

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

    4. 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}
    5. En Nombre del conjunto de cambios, escriba el nombre del conjunto de cambios que creó en la acción anterior.

      my-changeset
    6. Elija Listo para guardar la acción.

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

Paso 6: Agregar una acción de implementación de CloudFormation para eliminar la pila

Cree una acción final en su canalización que permita a CloudFormation obtener el nombre de la pila de la variable en el archivo de salida y eliminar la pila.

  1. Abra la consola de CodePipeline en 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.

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

  3. Elija editar la etapa Implementación.

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

    1. En Nombre de la acción, elija DeleteStack. En Proveedor de implementación, elija CloudFormation.

    2. En Modo acción, elija Eliminar una pila.

    3. 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á.

    4. Elija Listo para guardar la acción.

    5. Elija Guardar para guardar la canalización.

    La canalización se ejecuta cuando se guarda.