Añadir una acción interregional 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.

Añadir una acción interregional en CodePipeline

AWS CodePipeline incluye una serie de acciones que le ayudan a configurar los recursos de compilación, prueba e implementación para su proceso de lanzamiento automatizado. Puedes añadir acciones a tu canalización que estén en una AWS región distinta de la tuya. Cuando un Servicio de AWS es el proveedor de una acción y este tipo de acción o proveedor se encuentra en una AWS región diferente a la de tu cartera, se trata de una acción interregional.

nota

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

Puedes usar la consola o añadir acciones entre regiones AWS CloudFormation a las canalizaciones. AWS CLI

nota

CodePipeline Es posible que algunos tipos de acciones solo estén disponibles en determinadas AWS regiones. Ten en cuenta también que puede haber AWS regiones en las que esté disponible un tipo de acción, pero no haya un AWS proveedor especí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 se encarga de copiar artefactos de una AWS región a otra cuando se realizan acciones entre regiones.

Si utilizas la consola para crear una canalización o acciones entre regiones, los grupos de artefactos predeterminados los configuran las regiones CodePipeline en las que tienes las acciones. Cuando utilizas el AWS CLI AWS CloudFormation, o un SDK para crear una canalización o acciones entre regiones, proporcionas el depósito de artefactos para cada región en la que tengas acciones.

nota

Debes crear el depósito de artefactos y la clave de cifrado en la misma AWS región que la acción entre regiones y en la misma cuenta que tu 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, el estado de la ejecución de lambda mediante PutJobFailureResulty debe enviarse a PutJobSuccessResultla AWS región CodePipeline en la que está presente la función Lambda y no a la región en la que existe. CodePipeline

Cuando una canalización incluye una acción interregional como parte de una etapa, solo CodePipeline replica los elementos de entrada de la acción transregional desde la región de la canalización a la región de la acción.

nota

La región en proceso y la región en la que se guardan tus recursos de detección de cambios en los CloudWatch eventos 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)

Puedes usar la CodePipeline consola para añadir 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 Crear una canalización (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. Al añadir una acción entre regiones, CodePipeline utiliza un depósito de artefactos independiente 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, elige la AWS región en la que has creado o tienes pensado 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 AWS recursos para este tipo de acción y tipo 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 origen, 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 siguiente etapa es una etapa de despliegue, 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 utilizarla AWS CLI para añadir una acción entre regiones a una canalización existente.

Para crear una acción entre regiones en una fase de proceso con la AWS CLI, añada la acción de configuración junto con un campo opcionalregion. 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 a la región: un bucket de Amazon S3 que se utiliza para almacenar los artefactos de la canalización y a la función de servicio que utiliza. CodePipeline La RegionB es la región en la que se crean la CodeDeploy aplicación, el grupo de implementación y el rol de servicio CodeDeploy que utilizan.

Requisitos previos

Tiene que haber creado lo siguiente:

  • Una canalización en RegionA.

  • Un bucket de artefactos de Amazon S3 en RegionB.

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

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

Úsalo AWS CLI para añadir 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 añade una etapa de despliegue con una acción de despliegue entre regiones en las que el proveedor se encuentra 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. El mapeo debe incluir una entrada para cada AWS región en la que tengas acciones. Para cada entrada del mapeo, los recursos deben estar en la AWS región 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)

Se puede utilizar AWS CloudFormation para añadir una acción entre regiones a una canalización existente.

Para añadir 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.