Amazon DVA-C02: Implantação e CI/CD (CodePipeline, CodeBuild, CodeDeploy, Elastic Beanstalk, Contêineres) — Guia de estudos

Faz parte do AWS Developer Associate DVA-C02 — Guia de estudos. Pratique com respostas verificadas no centro de exames da Amazon, ou faça testes cronometrados no ExamRoll.io.

Fundamentos de CI/CD com CodePipeline e CodeBuild: padrões, APIs e armadilhas comuns

Projete pipelines com estágios claros: fonte (source), compilação (build), teste, aprovação, implantação (deploy) e verificação pós-implantação. O CodePipeline coordena esses estágios; use uma role de pipeline que conceda permissões mínimas e com escopo definido, e configure roles de ação para integrações de terceiros. Acione pipelines via webhooks do CodeCommit ou com

undefined

(AWS SDK:

undefined

) para inícios programáticos. Para as compilações, prefira projetos do CodeBuild com um

undefined

definindo as fases (install, pre_build, build, post_build); invoque as compilações diretamente com

undefined

ou

undefined

quando precisar de compilações ad-hoc ou em lote. Para a criação de imagens, use

undefined

com pipe para

undefined

na fase

undefined

, depois execute

undefined

/

undefined

para o ECR e capture o digest da imagem para produzir referências de artefatos imutáveis. Evite usar tags flutuantes como “latest”; em vez disso, emita definições de tarefa ou arquivos de manifesto que referenciem os digests das imagens para que as implantações sejam determinísticas. Fique atento a armadilhas comuns: tokens de autenticação do ECR expirados em scripts de longa duração, políticas IAM do CodeBuild inadequadas para fazer push para o ECR ou chamar APIs da AWS, e ARNs codificados diretamente (hard-coded). Instrumente as compilações para fazer upload de artefatos para o S3 ou para o repositório de artefatos do pipeline, e use variáveis de ambiente e o Parameter Store/Secrets Manager para valores sensíveis e de tempo de execução, em vez de embutir segredos nos artefatos de compilação.

Estratégias de implantação: CodeDeploy, aliases do Lambda e opções de configuração do Elastic Beanstalk

Escolha o modelo de implantação que corresponda à sua tolerância a riscos e necessidades de rollback. Para o Lambda, use versões e aliases; publique uma versão (

undefined

) e atualize os aliases com regras de desvio de tráfego através do CodeDeploy, criando uma implantação (

undefined

) que referencie a aplicação Lambda e o grupo de implantação. Use as configurações integradas do CodeDeploy, como

undefined

, ou roteamento de tráfego personalizado para desvios canary ou lineares precisos. Para aplicações em EC2 e on-premises, o CodeDeploy suporta implantações blue/green com ganchos de ciclo de vida (lifecycle hooks) para validações pré-tráfego e rollback automático em caso de falhas nas verificações de saúde (health checks). O Elastic Beanstalk oferece várias políticas: All at Once (rápida, arriscada), Rolling, Rolling with Additional Batch (mais segura) e Immutable (a mais segura), e você pode alterá-las com

undefined

ou a API

undefined

, especificando

undefined

e

undefined

. Armadilhas comuns para desenvolvedores incluem esquecer de configurar as verificações de saúde da aplicação (saúde do grupo de destino do ALB, relatórios de saúde do EB), o que impede o corte automático de tráfego, e permissões IAM insuficientes para o CodeDeploy invocar o Lambda ou atualizar o ECS. Para lançamentos que dependem de banco de dados, considere alterações de esquema retrocompatíveis e feature toggles pré-implantação para evitar o acoplamento de código e esquema na mesma transação.

Pipelines de contêineres, ECR, ECS/Fargate e EKS: compilação, implantação e referências imutáveis

Um pipeline de contêineres robusto cria imagens no CodeBuild, as envia para o ECR e aciona a implantação no ECS, Fargate ou EKS. No CodeBuild, execute

undefined

, depois

undefined

,

undefined

, e capture o digest da imagem via

undefined

. Para ECS/Fargate, registre a nova definição de tarefa (

undefined

) com o digest da imagem em

undefined

, depois atualize o serviço (

undefined

) para usar a nova definição de tarefa ou defina

undefined

para forçar uma nova implantação; use o CodeDeploy para implantações blue/green no ECS com desvio de tráfego no nível do ALB. Para o EKS, atualize os manifestos do Kubernetes para referenciar os digests das imagens e aplique com

undefined

ou use ferramentas de GitOps declarativas; o CodeBuild pode executar os comandos

undefined

e

undefined

. Armadilhas típicas: usar tags mutáveis que causam implantações desatualizadas, não atualizar as definições de tarefa impedindo o ECS de implantar novas imagens, limites insuficientes de CPU/memória ou ENI em tarefas do Fargate, e esquecer de conceder ao CodeBuild a permissão

undefined

para ler as imagens enviadas.

Validação pré-implantação, rollbacks e observabilidade: testes, hooks e proteções operacionais

Integre testes automatizados de unidade, de integração e smoke tests nas etapas do pipeline. Use o CodeBuild para executar testes e o AWS X-Ray ou o CloudWatch Logs para rastreamento (tracing) e logs estruturados; anote os traces do X-Ray com PutAnnotation nos SDKs para que consultas posteriores (downstream) possam filtrar por atributos de usuário ou de requisição. Para a pré-implantação, utilize ações de aprovação manual no CodePipeline ou etapas de validação automatizadas: execute verificações Canary via CodeBuild que exercitem o endpoint implantado, ou invoque canaries do CloudWatch Synthetics para executar verificações por script. Use os hooks de ciclo de vida (lifecycle hooks) do CodeDeploy (BeforeAllowTraffic, AfterAllowTraffic) para executar verificações de saúde (health checks) e lógicas de registro/cancelamento de registro. Implemente gatilhos de rollback automático: configure o CodeDeploy para fazer rollback em caso de status de implantação diferente de zero ou falha de alarmes (alarmes do CloudWatch associados ao grupo de implantação), e para o Lambda, use aliases com desvio de tráfego (traffic shifting) para permitir um rollback rápido, atualizando o alias para apontar para a versão anterior. Armadilhas comuns para desenvolvedores incluem timeouts incompatíveis (timeout do Lambda menor que o visibility timeout do SQS), esquecer de configurar os hooks do AppSpec corretamente para ECS/CodeDeploy e confiar no sucesso das chamadas de API de implantação sem validar o comportamento em tempo de execução. Instrumente as implantações com métricas e alertas, e use identificadores imutáveis nos artefatos para rastreabilidade.

Problema Prático: Cenário de Caso de Uso

Cenário: A ExampleRetail opera uma vitrine (storefront) de microsserviços na AWS em contas de dev/test/prod. Eles usam o CodeCommit para o código-fonte, CodePipeline/CodeBuild para CI, ECR para imagens, ECS/Fargate para os serviços atrás de um ALB e Lambda para workers assíncronos.

Desafio: Um desenvolvedor precisa adicionar um pipeline seguro e automatizado para implantar um novo contêiner do serviço de checkout com desvio de tráfego canary e validação pré-implantação automatizada que fará rollback em caso de falha.

Abordagem Recomendada:

  1. Crie um projeto no CodeBuild que construa a imagem Docker, execute os testes de unidade, faça login no ECR (aws ecr get-login-password | docker login –username AWS –password-stdin ${ACCOUNT}.dkr.ecr.${REGION}.amazonaws.com), envie a imagem e emita um artefato JSON contendo o digest da imagem.
  2. No CodePipeline, adicione uma etapa de implantação (deploy) que registre uma nova definição de tarefa do ECS via ecs.registerTaskDefinition, referenciando o digest da imagem, e então crie uma implantação do CodeDeploy para ECS chamando codedeploy.createDeployment com um AppSpec que vincule a nova definição de tarefa e um deploymentConfig definido para canary (ex: CodeDeployDefault.ECSCanary10Percent5Minutes).
  3. Adicione uma ação de validação baseada no CodeBuild ou um canary do CloudWatch Synthetics como um teste pós-implantação que chame os endpoints críticos de checkout e valide as respostas; faça o pipeline aguardar pela validação bem-sucedida.
  4. Configure as opções de rollback do CodeDeploy e um alarme do CloudWatch vinculado ao grupo de implantação (ex: taxa de erros 5xx ou latência) para abortar e fazer o rollback automaticamente se os limites forem violados.

Justificativa: Construir imagens imutáveis, registrar definições de tarefa com digests de imagem explícitos e usar o desvio de tráfego (traffic-shifting) do CodeDeploy junto com a validação automatizada proporciona releases canary seguros e rollback rápido e automatizado, garantindo ao mesmo tempo que as implantações sejam reproduzíveis e observáveis.


CloudFormation e Infraestrutura como Código (SAM · Todos os domínios · Segurança

Pratique estas questões → · Prática cronometrada no ExamRoll.io →

Pass the whole exam — not just this question

You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.

Passe no seu exame →

Navegar Amazon →

Related guides

Acesso completo

Uma assinatura. Todos os exames.

Todo plano desbloqueia pesquisa ilimitada de respostas, testes práticos, explicações de AI e a biblioteca completa de recursos — em mais de 20 idiomas.

Mensal
24.87
Just €0.83/day
Tudo incluído:
  • Pesquisa ilimitada de respostas
  • Testes práticos ilimitados
  • Explicações com AI
  • Biblioteca completa de recursos
  • Mais de 20 idiomas
  • Atualizações semanais de conteúdo
  • Recompensas e indicações
  • Suporte prioritário
Iniciar teste grátis

*Não é necessário cartão de crédito

Melhor custo-benefício
12 meses
179.87
Just €0.49/daySave 40%
Tudo incluído:
  • Pesquisa ilimitada de respostas
  • Testes práticos ilimitados
  • Explicações com AI
  • Biblioteca completa de recursos
  • Mais de 20 idiomas
  • Atualizações semanais de conteúdo
  • Recompensas e indicações
  • Suporte prioritário
Iniciar teste grátis

*Não é necessário cartão de crédito

✓ Plano gratuito incluído · ✓ Cancele a qualquer momento · ✓ Todos os planos desbloqueiam o produto completo