

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Adicionar uma ação entre regiões em CodePipeline
<a name="actions-create-cross-region"></a>

AWS CodePipeline inclui várias ações que ajudam você a configurar recursos de criação, teste e implantação para seu processo de lançamento automatizado. Você pode adicionar ações ao seu funil que estejam em uma AWS região diferente do seu funil. Quando an AWS service (Serviço da AWS) é o provedor de uma ação e esse type/provider tipo de ação está em uma AWS região diferente do seu pipeline, essa é uma ação entre regiões. 

**nota**  
As ações entre regiões são suportadas e só podem ser criadas nas AWS regiões em que CodePipeline são suportadas. Para obter uma lista das AWS regiões com suporte para CodePipeline, consulte[Cotas no AWS CodePipeline.](limits.md).

Você pode usar o console ou CloudFormation adicionar ações entre regiões em pipelines. AWS CLI

**nota**  
Certos tipos de ação CodePipeline podem estar disponíveis somente em determinadas AWS regiões. Observe também que pode haver AWS regiões em que um tipo de ação esteja disponível, mas um AWS provedor específico para esse tipo de ação não esteja disponível.

Ao criar ou editar um pipeline, é necessário ter um bucket de artefato na região do pipeline e ter um bucket de artefato por região em que planeja executar uma ação. Para obter mais informações sobre o parâmetro `ArtifactStores`, consulte [CodePipeline referência de estrutura de tubulação](reference-pipeline-structure.md).

**nota**  
CodePipeline manipula a cópia de artefatos de uma AWS região para outras regiões ao realizar ações entre regiões.

Se você usa o console para criar um pipeline ou ações entre regiões, os buckets de artefatos padrão são configurados nas regiões CodePipeline em que você tem ações. Ao usar o AWS CLI, CloudFormation, ou um SDK para criar um pipeline ou ações entre regiões, você fornece o repositório de artefatos para cada região em que você tem ações. 

**nota**  
Você deve criar o repositório de artefatos e a chave de criptografia na mesma AWS região da ação entre regiões e na mesma conta do seu pipeline.

Não é possível criar ações entre regiões para os seguintes tipos de ação:
+ Ações de origem
+ Ações de terceiros
+ Ações personalizadas

**nota**  
Ao usar a ação de invocação Lambda entre regiões CodePipeline em, o status da execução lambda usando o [PutJobFailureResult](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_PutJobFailureResult.html)e deve ser enviado para [PutJobSuccessResult](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_PutJobSuccessResult.html)a AWS região em que a função Lambda está presente e não para a região onde existe. CodePipeline 

Quando um pipeline inclui uma ação entre regiões como parte de um estágio, CodePipeline replica somente os artefatos de entrada da ação entre regiões da região do pipeline para a região da ação.

**nota**  
A região do pipeline e a região em que seus recursos de detecção de alterações de CloudWatch eventos são mantidos permanecem as mesmas. A região em que o pipeline é hospedado não se altera.



## Gerenciar ações entre regiões em um pipeline (console)
<a name="actions-cross-region-console"></a>

Você pode usar o CodePipeline console para adicionar uma ação entre regiões a um pipeline existente. Para criar um novo pipeline com ações entre regiões usando o assistente Criar pipeline, consulte [Criar um pipeline personalizado (console)](pipelines-create.md#pipelines-create-console).

No console, crie uma ação entre regiões em um estágio do pipeline escolhendo o provedor da ação e o campo **Região**, que lista os recursos criados nessa região para esse provedor. Ao adicionar uma ação entre regiões, o CodePipeline usa um bucket de artefatos separado na região da ação. Para obter mais informações sobre buckets de artefatos entre regiões, consulte [CodePipeline referência de estrutura de tubulação](reference-pipeline-structure.md).

### Adicionar uma ação entre regiões a um estágio de pipeline (console)
<a name="actions-cross-region-console-add"></a>

Use o console para adicionar uma ação entre regiões a um pipeline.

**nota**  
Se o pipeline estiver em execução quando as alterações forem salvas, essa execução não será concluída.

**Adicionar uma ação entre regiões**

1. Faça login no console em [http://console.aws.amazon. com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home).

1. Selecione o pipeline e escolha **Edit (Editar)**.

1. Na parte inferior do diagrama, escolha **\$1 Add stage (\$1 Adicionar estágio)** se estiver adicionando um novo estágio ou escolha **Edit stage (Editar estágio)** se quiser adicionar a ação a um estágio existente.

1. Em **Edit: <Stage> (Editar: <estágio>)**, escolha **\$1 Add action group (\$1 Adicionar grupo de ações)** para adicionar uma ação serial. Ou escolha **\$1 Add action (\$1 Adicionar ação)** para adicionar uma ação paralela.

1. Na página **Edit action (Editar ação)**:

   1. Em **Nome da ação**, insira um nome para a ação entre regiões.

   1. Em **Action provider (Provedor de ação)**, escolha o provedor de ação.

   1. Em **Região**, escolha a AWS região em que você criou ou planeja criar o recurso para a ação. Quando a região for selecionada, os recursos disponíveis para essa região serão listados para seleção. O campo **Região** designa onde os AWS recursos são criados para esse tipo de ação e tipo de provedor. Esse campo é exibido apenas para ações em que o provedor de ação é um AWS service (Serviço da AWS). O campo **Região** assume como valor padrão a mesma Região da AWS do seu pipeline.

   1. Em **Input artifacts (Artefatos de entrada)** escolha a entrada adequada do estágio anterior. Por exemplo, se o estágio anterior for um estágio de origem, escolha **SourceArtifact**.

   1. Preencha todos os campos obrigatórios para o provedor de ação que está configurando.

   1. Em **Output artifacts (Artefatos de saída)** escolha a saída adequada para o próximo estágio. Por exemplo, se o próximo estágio for um estágio de implantação, escolha **BuildArtifact**.

   1. Escolha **Salvar**.

1. Em **Edit: <Stage> (Editar: <estágio>)**, escolha **Done (Concluído)**.

1. Escolha **Salvar**.

### Editar uma ação entre regiões em um estágio de pipeline (console)
<a name="actions-cross-region-console-edit"></a>

Use o console para editar uma ação entre regiões existente em um pipeline.

**nota**  
Se o pipeline estiver em execução quando as alterações forem salvas, essa execução não será concluída.

**Como editar uma ação entre regiões**

1. Faça login no console em [https://console.aws.amazon.com/codesuite/codepipeline/home.](https://console.aws.amazon.com/codesuite/codepipeline/home.)

1. Selecione o pipeline e escolha **Edit (Editar)**.

1. Selecione **Edit stage (Editar estágio)**.

1. Em **Edit: <Stage> (Editar: <estágio>)**, escolha o ícone para editar uma ação existente.

1. Na página **Edit action (Editar ação)**, faça alterações nos campos, conforme apropriado.

1. Em **Edit: <Stage> (Editar: <estágio>)**, escolha **Done (Concluído)**.

1. Escolha **Salvar**.

### Excluir uma ação entre regiões de um estágio de pipeline (console)
<a name="actions-cross-region-console-delete"></a>

Use o console para excluir uma ação entre regiões existente de um pipeline.

**nota**  
Se o pipeline estiver em execução quando as alterações forem salvas, essa execução não será concluída.

**Como excluir uma ação entre regiões**

1. Faça login no console em [http://console.aws.amazon. com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home).

1. Selecione o pipeline e escolha **Edit (Editar)**.

1. Selecione **Edit stage (Editar estágio)**.

1. Em **Edit: <Stage> (Editar: <estágio>)**, escolha o ícone para excluir uma ação existente.

1. Em **Edit: <Stage> (Editar: <estágio>)**, escolha **Done (Concluído)**.

1. Escolha **Salvar**.

## Adicionar uma ação entre regiões a um pipeline (CLI)
<a name="actions-cross-region-cli"></a>

Você pode usar o AWS CLI para adicionar uma ação entre regiões a um pipeline existente.

Para criar uma ação entre regiões em um estágio de pipeline com o AWS CLI, você adiciona a ação de configuração junto com um `region` campo opcional. É necessário já ter criado um bucket de artefatos na região da ação. Em vez de fornecer o parâmetro `artifactStore` do pipeline de região única, use o parâmetro `artifactStores` para incluir uma listagem de cada bucket de artefatos da região.

**nota**  
Neste passo a passo e em seus exemplos, *RegionA* está a região onde o gasoduto é criado. Ele tem acesso ao bucket do *RegionA* Amazon S3 usado para armazenar artefatos do pipeline e à função de serviço usada por. CodePipeline *RegionB*é a região em que o CodeDeploy aplicativo, o grupo de implantação e a função de serviço usados pelo CodeDeploy são criados. 

### Pré-requisitos
<a name="actions-create-cross-region-prereq"></a>

É necessário criar os seguintes itens:
+ Uma tubulação de entrada*RegionA*. 
+ Um repositório de artefatos do Amazon S3 em. *RegionB* 
+ Os recursos para sua ação, como seu CodeDeploy aplicativo e grupo de implantação para uma ação de implantação entre regiões, em*RegionB*.

### Adicionar uma ação entre regiões a um pipeline (CLI)
<a name="actions-create-cross-region-cli"></a>

Use o AWS CLI para adicionar uma ação entre regiões a um pipeline.

**Adicionar uma ação entre regiões**

1. Para um pipeline em*RegionA*, execute o **get-pipeline** comando para copiar a estrutura do pipeline em um arquivo JSON. Por exemplo, para um pipeline nomeado `MyFirstPipeline`, execute o seguinte comando: 

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

   Este comando retorna nada, mas o arquivo que você criou deve aparecer no diretório onde você executou o comando.

1. Adicione o campo `region` para adicionar um novo estágio com a ação entre regiões que inclui a região e os recursos para sua ação. O exemplo de JSON a seguir adiciona um estágio de implantação com uma ação de implantação entre regiões onde o provedor está CodeDeploy, em uma nova região. `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. Na estrutura do pipeline, remova o campo `artifactStore` e adicione o mapa `artifactStores` para a nova ação entre regiões. O mapeamento deve incluir uma entrada para cada AWS região na qual você tem ações. Para cada entrada no mapeamento, os recursos devem estar na respectiva AWS região. No exemplo abaixo, `ID-A` é a ID da chave de criptografia para*RegionA*, e `ID-B` é a ID da chave de criptografia 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"
      }
   }
   ```

   O exemplo de JSON a seguir exibe o bucket da us-west-2 como `my-storage-bucket` e adiciona o novo bucket da us-east-1 chamado `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. Se você estiver trabalhando com a estrutura do pipeline recuperada por meio do comando **get-pipeline**, remova as linhas `metadata` do arquivo JSON. Caso contrário, o comando **update-pipeline** não é capaz de utilizá-la. Remova as linhas `"metadata": { }`, `"created"`, `"pipelineARN"` e os campos `"updated"`.

   Por exemplo, remova as seguintes linhas da estrutura: 

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

   Salve o arquivo.

1. Para aplicar suas alterações, execute o comando **update-pipeline** especificando o arquivo JSON do pipeline:
**Importante**  
Não se esqueça de incluir `file://` antes do nome de arquivo. Ele é obrigatório nesse comando.

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

   Este comando retorna toda a estrutura do pipeline editado. A saída é semelhante à seguinte.

   ```
   {
       "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**  
O comando **update-pipeline** interrompe o pipeline. Se uma revisão estiver sendo executada pelo pipeline quando você executar o comando **update-pipeline**, essa execução será interrompida. Você deve iniciar manualmente o pipeline para executar a revisão através do pipeline atualizado. Use o comando **`start-pipeline-execution`** para iniciar manualmente o pipeline.

1. Após atualizar o pipeline, a ação entre regiões é exibida no console.  
![\[Uma exibição de alto nível de um pipeline que inclui uma ação entre regiões.\]](http://docs.aws.amazon.com/pt_br/codepipeline/latest/userguide/images/cross-region-icon.png)

## Adicionar uma ação entre regiões a um pipeline (CloudFormation)
<a name="actions-create-cross-region-cfn"></a>

Você pode usar CloudFormation para adicionar uma ação entre regiões a um pipeline existente.

**Para adicionar uma ação entre regiões com CloudFormation**

1. Adicione o parâmetro `Region` ao recurso `ActionDeclaration` em seu modelo, conforme mostrado no exemplo a seguir:

   ```
   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. Em `Mappings`, adicione o mapa de região como mostrado neste exemplo para um mapeamento chamado `SecondRegionMap` que mapeia valores para as chaves `RegionA` e `RegionB`. No recurso `Pipeline`, no campo `artifactStore`, adicione o mapa `artifactStores` para a nova ação entre regiões da seguinte forma:

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

   O exemplo de YAML a seguir mostra o *RegionA* bucket como `us-west-2` e adiciona o novo *RegionB* bucket: `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. Salve o modelo atualizado em seu computador local e abra o console do CloudFormation .

1. Selecione sua pilha e clique em **Create Change Set for Current Stack (Criar conjunto de alterações para a pilha atual)**. 

1. Carregue o modelo e visualize as alterações listadas no CloudFormation. Essas são as alterações a serem feitas na pilha. Seus novos recursos devem ser exibidos na lista.

1. Clique em **Executar**.