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
A arquitetura e o fluxo de trabalho de várias regiões deste padrão abrangem as etapas a seguir.
Você envia seu código para um CodeCommit repositório.
Ao receber qualquer atualização ou confirmação de código, CodeCommit invoca um CloudWatch evento que, por sua vez, inicia um CodePipeline trabalho.
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.
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
Tarefa | Descrição | Habilidades 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 | 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 | DevOps |
Tarefa | Descrição | Habilidades 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 |
Tarefa | Descrição | Habilidades 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 |
Tarefa | Descrição | Habilidades 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, | 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 |
Tarefa | Descrição | Habilidades 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 |
Tarefa | Descrição | Habilidades 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 |
Tarefa | Descrição | Habilidades 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 |
Tarefa | Descrição | Habilidades 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 |
Tarefa | Descrição | Habilidades 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