Selecione suas preferências de cookies

Usamos cookies essenciais e ferramentas semelhantes que são necessárias para fornecer nosso site e serviços. Usamos cookies de desempenho para coletar estatísticas anônimas, para que possamos entender como os clientes usam nosso site e fazer as devidas melhorias. Cookies essenciais não podem ser desativados, mas você pode clicar em “Personalizar” ou “Recusar” para recusar cookies de desempenho.

Se você concordar, a AWS e terceiros aprovados também usarão cookies para fornecer recursos úteis do site, lembrar suas preferências e exibir conteúdo relevante, incluindo publicidade relevante. Para aceitar ou recusar todos os cookies não essenciais, clique em “Aceitar” ou “Recusar”. Para fazer escolhas mais detalhadas, clique em “Personalizar”.

Compile automaticamente pipelines de CI/CD e clusters do Amazon ECS para microsserviços usando o AWS CDK - 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á.

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

Compile automaticamente pipelines de CI/CD e clusters do Amazon ECS para microsserviços usando o AWS CDK

Criado por Varsha Raju (AWS)

Resumo

Esse padrão descreve como criar automaticamente a integração contínua e a entrega contínua (CI/CD) pipelines and underlying infrastructure for building and deploying microservices on Amazon Elastic Container Service (Amazon ECS). You can use this approach if you want to set up proof-of-concept CI/CD pipelines to show your organization the benefits of CI/CD, microservices, and DevOps. You can also use this approach to create initial CI/CDpipelines) que você pode personalizar ou alterar de acordo com os requisitos da sua organização. 

A abordagem do padrão cria um ambiente de produção e um ambiente de não produção, cada um com uma nuvem privada virtual (VPC) e um cluster do Amazon ECS configurado para ser executado em duas zonas de disponibilidade. Esses ambientes são compartilhados por todos os seus microsserviços e, em seguida, você cria um CI/CD pipeline for each microservice. These CI/CD pipeline, extrai as alterações de um repositório de origem na AWS CodeCommit, cria automaticamente as alterações e as implanta em seus ambientes de produção e não produção. Quando um pipeline conclui com êxito todas as suas etapas, você pode usá-lo URLs para acessar o microsserviço nos ambientes de produção e não produção.

Pré-requisitos e limitações

Pré-requisitos

  • Uma conta ativa da Amazon Web Services (AWS).

  • Um bucket do Amazon Simple Storage Service (Amazon S3) existente que contém o arquivo starter-code.zip (anexado)

  • AWS Cloud Development Kit (AWS CDK), instalado e configurado. Para obter mais informações, consulte Conceitos básicos do AWS CDK na documentação do AWS CDK.

  • Python 3 e pip instalado e configurado Para obter mais informações, consulte a documentação do Pyton.

  • Familiaridade com o AWS CDK, AWS CodeBuild, CodePipeline AWS, CodeCommit Amazon Elastic Container Registry (Amazon ECR), Amazon ECS e AWS Fargate.

  • Familiaridade com o Docker.

  • Uma compreensão do CI/CD e. DevOps

Limitações

  • Os limites gerais da conta da AWS se aplicam. Para obter mais informações, consulte Service Quotas da AWS, na documentação de Referência geral da AWS.

Versões do produto

  • Esse código foi testado usando o Nose.js versão 16.13.0 e o AWS CDK versão 1.132.0.

Arquitetura

Nuvem AWS architecture diagram showing CI/CD pipeline and deployment to production and non-production VPCs.

O diagrama mostra o seguinte fluxo de trabalho:

  1. Um desenvolvedor de aplicativos confirma o código em um CodeCommit repositório.

  2. Um pipeline é inicializado.

  3. CodeBuild cria e envia a imagem do Docker para um repositório Amazon ECR

  4. CodePipeline implanta uma nova imagem em um serviço Fargate existente em um cluster Amazon ECS não produtivo.

  5. O Amazon ECS extrai a imagem do repositório Amazon ECR para um serviço Fargate que não é de produção.

  6. O teste é realizado usando um URL que não é de produção.

  7. O gerente de lançamento aprova a implantação de produção.

  8. CodePipeline implanta a nova imagem em um serviço Fargate existente em um cluster de produção do Amazon ECS

  9. O Amazon ECS extrai a imagem do repositório Amazon ECR para um serviço Fargate de produção.

  10. Os usuários de produção acessam seu atributo usando uma URL de produção.

Pilha de tecnologia

  • AWS CDK

  • CodeBuild

  • CodeCommit 

  • CodePipeline

  • Amazon ECR 

  • Amazon ECS 

  • Amazon VPC

Automação e escala

Você pode usar a abordagem desse padrão para criar pipelines para microsserviços implantados em uma pilha compartilhada da AWS. CloudFormation A automação pode criar mais de um cluster do Amazon ECS em cada VPC e também criar pipelines para microsserviços implantados em um cluster compartilhado do Amazon ECS. No entanto, isso exige que você forneça novas informações de recursos como entradas para a pilha do pipeline.

Ferramentas

  • AWS CDK — O AWS Cloud Development Kit (AWS CDK) é uma estrutura de desenvolvimento de software para definir a infraestrutura de nuvem em código e provisioná-la por meio da AWS. CloudFormation

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

  • AWS CodeCommit — CodeCommit A AWS é um serviço de controle de versão que permite que você armazene e gerencie de forma privada repositórios Git na nuvem da AWS. CodeCommit elimina a necessidade de você gerenciar seu próprio sistema de controle de origem ou se preocupar com a escalabilidade de sua infraestrutura.

  • AWS CodePipeline — CodePipeline A AWS é um serviço de entrega contínua que você pode usar para modelar, visualizar e automatizar as etapas necessárias para lançar seu software. Você pode modelar e configurar rapidamente os diferentes estágios de um processo de lançamento de software. CodePipeline automatiza as etapas necessárias para liberar suas alterações de software continuamente.

  • Amazon ECS: o Amazon Elastic Container Service (Amazon ECS) é um serviço de gerenciamento de contêineres altamente escalável e rápido que é usado na execução, interrupção e gerenciamento de contêineres em um cluster. Você pode executar tarefas e serviços em uma infraestrutura com tecnologia sem servidor gerenciada pelo AWS Fargate. Como alternativa, para ter mais controle sobre sua infraestrutura, você pode executar suas tarefas e serviços em um cluster de instâncias do Amazon Elastic Compute Cloud (Amazon EC2) que você gerencia.

  • Docker: o Docker ajuda os desenvolvedores a empacotar, enviar e executar facilmente qualquer aplicativo como um contêiner leve, portátil e autossuficiente.

Código

O código desse padrão está disponível nos arquivos cicdstarter.zip e starter-code.zip (anexado).

Épicos

TarefaDescriçãoHabilidades necessárias
Configure o diretório de trabalho para o AWS CDK.
  1. Crie um diretório chamado cicdproject na sua máquina local.

  2. Baixe o arquivo cicdstarter.zip (anexado) no diretório cicdproject e descompacte-o. Ele cria uma pasta chamada cicdstarter.

  3. Execute o comando cd <user-home>/cicdproject/cicdstarter

  4. Configure o ambiente virtual Python executando o comando python3 -m venv .venv.

  5. Execute o comando source ./.venv/bin/activate.

  6. Configure seu ambiente da AWS executando o comando aws configure ou usando as seguintes variáveis de ambiente: 

    • AWS_ACCESS_KEY_ID

    • AWS_SECRET_ACCESS_KEY 

    • AWS_DEFAULT_REGION

AWS DevOps, infraestrutura de nuvem

Configurar o ambiente

TarefaDescriçãoHabilidades necessárias
Configure o diretório de trabalho para o AWS CDK.
  1. Crie um diretório chamado cicdproject na sua máquina local.

  2. Baixe o arquivo cicdstarter.zip (anexado) no diretório cicdproject e descompacte-o. Ele cria uma pasta chamada cicdstarter.

  3. Execute o comando cd <user-home>/cicdproject/cicdstarter

  4. Configure o ambiente virtual Python executando o comando python3 -m venv .venv.

  5. Execute o comando source ./.venv/bin/activate.

  6. Configure seu ambiente da AWS executando o comando aws configure ou usando as seguintes variáveis de ambiente: 

    • AWS_ACCESS_KEY_ID

    • AWS_SECRET_ACCESS_KEY 

    • AWS_DEFAULT_REGION

AWS DevOps, infraestrutura de nuvem
TarefaDescriçãoHabilidades necessárias
Crie a infraestrutura compartilhada.
  1. No diretório de trabalho, execute o comando cd cicdvpcecs

  2. Execute o comando pip3 install -r requirements.txt para instalar todas as dependências necessárias do Python

  3. Execute o cdk bootstrap command para definir o ambiente da AWS para o AWS CDK. 

  4. Execute o comando cdk synth --context aws_account=<aws_account_ID> --context aws_region=<aws-region>

  5. Execute o comando cdk deploy --context aws_account=<aws_account_ID> --context aws_region=<aws-region>.

  6. A CloudFormation pilha da AWS cria a seguinte infraestrutura:

    • Uma VPC que não é de produção chamada cicd-vpc-ecs/cicd-vpc-nonprod

    • Uma VPC de produção chamada cicd-vpc-ecs/cicd-vpc-prod

    • Um cluster Amazon ECS não de produção chamado cicd-ecs-nonprod

    • Um cluster Amazon ECS de produção chamado cicd-ecs-prod

AWS DevOps, infraestrutura de nuvem
Monitore a CloudFormation pilha da AWS.
  1. Faça login no Console de Gerenciamento da AWS, abra o CloudFormation console da AWS e escolha a cicd-vpc-ecs pilha na lista. 

  2. No painel de detalhes da pilha, clique na guia Eventos e monitore o progresso da criação da pilha.

AWS DevOps, infraestrutura de nuvem
Teste a CloudFormation pilha da AWS.
  1. Depois que a CloudFormation pilha cicd-vpc-ecs da AWS for criada, certifique-se de que os cicd-vpc-ecs/cicd-vpc-nonprod e cicd-vpc-ecs/cicd-vpc-prod VPCs sejam criados. 

  2. Certifique-se de que os clusters cicd-ecs-nonprod e cicd-ecs-prod do Amazon ECS sejam criados.

Importante

Certifique-se de registrar o IDs para os dois VPCs e o grupo de segurança IDs para os grupos de segurança padrão em ambos VPCs.

AWS DevOps, infraestrutura de nuvem

Crie a infraestrutura compartilhada

TarefaDescriçãoHabilidades necessárias
Crie a infraestrutura compartilhada.
  1. No diretório de trabalho, execute o comando cd cicdvpcecs

  2. Execute o comando pip3 install -r requirements.txt para instalar todas as dependências necessárias do Python

  3. Execute o cdk bootstrap command para definir o ambiente da AWS para o AWS CDK. 

  4. Execute o comando cdk synth --context aws_account=<aws_account_ID> --context aws_region=<aws-region>

  5. Execute o comando cdk deploy --context aws_account=<aws_account_ID> --context aws_region=<aws-region>.

  6. A CloudFormation pilha da AWS cria a seguinte infraestrutura:

    • Uma VPC que não é de produção chamada cicd-vpc-ecs/cicd-vpc-nonprod

    • Uma VPC de produção chamada cicd-vpc-ecs/cicd-vpc-prod

    • Um cluster Amazon ECS não de produção chamado cicd-ecs-nonprod

    • Um cluster Amazon ECS de produção chamado cicd-ecs-prod

AWS DevOps, infraestrutura de nuvem
Monitore a CloudFormation pilha da AWS.
  1. Faça login no Console de Gerenciamento da AWS, abra o CloudFormation console da AWS e escolha a cicd-vpc-ecs pilha na lista. 

  2. No painel de detalhes da pilha, clique na guia Eventos e monitore o progresso da criação da pilha.

AWS DevOps, infraestrutura de nuvem
Teste a CloudFormation pilha da AWS.
  1. Depois que a CloudFormation pilha cicd-vpc-ecs da AWS for criada, certifique-se de que os cicd-vpc-ecs/cicd-vpc-nonprod e cicd-vpc-ecs/cicd-vpc-prod VPCs sejam criados. 

  2. Certifique-se de que os clusters cicd-ecs-nonprod e cicd-ecs-prod do Amazon ECS sejam criados.

Importante

Certifique-se de registrar o IDs para os dois VPCs e o grupo de segurança IDs para os grupos de segurança padrão em ambos VPCs.

AWS DevOps, infraestrutura de nuvem
TarefaDescriçãoHabilidades necessárias
Crie a infraestrutura para o microsserviço.
  1. Nomeie o microsserviço. Por exemplo, esse padrão usa myservice1 como o nome do microsserviço.

  2. No diretório de trabalho, execute o comando cd <working-directory>/cdkpipeline.

  3. Execute o comando pip3 install -r requirements.txt.

  4. Execute o comando cdk synth completo que está disponível na seção Informações adicionais deste padrão.

  5. Execute o comando cdk deploy completo que está disponível na seção Informações adicionais deste padrão.

nota

Você também pode fornecer os valores para ambos os comandos usando o cdk.json arquivo no diretório.

AWS DevOps, infraestrutura de nuvem
Monitore a CloudFormation pilha da AWS.

Abra o CloudFormation console da AWS e monitore o progresso da myservice1-cicd-stack pilha. Eventualmente, o status muda para CREATE_COMPLETE.

AWS DevOps, infraestrutura de nuvem
Teste a CloudFormation pilha da AWS.
  1. No CodeCommit console da AWS, verifique se um repositório chamado myservice1 existe e contém o código inicial.

  2. No CodeBuild console da AWS, verifique se myservice1 existe um projeto de construção chamado.

  3. No console do Amazon ECR, verifique se um repositório Amazon ECR chamado myservice1 existe.

  4. No console do Amazon ECS, verifique se um serviço Fargate chamado myservice1 existe em um cluster Amazon ECS não produtivo e de produção.

  5. No console do Amazon Elastic Compute Cloud (Amazon EC2), verifique se os Application Load Balancers não produtivos e de produção foram criados. Registre os nomes DNS do ALBs.

  6. No CodePipeline console da AWS, verifique se myservice1 existe um pipeline chamado. Deve ter os estágios Source, Build, Deploy-NonProd e Deploy-Prod. O pipeline também deve ter um status in progress.

  7. Monitore o pipeline até que todas as etapas estejam concluídas. 

  8. Aprove-o manualmente para produção.

  9. Em uma janela do navegador, insira os nomes DNS do ALBs.

  10. O aplicativo deve ser exibido Hello World na não produção e na produção URLs.

Use o pipeline.
  1. Abra o CodeCommit repositório que você criou anteriormente e abra o index.js arquivo. 

  2. Substitua Hello World por Hello CI/CD.

  3. Salve e confirme as alterações na ramificação principal.

  4. Verifique se o pipeline é inicializado e se a alteração passa pelos estágios Build, Deploy-NonProd e Deploy-Prod 

  5. Aprove a produção manualmente.

  6. Tanto a produção quanto a não produção URLs devem agora ser exibidasHello CICD.

AWS DevOps, infraestrutura de nuvem
Repita esse épico para cada microsserviço.

Repita as tarefas desse épico para criar um pipeline de CI/CD para cada um dos seus microsserviços.

AWS DevOps, infraestrutura de nuvem

Crie um pipeline de CI/CD para um microsserviço

TarefaDescriçãoHabilidades necessárias
Crie a infraestrutura para o microsserviço.
  1. Nomeie o microsserviço. Por exemplo, esse padrão usa myservice1 como o nome do microsserviço.

  2. No diretório de trabalho, execute o comando cd <working-directory>/cdkpipeline.

  3. Execute o comando pip3 install -r requirements.txt.

  4. Execute o comando cdk synth completo que está disponível na seção Informações adicionais deste padrão.

  5. Execute o comando cdk deploy completo que está disponível na seção Informações adicionais deste padrão.

nota

Você também pode fornecer os valores para ambos os comandos usando o cdk.json arquivo no diretório.

AWS DevOps, infraestrutura de nuvem
Monitore a CloudFormation pilha da AWS.

Abra o CloudFormation console da AWS e monitore o progresso da myservice1-cicd-stack pilha. Eventualmente, o status muda para CREATE_COMPLETE.

AWS DevOps, infraestrutura de nuvem
Teste a CloudFormation pilha da AWS.
  1. No CodeCommit console da AWS, verifique se um repositório chamado myservice1 existe e contém o código inicial.

  2. No CodeBuild console da AWS, verifique se myservice1 existe um projeto de construção chamado.

  3. No console do Amazon ECR, verifique se um repositório Amazon ECR chamado myservice1 existe.

  4. No console do Amazon ECS, verifique se um serviço Fargate chamado myservice1 existe em um cluster Amazon ECS não produtivo e de produção.

  5. No console do Amazon Elastic Compute Cloud (Amazon EC2), verifique se os Application Load Balancers não produtivos e de produção foram criados. Registre os nomes DNS do ALBs.

  6. No CodePipeline console da AWS, verifique se myservice1 existe um pipeline chamado. Deve ter os estágios Source, Build, Deploy-NonProd e Deploy-Prod. O pipeline também deve ter um status in progress.

  7. Monitore o pipeline até que todas as etapas estejam concluídas. 

  8. Aprove-o manualmente para produção.

  9. Em uma janela do navegador, insira os nomes DNS do ALBs.

  10. O aplicativo deve ser exibido Hello World na não produção e na produção URLs.

Use o pipeline.
  1. Abra o CodeCommit repositório que você criou anteriormente e abra o index.js arquivo. 

  2. Substitua Hello World por Hello CI/CD.

  3. Salve e confirme as alterações na ramificação principal.

  4. Verifique se o pipeline é inicializado e se a alteração passa pelos estágios Build, Deploy-NonProd e Deploy-Prod 

  5. Aprove a produção manualmente.

  6. Tanto a produção quanto a não produção URLs devem agora ser exibidasHello CICD.

AWS DevOps, infraestrutura de nuvem
Repita esse épico para cada microsserviço.

Repita as tarefas desse épico para criar um pipeline de CI/CD para cada um dos seus microsserviços.

AWS DevOps, infraestrutura de nuvem

Recursos relacionados

Mais informações

Comando da cdk synth

cdk synth --context aws_account=<aws_account_number> --context aws_region=<aws_region> --context vpc_nonprod_id=<id_of_non_production VPC> --context vpc_prod_id=<id_of_production_VPC> --context ecssg_nonprod_id=< default_security_group_id_of_non-production_VPC> --context ecssg_prod_id=<default_security_group_id_of_production_VPC> --context code_commit_s3_bucket_for_code=<S3 bucket name> --context code_commit_s3_object_key_for_code=<Object_key_of_starter_code> --context microservice_name=<name_of_microservice>

cdk deploy command

cdk deploy --context aws_account=<aws_account_number> --context aws_region=<aws_region> --context vpc_nonprod_id=<id_of_non_production_VPC> --context vpc_prod_id=<id_of_production_VPC> --context ecssg_nonprod_id=< default_security_group_id_of_non-production_VPC> --context ecssg_prod_id=<default_security_group_id_of_production_VPC> --context code_commit_s3_bucket_for_code=<S3 bucket name> --context code_commit_s3_object_key_for_code=<Object_key_of_starter_code> --context microservice_name=<name_of_microservice>

Anexos

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

PrivacidadeTermos do sitePreferências de cookies
© 2025, Amazon Web Services, Inc. ou suas afiliadas. Todos os direitos reservados.