Amazon DVA-C02: Despliegue y CI/CD (CodePipeline, CodeBuild, CodeDeploy, Elastic Beanstalk, Contenedores) — Guía de estudio

Forma parte de la AWS Developer Associate DVA-C02 — Guía de estudio. Practica con respuestas verificadas en el centro de exámenes de Amazon, o realiza tests cronometrados en ExamRoll.io.

Fundamentos de CI/CD con CodePipeline y CodeBuild: patrones, API y errores comunes

Diseñe canalizaciones con etapas claras: código fuente, compilación, prueba, aprobación, despliegue y verificación posterior al despliegue. CodePipeline coordina estas etapas; utilice un rol de canalización que otorgue permisos mínimos y acotados, y configure roles de acción para integraciones de terceros. Active las canalizaciones mediante webhooks de CodeCommit o StartPipelineExecution (AWS SDK: codepipeline.startPipelineExecution) para inicios programáticos. Para las compilaciones, prefiera proyectos de CodeBuild con un archivo buildspec.yml que defina las fases (install, pre_build, build, post_build); invoque las compilaciones directamente con StartBuild o StartBuildBatch cuando necesite compilaciones ad-hoc o por lotes. Para la creación de imágenes, use aws ecr get-login-password canalizado a docker login en la fase pre_build, luego haga docker build/push a ECR y capture el ‘image digest’ para producir referencias de artefactos inmutables. Evite usar etiquetas flotantes como “latest”; en su lugar, emita definiciones de tareas o archivos de manifiesto que hagan referencia a los ‘image digests’ para que los despliegues sean deterministas. Esté atento a las trampas comunes: tokens de autenticación de ECR caducados en scripts de larga duración, políticas de IAM de CodeBuild inadecuadas para enviar a ECR o llamar a las API de AWS, y la codificación fija de ARNs. Instrumente las compilaciones para cargar artefactos en S3 o en el almacén de artefactos de la canalización, y use variables de entorno y Parameter Store/Secrets Manager para valores sensibles que solo se usan en tiempo de ejecución, en lugar de incrustar secretos en los artefactos de compilación.

Estrategias de despliegue: CodeDeploy, alias de Lambda y opciones de configuración de Elastic Beanstalk

Elija el modelo de despliegue que se ajuste a su tolerancia al riesgo y a sus necesidades de reversión (rollback). Para Lambda, use versiones y alias; publique una versión (lambda.publishVersion) y actualice los alias con reglas de desvío de tráfico a través de CodeDeploy, creando un despliegue (codedeploy.createDeployment) que haga referencia a la aplicación Lambda y al grupo de despliegue. Use las configuraciones integradas de CodeDeploy como CodeDeployDefault.LambdaCanary10Percent5Minutes o un enrutamiento de tráfico personalizado para cambios precisos de tipo canary o lineal. Para aplicaciones en EC2 y on-premise, CodeDeploy admite despliegues blue/green con ’lifecycle hooks’ para validaciones previas al tráfico y reversión automática en caso de fallos en las comprobaciones de estado. Elastic Beanstalk ofrece múltiples políticas: All at Once (rápida, riesgosa), Rolling, Rolling with Additional Batch (más segura) e Immutable (la más segura), y puede cambiarlas con eb deploy o la API update-environment, especificando DeploymentPolicy y OptionSettings. Las trampas comunes para desarrolladores incluyen olvidar la configuración de las comprobaciones de estado de la aplicación (estado del grupo de destino de ALB, informes de estado de EB), lo que impide el cambio automático de tráfico, y permisos de IAM insuficientes para que CodeDeploy invoque Lambda o actualice ECS. Para lanzamientos que involucran bases de datos, considere cambios de esquema retrocompatibles y ‘feature toggles’ (interruptores de funcionalidad) previos al despliegue para evitar acoplar el código y el esquema en la misma transacción.

Canalizaciones de contenedores, ECR, ECS/Fargate y EKS: compilación, despliegue y referencias inmutables

Una canalización de contenedores robusta crea imágenes en CodeBuild, las envía a ECR y activa el despliegue en ECS, Fargate o EKS. En CodeBuild, ejecute aws ecr get-login-password | docker login –username AWS –password-stdin ${ACCOUNT}.dkr.ecr.${REGION}.amazonaws.com, luego docker build -t repo:tag ., docker push, y capture el ‘image digest’ mediante docker inspect –format=’{{index .RepoDigests 0}}’ image. Para ECS/Fargate, registre la nueva definición de tarea (ecs.registerTaskDefinition) con el ‘image digest’ en containerDefinitions, luego actualice el servicio (ecs.updateService) para usar la nueva definición de tarea o establezca forceNewDeployment para forzar un reemplazo; use CodeDeploy para despliegues blue/green en ECS con desvío de tráfico a nivel del ALB. Para EKS, actualice los manifiestos de Kubernetes para que hagan referencia a los ‘image digests’ y aplique kubectl set image o use herramientas declarativas de GitOps; CodeBuild puede ejecutar los comandos aws eks update-kubeconfig y kubectl. Errores típicos: usar etiquetas mutables que causan despliegues obsoletos, no actualizar las definiciones de tareas lo que impide que ECS despliegue nuevas imágenes, límites insuficientes de CPU/memoria o ENI en tareas de Fargate, y olvidar otorgar a CodeBuild el permiso ecr:BatchGetImage para leer las imágenes enviadas.

Validación previa al despliegue, reversiones y observabilidad: pruebas, hooks y salvaguardas operativas

Integra pruebas unitarias, de integración y smoke tests automatizadas en las etapas de la canalización. Usa CodeBuild para ejecutar pruebas y AWS X-Ray o CloudWatch Logs para el rastreo y los logs estructurados; anota los rastreos de X-Ray con PutAnnotation en los SDK para que las consultas posteriores puedan filtrar por atributos de usuario o de solicitud. Para la fase previa al despliegue, emplea acciones de aprobación manual en CodePipeline o pasos de validación automatizados: ejecuta comprobaciones Canary a través de CodeBuild que pongan a prueba el endpoint desplegado, o invoca canaries de CloudWatch Synthetics para ejecutar verificaciones programadas (scripted). Utiliza los hooks del ciclo de vida de CodeDeploy (BeforeAllowTraffic, AfterAllowTraffic) para ejecutar comprobaciones de estado y lógica de registro/desregistro. Implementa disparadores de reversión automática: configura CodeDeploy para que realice una reversión si el estado del despliegue no es cero o si fallan las alarmas (alarmas de CloudWatch asociadas al grupo de despliegue), y para Lambda, usa alias con desvío de tráfico para permitir una reversión rápida actualizando el alias para que apunte a la versión anterior. Las trampas para desarrolladores incluyen tiempos de espera no coincidentes (timeouts de Lambda más cortos que el visibility timeout de SQS), olvidar configurar correctamente los hooks de AppSpec para ECS/CodeDeploy y confiar en el éxito de las llamadas a la API de despliegue sin validar el comportamiento en tiempo de ejecución. Instrumenta los despliegues con métricas y alertas, y utiliza identificadores inmutables en los artefactos para la trazabilidad.

Problema práctico: Escenario de caso de uso

Escenario: ExampleRetail opera una tienda de microservicios en AWS a través de cuentas de desarrollo/pruebas/producción. Utilizan CodeCommit para el código fuente, CodePipeline/CodeBuild para CI, ECR para las imágenes, ECS/Fargate para los servicios detrás de un ALB y Lambda para los workers asíncronos.

Desafío: Un desarrollador debe añadir una canalización segura y automatizada para desplegar un nuevo contenedor del servicio de checkout con desvío de tráfico de tipo canary y validación automatizada previa al despliegue que revertirá en caso de fallo.

Enfoque recomendado:

  1. Crea un proyecto de CodeBuild que construya la imagen de Docker, ejecute pruebas unitarias, inicie sesión en ECR (aws ecr get-login-password | docker login –username AWS –password-stdin ${ACCOUNT}.dkr.ecr.${REGION}.amazonaws.com), suba la imagen y emita un artefacto JSON que contenga el digest de la imagen.
  2. En CodePipeline, añade una etapa de despliegue que registre una nueva definición de tarea de ECS a través de ecs.registerTaskDefinition haciendo referencia al digest de la imagen, y luego cree un despliegue de CodeDeploy para ECS llamando a codedeploy.createDeployment con un AppSpec que vincule la nueva definición de tarea y un deploymentConfig configurado para canary (p. ej., CodeDeployDefault.ECSCanary10Percent5Minutes).
  3. Añade una acción de validación basada en CodeBuild o un canary de CloudWatch Synthetics como una prueba posterior al despliegue que llame a los endpoints críticos del checkout y valide las respuestas; haz que la canalización espere a que la validación sea exitosa.
  4. Configura las opciones de reversión de CodeDeploy y una alarma de CloudWatch vinculada al grupo de despliegue (p. ej., tasa de errores 5xx o latencia) para abortar y revertir automáticamente si se superan los umbrales.

Justificación: Construir imágenes inmutables, registrar definiciones de tareas con digests de imagen explícitos y usar el desvío de tráfico de CodeDeploy junto con la validación automatizada proporciona lanzamientos canary seguros y una reversión rápida y automatizada, al tiempo que se garantiza que los despliegues sean reproducibles y observables.


CloudFormation e infraestructura como código (SAM · Todos los dominios · Seguridad

Practica estas preguntas → · Práctica cronometrada en 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.

Aprueba tu examen →

Explorar Amazon →

Related guides

Acceso todo en uno

Una suscripción. Todos los exámenes.

Cada plan desbloquea la búsqueda ilimitada de respuestas, pruebas de práctica, explicaciones de AI y la biblioteca completa de recursos, en más de 20 idiomas.

Mensual
24.87
Just €0.83/day
Todo incluido:
  • Búsqueda ilimitada de respuestas
  • Pruebas de práctica ilimitadas
  • Explicaciones con tecnología AI
  • Biblioteca completa de recursos
  • Más de 20 idiomas
  • Actualizaciones semanales de contenido
  • Recompensas y referencias
  • Soporte prioritario
Iniciar prueba gratuita

No se requiere tarjeta de crédito*

Mejor valor
12 meses
179.87
Just €0.49/daySave 40%
Todo incluido:
  • Búsqueda ilimitada de respuestas
  • Pruebas de práctica ilimitadas
  • Explicaciones con tecnología AI
  • Biblioteca completa de recursos
  • Más de 20 idiomas
  • Actualizaciones semanales de contenido
  • Recompensas y referencias
  • Soporte prioritario
Iniciar prueba gratuita

No se requiere tarjeta de crédito*

✓ Plan gratuito incluido · ✓ Cancela en cualquier momento · ✓ Todos los planes desbloquean el producto completo