Implante código em várias AWS regiões usando AWS CodePipeline, AWS CodeCommit, e AWS CodeBuild - Recomendações da AWS

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

Implante código em várias AWS regiões usando AWS CodePipeline, AWS CodeCommit, e AWS CodeBuild

Criado por Anand Krishna Varanasi () AWS

Criado por: AWS

Ambiente: PoC ou piloto

Tecnologias: Gestão e governança; DevOps

AWSserviços: AWS CodeCommit AWS CodePipeline; AWS CodeBuild

Resumo

Esse padrão demonstra como criar infraestrutura ou arquitetura em várias regiões da Amazon Web Services (AWS) usando AWS CloudFormation. Inclui integração contínua (CI) /implantação contínua (CD) em várias AWS regiões para implantações mais rápidas. As etapas desse padrão foram testadas para a criação de um AWS CodePipeline trabalho a ser implantado em três AWS regiões, como exemplo. Você pode alterar o número de regiões com base no caso de uso.

Pré-requisitos e limitações

Pré-requisitos

  • Uma conta da AWS ativa.

  • Duas funções de AWS Identity and Access Management (IAM) para AWS CodeBuild e AWS CloudFormation com políticas adequadas CodeBuild para realizar as tarefas de CI de testar, agrupar, empacotar os artefatos e implantá-los AWS em várias regiões em paralelo.  Nota: Verifique as políticas criadas por CodePipeline para verificar isso CodeBuild e AWS CloudFormation ter as permissões adequadas nas fases de CI e CD.

    • Uma CodeBuild função com o AmazonS3 FullAccess e as políticas. CloudWatchFullAccess Essas políticas dão CodeBuild acesso para assistir eventos AWS CodeCommit por meio da Amazon CloudWatch e usar o Amazon Simple Storage Service (Amazon S3) como um armazenamento de artefatos.

    • Uma AWS CloudFormation função com as seguintes políticas, que oferecem AWS CloudFormation, no estágio final de criação, a capacidade de criar ou atualizar funções do AWS Lambda, enviar ou monitorar CloudWatch registros da Amazon e criar e atualizar conjuntos de alterações. 

      • AWSLambdaFullAccess

      • AWSCodeDeployFullAccess

      • CloudWatchFullAccess

      • AWSCloudFormationFullAccess

      • AWSCodePipelineFullAccess

Arquitetura

Um AWS CodePipeline trabalho que é implantado em três AWS regiões.

A arquitetura e o fluxo de trabalho de várias regiões deste padrão abrangem as etapas a seguir.

  1. Você envia seu código para um CodeCommit repositório.

  2. Ao receber qualquer atualização ou confirmação de código, CodeCommit invoca um CloudWatch evento que, por sua vez, inicia um CodePipeline trabalho.

  3. CodePipeline engaja o CI que é tratado por. CodeBuild As tarefas a seguir são executadas.

    • Teste dos AWS CloudFormation modelos (opcional)

    • Empacotamento dos AWS CloudFormation modelos para cada região incluída na implantação. Por exemplo, esse padrão é implantado paralelamente em três AWS regiões, então CodeBuild empacota os AWS CloudFormation modelos em três buckets S3, um em cada região especificada. Os buckets do S3 são usados somente CodeBuild como repositórios de artefatos.

  4. CodeBuild empacota os artefatos como entrada para a próxima fase de implantação, que é executada paralelamente nas três AWS regiões. Se você especificar um número diferente de regiões, CodePipeline será implantado nessas regiões.

Ferramentas

Ferramentas

  • AWS CodePipeline— CodePipeline é um serviço de entrega contínua que você pode usar para modelar, visualizar e automatizar as etapas necessárias para liberar suas alterações de software continuamente.

  • AWS CodeBuild— CodeBuild é um serviço de compilação totalmente gerenciado que compila seu código-fonte, executa testes de unidade e produz artefatos prontos para serem implantados.

  • AWS CodeCommit— CodeCommit é um serviço de controle de versão hospedado pela Amazon Web Services que você pode usar para armazenar e gerenciar de forma privada ativos (como código-fonte e arquivos binários) na nuvem.

  • AWS CloudFormation— AWS CloudFormation é um serviço que ajuda você a modelar e configurar seus recursos da Amazon Web Services para que você possa passar menos tempo gerenciando esses recursos e mais tempo se concentrando nos aplicativos que são executadosAWS.

  • AWSIdentity and Access Management — AWS Identity and Access Management (IAM) é um serviço web que ajuda você a controlar com segurança o acesso aos AWS recursos.

  • Amazon S3: o Amazon Simple Storage Service (Amazon S3) serve como armazenamento para a internet. Ele foi projetado para facilitar a computação de escala na web para os desenvolvedores.

Código

O código de exemplo a seguir é para o arquivo BuildSpec.yaml (fase de compilação).

--- artifacts: discard-paths: true files: - packaged-first-region.yaml - packaged-second-region.yaml - packaged-third-region.yaml phases: build: commands: - echo "********BUILD PHASE - CF PACKAGING**********" - "aws cloudformation package --template-file sam-template.yaml --s3-bucket $S3_FIRST_REGION --output-template-file packaged-first-region.yaml --region $FIRST_REGION" - "aws cloudformation package --template-file sam-template.yaml --s3-bucket $S3_SECOND_REGION --output-template-file packaged-second-region.yaml --region $SECOND_REGION" - "aws cloudformation package --template-file sam-template-anand.yaml --s3-bucket $S3_THIRD_REGION --output-template-file packaged-third-region.yaml --region $THIRD_REGION" install: commands: - echo "********BUILD PHASE - PYTHON SETUP**********" runtime-versions: python: 3.8 post_build: commands: - echo "********BUILD PHASE - PACKAGING COMPLETION**********" pre_build: commands: - echo "********BUILD PHASE - DEPENDENCY SETUP**********" - "npm install --silent --no-progress" - echo "********BUILD PHASE - DEPENDENCY SETUP DONE**********" version: 0.2

Épicos

TarefaDescriçãoHabilidades necessárias

Selecione a AWS região principal para a implantação.

Faça login na sua AWS conta e escolha a região principal para a implantação. O CodeCommit repositório estará na região principal.

DevOps

Crie o CodeCommit repositório.

Crie o CodeCommit repositório e insira o código necessário nele. O código geralmente inclui os AWS SAM modelos AWS CloudFormation ou, o código Lambda, se houver, e os CodeBuild buildspec.yaml arquivos como entrada para o. AWS CodePipeline

DevOps

Envie o código para o CodeCommit repositório.

Na seção Anexos, baixe o código desse exemplo e, em seguida, insira o código necessário nele. Geralmente, o código pode incluir AWS CloudFormation nossos AWS SAM modelos, o código Lambda e os CodeBuild buildspec.yaml arquivos como entrada para o pipeline.

DevOps
TarefaDescriçãoHabilidades necessárias

Crie o CodePipeline trabalho.

No CodePipeline console, escolha Criar pipeline.

DevOps

Dê um nome ao CodePipeline trabalho e escolha a configuração da função de serviço.

Insira um nome para o trabalho e mantenha a configuração padrão da função de serviço para CodePipeline criar a função com as políticas necessárias anexadas.

DevOps

Especifique a localização do armazenamento de artefatos.

Em Configurações avançadas, mantenha a opção padrão para CodePipeline criar um bucket S3 para usar no armazenamento de artefatos de código. Se você usar um bucket S3 existente em vez disso, o bucket deverá estar na região principal que você especificou no primeiro épico.

DevOps

Especifique a chave de criptografia.

Mantenha a opção padrão, Chave AWS gerenciada padrão, ou escolha usar sua própria AWS chave gerenciada pelo cliente do Serviço de Gerenciamento de Chaves (AWSKMS).

DevOps

Especificar o provedor de origem.

Em Provedor de origem, escolha AWS CodeCommit.

DevOps

Especificar o repositório.

Escolha o CodeCommit repositório que você criou no primeiro épico. Se você inseriu o código em uma ramificação, escolha a ramificação.

DevOps

Especifique como as alterações no código são detectadas.

Mantenha o padrão, Amazon CloudWatch Events, como o gatilho de mudança CodeCommit para iniciar o CodePipeline trabalho.

DevOps
TarefaDescriçãoHabilidades necessárias

Especifique o provedor de compilação.

Para o provedor de compilação, escolha AWS CodeBuild.

DevOps

Especifique a AWS região.

Escolha a região principal, que você especificou no primeiro épico.

DevOps
TarefaDescriçãoHabilidades necessárias

Criar o projeto

Escolha Criar projeto e insira um nome para o projeto.

DevOps

Especifique a imagem do ambiente.

Para essa demonstração de padrão, use a imagem CodeBuild gerenciada padrão. Também há a opção de usar uma imagem do Docker personalizada, se tiver uma.

DevOps

Especifique o sistema operacional.

Escolha Amazon Linux 2 ou Ubuntu.

Observação: o Amazon Linux 2 está chegando ao fim do suporte. Para obter mais informações, consulte o Amazon Linux 2 FAQs.

DevOps

Especifique o perfil de serviço.

Escolha a função para a qual você criou CodeBuild antes de começar a criar a CodePipeline tarefa. (Consulte a seção Pré-requisitos.)

DevOps

Configure opções adicionais.

Para Tempo limite e Tempo limite em fila, mantenha os valores padrão. Para ter um certificado, mantenha a configuração padrão, a menos que você tenha um certificado personalizado que queira usar.

DevOps

Crie as variáveis de ambiente.

Para cada AWS região na qual você deseja implantar, crie variáveis de ambiente fornecendo o nome do bucket do S3 e o nome da região (por exemplo, us-east-1).

DevOps

Forneça o nome do arquivo buildspec, se não for buildspec.yml.

Mantenha esse campo em branco se o nome do arquivo for o padrão, buildspec.yaml. Se você renomeou o arquivo buildspec, insira o nome aqui. Verifique se ele corresponde ao nome do arquivo que está no CodeCommit repositório.

DevOps

Especifique o registro.

Para ver os registros do Amazon CloudWatch Events, mantenha a configuração padrão. ou você pode definir qualquer nome específico de grupo ou registrador.

DevOps
TarefaDescriçãoHabilidades necessárias

Pule a fase de implantação e conclua a criação do pipeline.

Quando você configura o pipeline, CodePipeline permite criar apenas um estágio na fase de implantação. Para implantar em várias AWS regiões, pule essa fase. Depois que o pipeline for criado, você poderá adicionar vários estágios da fase de Implantação.

DevOps
TarefaDescriçãoHabilidades necessárias

Adicione um estágio à fase de Implantação.

Edite o pipeline e escolha Adicionar estágio na fase de Implantação. Essa primeira etapa é para a região principal.

DevOps

Forneça um nome de ação para o estágio.

Insira um nome exclusivo que reflita o primeiro estágio (principal) e a região. Por exemplo, insira primary_<region>_deploy.

DevOps

Especificar o provedor de ação.

Em Action provider (Provedor de ação), selecione AWS CloudFormation.

DevOps

Configure a região para o primeiro estágio.

Escolha a primeira região (primária), a mesma região em que CodePipeline CodeBuild estão configurados. Essa é a região principal na qual você deseja implantar a pilha.

DevOps

Especifique o artefato de entrada.

Escolha BuildArtifact. Esse é o resultado da fase de compilação.

DevOps

Especifique a ação a ser tomada.

Para o Modo de ação, escolha Criar ou atualizar uma pilha.

DevOps

Insira um nome para a CloudFormation pilha.

DevOps

Especifique o modelo para a primeira região.

Selecione o nome do pacote específico da região que foi empacotado CodeBuild e despejado no bucket do S3 para a primeira região (primária).

DevOps

Especifique os recursos.

Os recursos são necessários se o modelo de pilha incluir IAM recursos ou se você criar uma pilha diretamente de um modelo que contém macros. Para esse padrão, use CAPABILITY _IAM, CAPABILITY _ NAMED _IAM, CAPABILITY _ AUTO _EXPAND.

DevOps
TarefaDescriçãoHabilidades necessárias

Adicione o segundo estágio à fase de Implantação.

Para adicionar um estágio para a segunda região, edite o pipeline e escolha Adicionar estágio na fase de Implantação. Importante: o processo de criação da segunda região é o mesmo da primeira região, exceto pelos valores a seguir.

DevOps

Forneça um nome de ação para o segundo estágio.

Insira um nome exclusivo que reflita o segundo estágio e a segunda região.

DevOps

Configure a região para o segundo estágio.

Selecione a segunda região onde você deseja implantar a pilha.

DevOps

Especifique o modelo para a segunda região.

Selecione o nome do pacote específico da região que foi empacotado CodeBuild e despejado no bucket do S3 para a segunda região.

DevOps
TarefaDescriçãoHabilidades necessárias

Adicione o terceiro estágio à fase de Implantação.

Para adicionar um estágio para a terceira região, edite o pipeline e escolha Adicionar estágio na fase de Implantação. Importante: o processo de criação da segunda região é o mesmo das duas regiões anteriores, exceto pelos valores a seguir.

DevOps

Forneça um nome de ação para o terceiro estágio.

Insira um nome exclusivo que reflita o terceiro estágio e a terceira região.

DevOps

Configure a região para o terceiro estágio.

Selecione a região onde você deseja implantar a pilha.

DevOps

Especifique o modelo para a terceira região.

Selecione o nome do pacote específico da região que foi empacotado CodeBuild e despejado no bucket do S3 para a terceira região.

DevOps
TarefaDescriçãoHabilidades necessárias

Exclua os AWS recursos.

Para limpar a implantação, exclua as CloudFormation pilhas em cada região. Em seguida CodeCommit CodeBuild, exclua CodePipeline os recursos, e da região primária.

DevOps

Recursos relacionados

Anexos

Para acessar o conteúdo adicional associado a este documento, descompacte o seguinte arquivo: attachment.zip