

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
<a name="actions-create-cross-region"></a>

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 type/provider tipo de acción 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 CodePipeline se admiten. Para obtener una lista de las AWS regiones compatibles CodePipeline, consulte[Cuotas en AWS CodePipeline](limits.md).

Puedes usar la consola o añadir acciones entre regiones 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](reference-pipeline-structure.md).

**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 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 [PutJobFailureResult](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_PutJobFailureResult.html)y debe enviarse a [PutJobSuccessResult](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_PutJobSuccessResult.html)la 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)
<a name="actions-cross-region-console"></a>

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 [Creación de una canalización personalizada (consola)](pipelines-create.md#pipelines-create-console).

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](reference-pipeline-structure.md).

### Agregar una acción entre regiones en una etapa de la canalización (consola)
<a name="actions-cross-region-console-add"></a>

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. Inicia sesión en la consola en [http://console.aws.amazon. com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home).

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

1. En la parte inferior del diagrama, elija **\$1 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.

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

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

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

   1. En **Región**, elige la AWS región en la que has creado o tienes 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 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.

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

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

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

   1. Seleccione **Save**.

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

1. Seleccione **Save**.

### Editar una acción entre regiones en una etapa de la canalización (consola)
<a name="actions-cross-region-console-edit"></a>

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.](https://console.aws.amazon.com/codesuite/codepipeline/home.)

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

1. Elija **Edit stage (Editar etapa)**.

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

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

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

1. Seleccione **Save**.

### Eliminar una acción entre regiones de una etapa de la canalización (consola)
<a name="actions-cross-region-console-delete"></a>

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](https://console.aws.amazon.com/codesuite/codepipeline/home).

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

1. Elija **Edit stage (Editar etapa)**.

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

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

1. Seleccione **Save**.

## Agregar una acción entre regiones a una canalización (CLI)
<a name="actions-cross-region-cli"></a>

Puede utilizarla AWS CLI para añadir una acción interregional 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 opcional`region`. 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 este tutorial y en sus ejemplos, *RegionA* se muestra la región en la que se creó la canalización. Tiene acceso al bucket de *RegionA* Amazon S3 que se utiliza para almacenar los artefactos de la canalización y a la función de servicio que utiliza CodePipeline. *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
<a name="actions-create-cross-region-prereq"></a>

Tiene que haber creado lo siguiente:
+ Una canalización de entrada*RegionA*. 
+ Un artefacto de Amazon S3 agrupado en*RegionB*. 
+ Los recursos para su acción, como la CodeDeploy aplicación y el grupo de implementación para una acción de implementación entre regiones, en. *RegionB*

### Agregar una acción entre regiones a una canalización (CLI)
<a name="actions-create-cross-region-cli"></a>

Úsalo AWS CLI para añadir una acción entre regiones a una canalización.

**Para agregar una acción entre regiones**

1. En el caso de una canalización*RegionA*, ejecuta el **get-pipeline** comando para copiar la estructura de la 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.

1. 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 donde se encuentra el proveedor 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
                       }
   ```

1. 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 siguiente ejemplo, `ID-A` es el identificador de la clave de *RegionA* cifrado y `ID-B` es el identificador de la clave de cifrado de*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"
               }
           },
   ```

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

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

1. 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.\]](http://docs.aws.amazon.com/es_es/codepipeline/latest/userguide/images/cross-region-icon.png)

## Agregar una acción entre regiones a una canalización (CloudFormation)
<a name="actions-create-cross-region-cfn"></a>

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

**Para añadir una acción entre regiones con 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
   ```

1. 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 *RegionA* depósito como `us-west-2` y se añade el nuevo*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
   ```

1. Guarde la plantilla actualizada en el equipo local y luego abra la consola de CloudFormation .

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

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

1. Elija **Ejecutar**.