Agregar una acción entre regiones en CodePipeline - 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.

Agregar una acción entre regiones en CodePipeline

AWS CodePipeline incluye una serie de acciones que le ayudarán a configurar recursos de compilación, pruebas e implementación para el proceso de lanzamiento automatizado. Puede añadir a una canalización acciones que se encuentren en una región de AWS diferente a la de la canalización. Cuando un Servicio de AWS es el proveedor de una acción y este tipo de acción o de proveedor se encuentran en una región de AWS diferente a la de la canalización, se trata de una acción entre regiones.

nota

Se admiten acciones entre regiones y solo se pueden crear en las regiones de AWS en las que se admite CodePipeline. Para obtener una lista de las regiones de AWS compatibles, consulte Cuotas en AWS CodePipeline.

Puede utilizar la consola, AWS CLI o AWS CloudFormation para agregar acciones entre regiones a las canalizaciones.

nota

Es posible que algunos tipos de acciones de CodePipeline solo estén disponibles en determinadas regiones de AWS. Tenga en cuenta también que puede haber regiones de AWS en las que esté disponible un tipo de acción, pero no así un proveedor de AWSespecífico para ese tipo de acción.

Al crear o editar una canalización, debe tener un bucket de artefactos en la región de la canalización, así como un bucket de artefactos por cada región en la que tiene previsto ejecutar una acción. Para obtener más información sobre el parámetro ArtifactStores, consulte CodePipeline referencia de estructura de tubería.

nota

CodePipeline gestiona la copia de artefactos de una región de AWS a otras regiones al realizar acciones entre regiones.

Si utiliza la consola para crear una canalización o acciones entre regiones, los buckets de artefactos predeterminados los configurará CodePipeline en las regiones en las que estén las acciones. Si utiliza la AWS CLI, AWS CloudFormation o un SDK para crear una canalización o acciones entre regiones, tendrá que proporcionar el bucket de artefactos en cada región en la que tenga acciones.

nota

Debe crear el bucket de artefactos y la clave de cifrado en la misma región de AWS que la acción entre regiones y en la misma cuenta que la canalización.

No puede crear acciones entre regiones para los siguientes tipos de acciones:

  • Acciones de código fuente

  • Acciones de terceros

  • Acciones personalizadas

nota

Cuando se utiliza la acción de invocación de Lambda entre regiones en CodePipeline, el estado de la ejecución de lambda mediante PutJobSuccessResult y PutJobFailureResult debe enviarse a la región AWS en la que está presente la función de Lambda y no a la región en la que existe CodePipeline.

Si una acción entre regiones forma parte de una etapa de la canalización, CodePipeline solo replicará los artefactos de entrada de esa acción entre regiones desde la región de la canalización en la región de la acción.

nota

La región de la canalización y la región en la que se mantienen los recursos de detección de cambios de Eventos de CloudWatch siguen siendo las mismas. La región en la que se aloja la canalización no cambia.

Administrar acciones entre regiones en una canalización (consola)

Puede utilizar la consola de CodePipeline para agregar una acción entre regiones a una canalización existente. Para crear una nueva canalización con acciones entre regiones utilizando el asistente de creación de canalizaciones, consulte Creación de una canalización personalizada (consola).

En la consola, para crear una acción entre regiones en una etapa de la canalización, debe elegir el proveedor de la acción y el campo Región, donde aparecerán los recursos que haya creado en esa región para dicho proveedor. Cuando se agrega una acción entre regiones, CodePipeline utiliza un bucket de artefactos diferente en la región de la acción. Para obtener más información sobre los buckets de artefactos entre regiones, consulte CodePipeline referencia de estructura de tubería.

Agregar una acción entre regiones en una etapa de la canalización (consola)

Utilice la consola para agregar una acción entre regiones a una canalización.

nota

Si la canalización se está ejecutando al guardar los cambios, esa ejecución no se completa.

Para agregar una acción entre regiones
  1. Inicie sesión en la consola en http://console.aws.amazon.com/codesuite/codepipeline/home.

  2. Seleccione la canalización y, a continuación, elija Edit (Editar).

  3. En la parte inferior del diagrama, elija + Add stage (Añadir etapa) si va a añadir una etapa nueva o elija Edit stage (Editar etapa) si desea añadir la acción a una etapa existente.

  4. En Edit: <Stage> (Editar: <etapa>), elija + Add action group (Añadir grupo de acciones) para añadir una acción en serie. O elija + Add action (Añadir acción) para añadir una acción en paralelo.

  5. En la página Edit action (Editar acción):

    1. En Nombre de la acción, escriba el nombre de la acción entre regiones.

    2. En Action provider (Proveedor de acción), elija el proveedor de la acción.

    3. En Región, elija la región de AWS en la que ha creado o tiene previsto crear el recurso para la acción. Al seleccionar la región, los recursos disponibles para esa región se muestran para su selección. El campo Región designa dónde se crean los recursos de AWS para este tipo de acción y de proveedor. Este campo solo se muestra en el caso de las acciones en las que el proveedor de la acción es un Servicio de AWS. El campo Región se establece de forma predeterminada en la misma Región de AWS que la canalización.

    4. En Input artifacts (Artefactos de entrada), elija la entrada apropiada de la etapa anterior. Por ejemplo, si la etapa anterior es una etapa de código fuente, elija SourceArtifact.

    5. Rellene todos los campos obligatorios para el proveedor de la acción que está configurando.

    6. En Output artifacts (Artefactos de salida), elija la salida apropiada para la etapa siguiente. Por ejemplo, si la etapa siguiente es una etapa de implementación, elija BuildArtifact.

    7. Seleccione Guardar.

  6. En Edit: <Stage> (Editar: <etapa>), elija Done (Listo).

  7. Seleccione Guardar.

Editar una acción entre regiones en una etapa de la canalización (consola)

Utilice la consola para editar una acción entre regiones existente en una canalización.

nota

Si la canalización se está ejecutando al guardar los cambios, esa ejecución no se completa.

Para editar una acción entre regiones
  1. Inicie sesión en la consola en https://console.aws.amazon.com/codesuite/codepipeline/home.

  2. Seleccione la canalización y, a continuación, elija Edit (Editar).

  3. Elija Edit stage (Editar etapa).

  4. En Edit: <Stage> (Editar: <etapa>), elija el icono para editar una acción existente.

  5. En la página Edit action (Editar acción), realice los cambios oportunos en los campos.

  6. En Edit: <Stage> (Editar: <etapa>), elija Done (Listo).

  7. Seleccione Guardar.

Eliminar una acción entre regiones de una etapa de la canalización (consola)

Utilice la consola para eliminar una acción entre regiones existente de una canalización.

nota

Si la canalización se está ejecutando al guardar los cambios, esa ejecución no se completa.

Para eliminar una acción entre regiones
  1. Inicie sesión en la consola en http://console.aws.amazon.com/codesuite/codepipeline/home.

  2. Seleccione la canalización y, a continuación, elija Edit (Editar).

  3. Elija Edit stage (Editar etapa).

  4. En Edit: <Stage> (Editar: <etapa>), elija el icono para eliminar una acción existente.

  5. En Edit: <Stage> (Editar: <etapa>), elija Done (Listo).

  6. Seleccione Guardar.

Agregar una acción entre regiones a una canalización (CLI)

Puede utilizar AWS CLI para agregar una acción entre regiones a una canalización existente.

Para crear una acción entre regiones en una etapa de la canalización a través de la AWS CLI, agregue la acción de configuración junto con un campo region opcional. Asimismo, debe haber creado un bucket de artefactos en la región de la acción. En lugar de proporcionar el parámetro artifactStore de la canalización de región única, utilice el parámetro artifactStores para incluir un listado de los buckets de artefactos de cada región.

nota

En esta guía y en sus ejemplos, RegionA es la región en la que se crea la canalización. Tiene acceso al bucket de Amazon S3 RegionA para almacenar artefactos de canalización y al rol de servicio que usa CodePipeline. RegionB es la región donde se crean la aplicación, el grupo de implementaciones y el rol de servicio de CodeDeploy que utiliza CodeDeploy.

Requisitos previos

Tiene que haber creado lo siguiente:

  • Una canalización en RegionA.

  • Un bucket de artefactos de Amazon S3 en RegionB.

  • Los recursos de la acción, como la aplicación de CodeDeploy y el grupo de implementaciones de una acción de implementación entre regiones, en RegionB.

Agregar una acción entre regiones a una canalización (CLI)

Utilice AWS CLI para agregar una acción entre regiones a una canalización.

Para agregar una acción entre regiones
  1. Para una canalización en RegionA, ejecute el comando get-pipeline para copiar la estructura de canalización en un archivo JSON. Por ejemplo, para una canalización denominada MyFirstPipeline, escriba el siguiente comando:

    aws codepipeline get-pipeline --name MyFirstPipeline >pipeline.json

    Este comando no devuelve nada, pero el archivo creado debería aparecer en el directorio en el que se ejecutó el comando.

  2. Agregue el campo region para incorporar una nueva etapa con la acción entre regiones que incluya la región y los recursos de la acción. En el siguiente ejemplo de JSON, se agrega una etapa de implementación con una acción de implementación entre regiones, donde el proveedor es CodeDeploy, en una nueva región us-east-1.

    { "name": "Deploy", "actions": [ { "inputArtifacts": [ { "name": "SourceArtifact" } ], "name": "Deploy", "region": "RegionB", "actionTypeId": { "category": "Deploy", "owner": "AWS", "version": "1", "provider": "CodeDeploy" }, "outputArtifacts": [], "configuration": { "ApplicationName": "name", "DeploymentGroupName": "name" }, "runOrder": 1 }
  3. En la estructura de la canalización, elimine el campo artifactStore y agregue la asignación de artifactStores para la nueva acción entre regiones. La asignación debe incluir una entrada para cada región de AWS en la que tenga acciones. Para cada entrada en el mapeo, los recursos deben estar en la región de AWS correspondiente. En el ejemplo siguiente, ID-A es el ID de clave de cifrado para RegionA e ID-B es el ID de clave de cifrado para RegionB.

    "artifactStores":{ "RegionA":{ "encryptionKey":{ "id":"ID-A", "type":"KMS" }, "location":"Location1", "type":"S3" }, "RegionB":{ "encryptionKey":{ "id":"ID-B", "type":"KMS" }, "location":"Location2", "type":"S3" } }

    En el ejemplo siguiente de JSON se muestra el bucket de us-west-2 como my-storage-bucket y añade el nuevo bucket de us-east-1 denominado my-storage-bucket-us-east-1.

    "artifactStores": { "us-west-2": { "type": "S3", "location": "my-storage-bucket" }, "us-east-1": { "type": "S3", "location": "my-storage-bucket-us-east-1" } },
  4. Si está trabajando con la estructura de la canalización recuperada mediante el comando get-pipeline, elimine las líneas metadata del archivo JSON. De lo contrario, el comando update-pipeline no puede utilizarlo. Elimine las líneas "metadata": { } y los campos "updated", "created" y "pipelineARN".

    Por ejemplo, quite las siguientes líneas de la estructura:

    "metadata": { "pipelineArn": "arn:aws:codepipeline:region:account-ID:pipeline-name", "created": "date", "updated": "date" }

    Guarde el archivo.

  5. Para aplicar los cambios, ejecute el comando update-pipeline especificando el archivo JSON:

    importante

    Asegúrese de incluir file:// antes del nombre de archivo. Es obligatorio en este comando.

    aws codepipeline update-pipeline --cli-input-json file://pipeline.json

    Este comando devuelve la estructura completa de la canalización editada. El resultado es similar al siguiente.

    { "pipeline": { "version": 4, "roleArn": "ARN", "stages": [ { "name": "Source", "actions": [ { "inputArtifacts": [], "name": "Source", "actionTypeId": { "category": "Source", "owner": "AWS", "version": "1", "provider": "CodeCommit" }, "outputArtifacts": [ { "name": "SourceArtifact" } ], "configuration": { "PollForSourceChanges": "false", "BranchName": "main", "RepositoryName": "MyTestRepo" }, "runOrder": 1 } ] }, { "name": "Deploy", "actions": [ { "inputArtifacts": [ { "name": "SourceArtifact" } ], "name": "Deploy", "region": "us-east-1", "actionTypeId": { "category": "Deploy", "owner": "AWS", "version": "1", "provider": "CodeDeploy" }, "outputArtifacts": [], "configuration": { "ApplicationName": "name", "DeploymentGroupName": "name" }, "runOrder": 1 } ] } ], "name": "AnyCompanyPipeline", "artifactStores": { "us-west-2": { "type": "S3", "location": "my-storage-bucket" }, "us-east-1": { "type": "S3", "location": "my-storage-bucket-us-east-1" } } } }
    nota

    El comando update-pipeline detiene la canalización. Si se está ejecutando una revisión en la canalización al ejecutar el comando update-pipeline, dicha ejecución se detiene. Debe iniciar manualmente la canalización para ejecutar dicha revisión en la canalización actualizada. Utilice el comando start-pipeline-execution para iniciar manualmente la canalización.

  6. Después de actualizar la canalización, la acción entre regiones aparecerá en la consola.

    Vista general de una canalización que incluye una acción entre regiones.

Agregar una acción entre regiones a una canalización (AWS CloudFormation)

Puede usar AWS CloudFormation para agregar una acción entre regiones a una canalización existente.

Para agregar una acción entre regiones con AWS CloudFormation
  1. Añada el parámetro Region al recurso ActionDeclaration en la plantilla, tal y como se muestra en este ejemplo:

    ActionDeclaration: Type: Object Properties: ActionTypeId: Type: ActionTypeId Required: true Configuration: Type: Map InputArtifacts: Type: Array ItemType: Type: InputArtifact Name: Type: String Required: true OutputArtifacts: Type: Array ItemType: Type: OutputArtifact RoleArn: Type: String RunOrder: Type: Integer Region: Type: String
  2. En Mappings, añada el mapa de región como se muestra en este ejemplo para una asignación denominada SecondRegionMap que asigne valores a las claves RegionA y RegionB. En el recurso Pipeline, en el campo artifactStore, agregue la asignación de artifactStores para la nueva acción entre regiones, tal y como se indica a continuación:

    Mappings: SecondRegionMap: RegionA: SecondRegion: "RegionB" RegionB: SecondRegion: "RegionA" ... Properties: ArtifactStores: - Region: RegionB ArtifactStore: Type: "S3" Location: test-cross-region-artifact-store-bucket-RegionB - Region: RegionA ArtifactStore: Type: "S3" Location: test-cross-region-artifact-store-bucket-RegionA

    En el siguiente ejemplo de YAML, se muestra el bucket RegionA como us-west-2 y se añade el nuevo bucket RegionB, eu-central-1:

    Mappings: SecondRegionMap: us-west-2: SecondRegion: "eu-central-1" eu-central-1: SecondRegion: "us-west-2" ... Properties: ArtifactStores: - Region: eu-central-1 ArtifactStore: Type: "S3" Location: test-cross-region-artifact-store-bucket-eu-central-1 - Region: us-west-2 ArtifactStore: Type: "S3" Location: test-cross-region-artifact-store-bucket-us-west-2
  3. Guarde la plantilla actualizada en el equipo local y luego abra la consola de AWS CloudFormation.

  4. Seleccione la pila y luego elija Create Change Set for Current Stack (Crear conjuntos de cambios para la pila actual).

  5. Cargue la plantilla y, a continuación, consulte los cambios indicados en AWS CloudFormation. Estos son los cambios que se realizan en la pila. Debería ver los nuevos recursos en la lista.

  6. Elija Ejecutar.