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:
- 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.
- 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).
- 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.
- 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 →