O CodeDeploy é o entregador de versão: você diz qual pacote (um .zip no S3) e pra quais máquinas (as que têm uma tag), e ele passa em cada uma parando a aplicação, instalando a versão nova, subindo de novo e conferindo se ficou de pé — uma, metade ou todas de uma vez.
É o "CD" do CI/CD: o CodeBuild monta e testa, o CodeDeploy põe no ar. Ele substitui o "entrar por SSH em cada servidor e copiar arquivo", que não escala e não tem volta. E tem volta: se a versão nova falhar na validação, ele reinstala sozinho a última que funcionava (rollback automático).
Cada um deles roda de verdade no terminal do CLImb, com a mesma saída e as mesmas mensagens de erro que a AWS devolve.
aws deploy list-applicationsUSO
aws deploy list-applications
aws deploy create-applicationUSO
aws deploy create-application --application-name <nome> [--compute-platform Server|Lambda|ECS]
aws deploy get-applicationUSO
aws deploy get-application --application-name <nome>
aws deploy list-deployment-configsUSO
aws deploy list-deployment-configs
aws ec2 run-instancescriar instâncias
aws ec2 run-instances --image-id <ami> --instance-type <tipo> [--count N] [--key-name <chave>] [--security-groups <sg>]
aws ec2 create-tagsUSO
aws ec2 create-tags --resources i-0abc --tags Key=Time,Value=plataforma Key=Ambiente,Value=producao
aws deploy create-deployment-groupUSO
aws deploy create-deployment-group --application-name <app> --deployment-group-name <grupo> \ --service-role-arn arn:aws:iam::<conta>:role/<role> \ --ec2-tag-filters Key=<tag>,Value=<valor>,Type=KEY_AND_VALUE \ [--deployment-config-name CodeDeployDefault.OneAtATime] \ [--auto-rollback-configuration enabled=true,events=DEPLOYMENT_FAILURE]
aws deploy list-deployment-groupsUSO
aws deploy list-deployment-groups --application-name <app>
aws deploy get-deployment-groupUSO
aws deploy get-deployment-group --application-name <app> --deployment-group-name <grupo>
aws deploy create-deploymentUSO
aws deploy create-deployment --application-name <app> --deployment-group-name <grupo> \ --s3-location bucket=<bucket>,key=<pacote.zip>,bundleType=zip \ [--deployment-config-name ...] [--description <texto>]
aws deploy list-deployment-targetsUSO
aws deploy list-deployment-targets --deployment-id <id> [--target-filters '{"TargetStatus":["Failed"]}']
aws deploy get-deployment-targetUSO
aws deploy get-deployment-target --deployment-id <id> --target-id <i-...>
aws deploy list-deploymentsUSO
aws deploy list-deployments [--application-name <app> [--deployment-group-name <grupo>]] [--include-only-statuses Failed ...]
aws deploy update-deployment-groupUSO
aws deploy update-deployment-group --application-name <app> --current-deployment-group-name <grupo> \ [--deployment-config-name ...] [--auto-rollback-configuration enabled=true,events=DEPLOYMENT_FAILURE] \ [--ec2-tag-filters ...] [--service-role-arn ...] [--new-deployment-group-name ...]
aws deploy stop-deploymentUSO
aws deploy stop-deployment --deployment-id <id>
aws deploy delete-deployment-groupUSO
aws deploy delete-deployment-group --application-name <app> --deployment-group-name <grupo>
aws deploy delete-applicationUSO
aws deploy delete-application --application-name <nome>
Cada atividade é um pedido de trabalho, do jeito que ele chega no dia a dia — você resolve digitando os comandos, não escolhendo alternativa.
Hoje o portal do RH vai pro ar com alguém entrando por SSH e copiando arquivo — e ninguém sabe voltar atrás quando dá errado. O time vai usar o CodeDeploy. Comece vendo quais aplicações ele já entrega nesta conta.
Crie a aplicação portal-rh no CodeDeploy. É o marco da trilha: o fim do deploy por SSH começa aqui.
Confira a aplicação portal-rh que você criou: o id e a plataforma (computePlatform).
A planilha de inventário tem uma coluna "plataforma". Traga só o computePlatform da portal-rh, em texto puro.
Antes de configurar, o time quer entender as opções de ritmo: atualizar uma máquina por vez, metade ou todas juntas. Liste as configurações de deploy que existem.
O CodeDeploy busca cada versão num bucket do S3. Crie o bucket portal-rh-pacotes — é lá que as versões do portal vão morar.
O build gerou o pacote app.zip (ele está na sua pasta — confira com ls). Envie pro bucket com o nome portal-rh-v1.zip.
O portal precisa de um servidor. Suba uma instância com a AMI ami-0abcd1234ef567890 no tipo t3.micro e anote o InstanceId.
O CodeDeploy não recebe lista de IPs: ele acha as máquinas pela tag. Marque a instância que você acabou de subir com App=portal-rh.
Crie o deployment group portal-rh-producao na aplicação portal-rh: as máquinas são as com a tag App=portal-rh (tipo KEY_AND_VALUE) e a role é arn:aws:iam::123456789012:role/codedeploy-servico.
Liste os deployment groups da aplicação portal-rh.
Confira o portal-rh-producao: filtro de tag, role e configuração de deploy (qual é o padrão?).
Alguém subiu uma máquina e ela não recebeu deploy. Antes de culpar o CodeDeploy, traga só o filtro de tag do portal-rh-producao.
Tudo pronto. Entregue a versão portal-rh-v1.zip (bucket portal-rh-pacotes, tipo zip) no portal-rh-producao. Anote o deploymentId.
O deploy está rodando. Consulte pelo id — e consulte de novo até o status sair de InProgress.
O bot do chat do time avisa quando o deploy termina. Traga só o status do último deploy, em texto puro.
Liste as máquinas (alvos) que o último deploy atualizou.
Veja o que o deploy fez na sua instância, etapa por etapa: parar, baixar, instalar, iniciar, validar.
O gestor quer ver todas as entregas do portal-rh-producao. Liste os deploys desse grupo.
O portal ganhou um segundo servidor. Suba outra instância (mesma AMI e tipo), marque com App=portal-rh e entregue de novo a portal-rh-v1.zip — repare que agora o deploy passa em duas máquinas sem você mudar nada no grupo.
A versão 2 do portal saiu do build como app.zip. Envie pro bucket como portal-rh-v2.zip, entregue no portal-rh-producao e acompanhe até terminar.
Nenhum plantonista quer ser acordado às 3h pra reinstalar a versão anterior. Ligue o rollback automático no portal-rh-producao: deploy que falhar volta pra última versão boa.
Com duas máquinas, dá pra atualizar uma enquanto a outra atende. Confira o nome exato da configuração de metade por vez e troque o ritmo do portal-rh-producao pra ela.
Hoje é dia de simulado: o QA preparou a versão portal-rh-v3-quebrado.zip, que quebra o health check de propósito. Envie o app.zip pro bucket com esse nome, entregue no portal-rh-producao e acompanhe até o fim. O deploy vai falhar — confira que o rollback automático disparou (rollbackInfo).
O rollback salvou a noite, mas o relatório do incidente precisa da causa. Liste as máquinas do deploy que falhou e veja, numa delas, a etapa que quebrou e o logTail do script.
Pro relatório mensal de incidentes, liste só os deploys com status Failed do portal-rh.
Alguém disparou de novo a portal-rh-v2.zip no portal-rh-producao às 11h de segunda, pico de acesso. Dispare pra ver o cenário e pare o deploy antes de ele terminar.
Um deploy da portal-rh-v1.zip saiu com a descrição hotfix folha — mas a v1 é antiga e não tem o hotfix. Dispare pra ver o cenário (com --description) e pare antes de ele chegar nas máquinas.
O time vai testar em outra conta. Crie o grupo portal-rh-homolog na portal-rh (tag App=portal-rh-homolog, mesma role) pra ver o cenário, apague e confira os grupos que sobraram.
O portal-rh-legado foi desligado ano passado e a aplicação dele ficou no CodeDeploy. Crie pra ver o cenário e apague.
A intranet-antiga sai de vez. Crie a aplicação e o grupo intranet-antiga-prod dela (tag App=intranet-antiga, mesma role) pra ver o cenário; depois apague o grupo, apague a aplicação e confira a lista de aplicações.
Ler explica. Digitar fixa. No CLImb você roda os comandos de verdade num terminal AWS simulado — o estado persiste entre eles, como na nuvem real.
As 3 primeiras atividades desta trilha são abertas; o resto faz parte do plano Pro.
Começar — 3 atividades grátis