Adicionar uma ação entre regiões no CodePipeline - AWS CodePipeline

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 no CodePipeline

O AWS CodePipeline inclui uma variedade de ações que ajudam você a configurar a compilação, o teste e os recursos de implantação para seu processo automatizado de liberação. Você pode adicionar ações ao pipeline que estejam em outra região da AWS diferente em seu pipeline. Quando um AWS service (Serviço da AWS) é o provedor de uma ação e esse tipo de ação/tipo de provedor não está na mesma região da AWS que o pipeline, essa é uma ação entre regiões.

nota

As ações entre regiões são compatíveis e só podem ser criadas nas regiões da AWS em que há suporte para o CodePipeline. Para obter uma lista das regiões da AWS compatíveis com o CodePipeline, consulte Cotas no AWS CodePipeline.

Use o console, a AWS CLI ou o AWS CloudFormation para adicionar ações entre regiões nos pipelines.

nota

Determinados tipos de ação no CodePipeline podem estar disponíveis em determinadas regiões da AWS. Observe também que podem haver regiões da AWS em que um tipo de ação está disponível, mas um provedor da AWS específico para esse tipo de ação não está 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 Referência da estrutura do pipeline do CodePipeline.

nota

O CodePipeline lida com a cópia de artefatos de uma região da AWS para outras regiões ao realizar ações entre regiões.

Se você usar o console para criar um pipeline ou ações entre regiões, buckets de artefatos padrão serão configurados pelo CodePipeline nas regiões em que há as ações. Ao usar a AWS CLI, o AWS CloudFormation ou um SDK para criar um pipeline ou ações entre regiões, forneça um bucket de artefatos para cada região em que possui ações.

nota

É necessário criar o bucket de artefatos e a chave de criptografia na mesma região da AWS da ação entre regiões e na mesma conta do 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 do Lambda entre regiões no CodePipeline, o status da execução do lambda com PutJobSuccessResult e PutJobFailureResult deve ser enviado para a região da AWS em que a função do Lambda está presente, e não para a região em que está o CodePipeline.

Quando um pipeline inclui uma ação entre regiões como parte de um estágio, o 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 os recursos de detecção de alterações do CloudWatch Events 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)

Use o console do CodePipeline 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 (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 Referência da estrutura do pipeline do CodePipeline.

Adicionar uma ação entre regiões a um estágio de pipeline (console)

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.

  2. Selecione o pipeline e escolha Edit (Editar).

  3. Na parte inferior do diagrama, escolha + Add stage (+ 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.

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

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

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

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

    3. Em Região, escolha a região da AWS 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 o local em que os recursos da AWS serão criados para esse tipo de ação e 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.

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

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

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

    7. Escolha Save (Salvar).

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

  7. Escolha Save (Salvar).

Editar uma ação entre regiões em um estágio de pipeline (console)

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.

  2. Selecione o pipeline e escolha Edit (Editar).

  3. Selecione Edit stage (Editar estágio).

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

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

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

  7. Escolha Save (Salvar).

Excluir uma ação entre regiões de um estágio de pipeline (console)

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.

  2. Selecione o pipeline e escolha Edit (Editar).

  3. Selecione Edit stage (Editar estágio).

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

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

  6. Escolha Save (Salvar).

Adicionar uma ação entre regiões a um pipeline (CLI)

É possível usar a 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 do pipeline com a AWS CLI, adicione a ação de configuração com um campo region 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

Nesta demonstração e seus exemplos, RegionA é a região em que o pipeline é criado. Ela tem acesso ao bucket RegionA do Amazon S3 usado para armazenar os artefatos do pipeline e o perfil de serviço usados pelo CodePipeline. RegionB é a região em que são criados a aplicação do CodeDeploy, o grupo de implantação e o perfil de serviço usado pelo CodeDeploy.

Pré-requisitos

É necessário criar os seguintes itens:

  • Um pipeline em RegionA.

  • Um bucket de artefatos do Amazon S3 em RegionB.

  • Os recursos para a ação, como a aplicação do CodeDeploy e o 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)

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

Adicionar uma ação entre regiões
  1. Para um pipeline na RegiãoA, execute o comando get-pipeline 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.

  2. 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 seguinte exemplo JSON adiciona um estágio de implantação com uma ação de implantação entre regiões na qual o provedor é o 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 }
  3. 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 região da AWS em que você tem ações. Para cada entrada do mapeamento, os recursos devem estar na respectiva região da AWS. No exemplo abaixo, ID-A é o ID da chave de criptografia para a RegionA e ID-B é o ID da chave de criptografia para a 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" } },
  4. 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.

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

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

Adicionar uma ação entre regiões a um pipeline (AWS CloudFormation)

É possível usar o AWS CloudFormation para adicionar uma ação entre regiões a um pipeline existente.

Como adicionar uma ação entre regiões com o AWS 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
  2. 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 exibe o bucket da RegiãoA como us-west-2 e adiciona o novo bucket da RegiãoB, 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. Salve o modelo atualizado em seu computador local e abra o console do AWS CloudFormation.

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

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

  6. Escolha Executar.