Tutorial: Crear una canalización que utilice variables de las acciones de AWS CloudFormation despliegue - 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 de las acciones de AWS CloudFormation despliegue

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.

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

Debe disponer de lo siguiente:

  • Un CodeCommit repositorio. Puede usar el AWS CodeCommit repositorio en el que creóTutorial: Crear una canalización sencilla (CodeCommitrepositorio).

  • 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

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

  1. Desplácese hasta la página de la plantilla de ejemplo de su región. Por ejemplo, la página de us-west-2 está en https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/sample-templates-services-us-west-2.html. En Amazon DocumentDB, 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. 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.

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

Para crear una canalización con el asistente
  1. Inicie sesión en la CodePipeline consola AWS Management Console y ábrala en http://console.aws.amazon.com/codesuite/codepipeline/home.

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

  3. En Step 1: Choose pipeline settings (Paso 1: Elegir configuración de canalización), en Pipeline name (Nombre de canalización), escriba MyCFNDeployPipeline.

  4. En Tipo de canalización, elija V1 para los fines de este tutorial. También puede elegir V2; sin embargo, tenga en cuenta que los tipos de canalización difieren en cuanto a características y precio. Para obtener más información, consulte Tipos de canalización.

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

  6. 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, 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 y CodePipeline referencia de estructura de tubería.

    Elija Siguiente.

  7. En Paso 2: Agregar una fase de origen:

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

    2. En Nombre del repositorio, elige el nombre del CodeCommit repositorio en el que lo creaste. Paso 1: Crear 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.

    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.

  8. En Step 3: Add build stage (Paso 3: Añadir etapa de compilación), elija Skip build stage (Omitir etapa de compilación) y, a continuación, acepte el mensaje de advertencia eligiendo Skip (Omitir) una vez más.

    Elija Siguiente.

  9. En Step 4: Add deploy stage (Paso 4: Añadir una etapa de implementación):

    1. En Nombre de acción, elija Implementar. En Deploy provider (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. Seleccione Create pipeline. 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ñada una acción de AWS CloudFormation despliegue para crear el conjunto de cambios

Cree una siguiente acción en su proceso que permita AWS 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/.

    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 verificar el conjunto de cambios de recursos creado AWS 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

Cree una acción siguiente en su proceso que AWS 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/.

    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: Añade una acción CloudFormation de despliegue para eliminar la pila

Crea una acción final en tu canalización que permita AWS 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/.

    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 Deploy provider (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.