Amazon DVA-C02: CloudFormation e infraestructura como código (SAM, CDK) — 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.
Patrones principales de CloudFormation y mejores prácticas para plantillas
Las plantillas de CloudFormation deben crearse como descripciones declarativas e idempotentes de los recursos, favoreciendo stacks pequeños y enfocados, y stacks anidados para arquitecturas complejas. Utilice la sección Resources con IDs lógicos explícitos, y prefiera las funciones intrínsecas como !Ref, !GetAtt, !Sub, Fn::FindInMap y Fn::If para la composición y reutilización. Valide las plantillas con
undefined
o los equivalentes de SAM/CDK (
undefined
,
undefined
) antes de crear conjuntos de cambios. Use ChangeSets (
undefined
/
undefined
) para la revisión y para evitar reemplazos inesperados; use
undefined
para inspeccionar las acciones que el stack realizará. Mantenga el cuerpo de la plantilla por debajo de los límites de CloudFormation moviendo el código en línea de gran tamaño a S3 y referenciándolo (
undefined
,
undefined
), o divídalo en stacks anidados con
undefined
. Aplique la detección de desviaciones (drift) regularmente usando
undefined
y
undefined
. Utilice
undefined
y
undefined
para proteger los recursos que contienen datos, y habilite la protección contra terminación en los stacks críticos. Integre
undefined
y
undefined
en su CI/CD para detectar problemas estructurales e infracciones de políticas de forma temprana. Para una iteración rápida, aproveche los ChangeSets y las estrategias de actualización a nivel de recurso para minimizar el radio de impacto; para las funciones Lambda, utilice despliegues versionados para que las actualizaciones sean seguras y reversibles.
Parametrización, mapeos, secretos y datos sensibles
Parametrice las diferencias entre entornos con Parameters y Mappings de CloudFormation, usando
undefined
y
undefined
para fallar rápido. Evite incrustar secretos o credenciales en texto plano en los Parameters; en su lugar, utilice
undefined
de SSM Parameter Store o Secrets Manager y referéncielos mediante referencias dinámicas como
undefined
o use tipos
undefined
. Marque los parámetros sensibles con
undefined
para enmascarar los valores en la consola, pero reconozca que
undefined
no cifra los datos en reposo — utilice Secrets Manager para la auditoría y rotación. Utilice Mappings y
undefined
para valores determinísticos y específicos del entorno (IDs de AMI por región) y
undefined
para el cálculo de las zonas de disponibilidad. Para referencias a recursos entre stacks en la misma región/cuenta, exporte los outputs e impórtelos mediante
undefined
; recuerde que las importaciones no pueden cruzar cuentas o regiones. Proteja las entidades principales (principals) de IAM utilizadas por CloudFormation delimitando los roles con el principio de privilegio mínimo; prefiera los permisos administrados por el servicio para StackSets o aprovisione explícitamente un rol de administración con un alcance limitado. Al pasar variables de entorno a contenedores o Lambda, prefiera referenciar los ARN de Secrets Manager o los ARN de SSM Parameter y utilice la recuperación en tiempo de ejecución en el código, o use las características de SAM/CDK para inyectar valores seguros en el entorno con cifrado a través de KMS.
Despliegues entre cuentas/regiones, patrones multicuenta de CDK y SAM
Los despliegues entre cuentas y entre regiones requieren una orquestación que va más allá de las exportaciones de un solo stack. Para despliegues multicuenta/multirregión, elija CloudFormation StackSets (
undefined
,
undefined
) con permisos administrados por el servicio para Organizations o autoadministrados con un rol de ejecución en las cuentas de destino. Para los artefactos de código de la aplicación, utilice buckets de S3 centralizados con replicación entre cuentas o políticas de bucket, o deje que las herramientas publiquen los activos por región: CDK utiliza stacks de bootstrap y activos publicados a través de
undefined
y requiere ejecutar
undefined
en cada cuenta/región; CDK Pipelines (módulo
undefined
) o el CLI de
undefined
con
undefined
soportan la promoción entre cuentas. SAM utiliza
undefined
/
undefined
, que sube los artefactos a un bucket de S3; para un entorno multicuenta, utilice CI/CD para empaquetar y subir los artefactos a los buckets de las cuentas de destino y ejecutar los despliegues con las credenciales apropiadas. Evite las búsquedas de contexto de CDK (
undefined
, etc.) que requieren permisos específicos de la cuenta en el momento de la síntesis (synth); en su lugar, pase explícitamente los identificadores como parámetros para mantener la síntesis reproducible. Utilice AWS CodePipeline o GitHub Actions con roles asumidos (
undefined
) para realizar despliegues en las cuentas de destino, asegurándose de que existan el bootstrap y los roles vinculados al servicio necesarios. Recuerde que las exportaciones de CloudFormation son regionales; prefiera StackSets o despliegues impulsados por pipelines para la distribución entre cuentas.
Recursos personalizados, protección de stacks y aceleradores de despliegue local/incremental
Utiliza recursos personalizados cuando CloudFormation carezca de un tipo de recurso nativo, implementando proveedores respaldados por Lambda que respeten el protocolo de respuesta de CloudFormation para eventos de Create/Update/Delete. Construye manejadores (handlers) idempotentes, responde con cfn-response o el framework de la CLI de CloudFormation, y maneja acciones de larga duración con eventos de progreso o almacenando el estado en DynamoDB. Ten en cuenta los tiempos de espera (timeouts) de los recursos personalizados: CloudFormation tiene un tiempo de espera máximo para la operación del stack, y los recursos respaldados por Lambda deben completarse dentro de ese margen o provocarán un rollback del stack. Protege los recursos críticos con políticas de stack (SetStackPolicy) para bloquear el reemplazo o las actualizaciones de los ID lógicos especificados durante las actualizaciones del stack, y habilita la protección contra terminación para los entornos que no puedes permitirte eliminar. Para el desarrollo incremental y local, utiliza la CLI de AWS SAM (sam build, sam local invoke, sam local start-api) y sam sync para actualizaciones rápidas solo de código, y CDK watch o cdk deploy con assets para actualizar solo los recursos modificados; estas herramientas calculan hashes de los assets (lambda asset hashing) para que solo se vuelva a publicar el código que ha cambiado. Integra ChangeSets de CloudFormation, versionado de Lambda (AutoPublishAlias en SAM o lambda.Version en CDK) y desvío de tráfico con CodeDeploy para despliegues seguros. Las trampas comunes incluyen exceder los límites de la plantilla o de los parámetros, usar importaciones entre cuentas incorrectamente e inicializar clientes SDK pesados dentro de los manejadores, causando latencias de arranque en frío (cold-start); es preferible usar clientes globales, inicializados de forma diferida (lazy-initialized) con tiempos de espera y comportamiento de reintentos configurables.
Problema Práctico: Escenario de Caso de Uso
Escenario: AcmeMedia gestiona una organización de AWS multicuenta con cuentas separadas para Dev, Staging y Prod en la región us-east-1. Un servicio serverless de procesamiento de imágenes (Lambda + S3 + DynamoDB) debe desplegarse de manera consistente en todas las cuentas, con una configuración sensible compartida y almacenada de forma centralizada.
Desafío: Desplegar el mismo stack de CloudFormation/SAM/CDK en múltiples cuentas y asegurar que los artefactos de código de Lambda estén disponibles de forma segura en cada cuenta de destino, manteniendo los secretos fuera de las plantillas.
Enfoque Recomendado:
- Utiliza AWS CloudFormation StackSets con permisos administrados por el servicio (aws cloudformation create-stack-set –stack-set-name ImageProcessor –template-body file://template.yaml) y luego aws cloudformation create-stack-instances para apuntar a las cuentas y regiones de destino, o configura CDK Pipelines para sintetizar (synth) y desplegar por cuenta con roles.
- Empaqueta los assets de Lambda utilizando la publicación de assets de CDK (cdk bootstrap en cada cuenta/región) o sam package a un bucket de S3 en cada cuenta de destino; automatiza la copia de assets a través de CI (CodeBuild usando aws s3 cp o replicación de S3) y utiliza cdk deploy o sam deploy con las credenciales de la cuenta de destino.
- Almacena la configuración sensible en AWS Secrets Manager en cada cuenta, referenciándola en la plantilla mediante referencias dinámicas ({{resolve:secretsmanager:arn:aws:secretsmanager:us-east-1:123456789012:secret:ImageProcSecret:SecretString:apiKey}}) o despliega un secreto replicado a través de la funcionalidad de replicación de Secrets Manager, evitando los parámetros NoEcho.
- Usa ChangeSets (create-change-set, execute-change-set), habilita la protección contra terminación en los stacks de producción y utiliza políticas de stack para prevenir el reemplazo accidental de tablas de DynamoDB o buckets de S3 durante las actualizaciones.
Justificación: Los StackSets y los despliegues impulsados por pipelines proporcionan una propagación segura y auditable entre múltiples cuentas/regiones, mientras que la publicación de assets y los secretos por cuenta mantienen las credenciales locales y auditables. Los ChangeSets, la protección contra terminación y las políticas de stack reducen el riesgo durante los despliegues iterativos.
← Amazon DynamoDB y diseño NoSQL · Todos los dominios · Despliegue y CI →
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 →