ESEN

← Letra chica por examen

Amazon Web Services · Associate

SAA-C03 · AWS Certified Solutions Architect - Associate (SAA-C03)

AWS Certified Solutions Architect - Associate

Worker asíncrono con escala a cero y dead-letter

Confiabilidad● verificado hace 34 días◌ sin revisor externo

El visibility timeout de la cola tiene que ser al menos 6 veces el timeout de la Lambda

Si la función tarda más que el visibility timeout, el mensaje vuelve a ser visible y otra invocación lo toma mientras el primero sigue procesando: duplicados garantizados. AWS recomienda visibility timeout ≥ 6× el timeout de la función. El módulo lo calcula y lo valida.

⚑ Reportar desactualizado

Ver en el patrón →

Confiabilidad● verificado hace 34 días◌ sin revisor externo

En colas Standard, el mensaje expira en la DLQ según cuándo entró a la cola original

Al mover un mensaje a la DLQ, SQS conserva el timestamp de encolado original (en FIFO se resetea). Si la DLQ tiene la misma retención que la cola de origen, los mensajes pueden desaparecer de la DLQ casi enseguida. Configurá la retención de la DLQ más larga que la de origen (el módulo usa el máximo, 14 días).

⚑ Reportar desactualizado

Ver en el patrón →

Operación● verificado hace 34 días◌ sin revisor externo

Limitá la concurrencia del event source mapping, no solo la de la función

scaling_config.maximum_concurrency limita cuántas instancias concurrentes de la función puede invocar la cola. Es un setting del event source mapping, independiente del reserved concurrency de la función y sin cargo, y evita que una cola consuma toda la concurrencia reservada o la cuota de la cuenta. Ojo: el reserved concurrency tiene que ser mayor o igual que la suma de los máximos de todos los event sources de la función; si no, Lambda puede hacer throttling de tus mensajes.

⚑ Reportar desactualizado

Ver en el patrón →

Despliegue desde CI sin secretos (federación OIDC)

Seguridad● verificado hace 34 días◌ sin revisor externo

IAM exige una condición sobre sub, pero acepta una que igual abre la puerta

El issuer de GitHub es el mismo para todas las organizaciones: sin acotar el sub, cualquier repositorio de GitHub podría asumir tu rol. Por eso IAM rechaza crear o actualizar una trust policy hacia ese provider si falta la condición sobre sub (o job_workflow_ref) o si es solo un comodín. Pero "repo:*" o "repo:mi-org/*" pasan la validación. El límite real lo ponés vos: este módulo usa StringEquals con un sub por environment.

⚑ Reportar desactualizado

Ver en el patrón →

Confiabilidad● verificado hace 34 días◌ sin revisor externo

La sesión dura 1 hora por default, y encadenar roles la limita a 1 hora sí o sí

AssumeRoleWithWebIdentity da 3600 s por default; podés pedir hasta el MaxSessionDuration del rol (máximo 12 h), y pedir más que eso hace fallar la llamada. Si desde ese rol asumís otro (role chaining, típico en multi-cuenta), la sesión queda en 1 hora como máximo. Un apply largo que se pasa del límite falla a mitad de camino con el state a medio escribir.

⚑ Reportar desactualizado

Ver en el patrón →

DNS privado híbrido (on-premises ↔ nube)

Costo● verificado hace 34 días◌ sin revisor externo

Cada IP de un endpoint es una ENI que se paga por hora, y el mínimo son dos por endpoint

Route 53 Resolver cobra por ENI por hora, además de las consultas, y cada endpoint necesita al menos dos IPs en AZs distintas. Entrada más salida son cuatro ENIs facturando las 24 horas aunque no haya una sola consulta. En GCP la inbound policy y las forwarding zones no tienen cargo por hora. Si tenés varias cuentas, centralizá los endpoints en el hub y compartí las reglas con RAM en lugar de repetirlos.

⚑ Reportar desactualizado

Ver en el patrón →

Ver en el patrón →

Ingesta privada de objetos con expiración (TTL)

Costo● verificado hace 34 días◌ sin revisor externo

La expiración es asincrónica, pero el cobro se corta en la fecha de expiración

S3 encola las expiraciones y las procesa de forma asincrónica: puede pasar desde días hasta semanas entre la fecha de expiración y el borrado real. No se cobra la expiración ni el tiempo de storage de un objeto que ya venció.

⚑ Reportar desactualizado

Ver en el patrón →

Costo● verificado hace 34 días◌ sin revisor externo

En un bucket versionado, Expiration no borra nada

Con versioning habilitado, la acción Expiration solo agrega un delete marker y la versión pasa a noncurrent, que se sigue cobrando. Necesitás además NoncurrentVersionExpiration (y limpiar delete markers huérfanos). Este patrón deja el bucket sin versioning a propósito: el TTL es la protección que se busca.

⚑ Reportar desactualizado

Ver en el patrón →

Costo● verificado hace 34 días◌ sin revisor externo

Los multipart uploads incompletos se siguen cobrando

S3 retiene las partes de un multipart upload hasta que lo completás o lo abortás, y se cobra su storage durante todo ese tiempo. Agregá siempre una regla AbortIncompleteMultipartUpload: abortar el upload borra las partes.

⚑ Reportar desactualizado

Ver en el patrón →

Seguridad● verificado hace 34 días◌ sin revisor externo

Block Public Access y ACLs deshabilitadas son default en buckets nuevos (pero declaralos igual)

Por default, Object Ownership es BucketOwnerEnforced y todas las ACLs están deshabilitadas. AWS anunció que, a partir de abril de 2023, S3 habilitaría Block Public Access y deshabilitaría las ACLs en todos los buckets nuevos, sin cambios para los existentes. Igual declaralos en IaC: declarar el estado evita drift si alguien los toca desde la consola.

⚑ Reportar desactualizado

Ver en el patrón →

Red● verificado hace 34 días◌ sin revisor externo

El Gateway Endpoint es gratis, pero solo sirve dentro de la VPC y la región

Es una entrada en la route table, sin costo por hora ni por GB, y por eso es la opción por defecto para S3. Pero no es alcanzable desde on-premises (VPN/Direct Connect) ni desde otra región. Para esos casos necesitás un Interface Endpoint, que sí se cobra por hora por AZ y es el equivalente real de Private Endpoint en Azure.

⚑ Reportar desactualizado

Ver en el patrón →

IAM● verificado hace 34 días◌ sin revisor externo

Un Deny por aws:SourceVpce también te deja afuera a vos

Un Deny explícito gana sobre cualquier Allow, incluido el del admin. Si la policy niega todo s3:* fuera del endpoint, la consola y el pipeline de CI (que no están en la VPC) pierden acceso, y podés terminar sin poder editar la propia bucket policy. Este módulo limita el Deny a operaciones de objetos y permite excluir principals de break-glass con aws:PrincipalArn.

⚑ Reportar desactualizado

Ver en el patrón →

Web API privada Zero Trust con PostgreSQL sin contraseñas

IAM● verificado hace 34 días◌ sin revisor externo

El usuario IAM de la base se crea con SQL, y con rds_iam deja de aceptar contraseña

Habilitar IAM auth en la instancia no crea ningún usuario. Hay que ejecutar CREATE USER app; GRANT rds_iam TO app; y además los GRANT sobre tablas. En PostgreSQL, a un usuario con rds_iam (incluido el master) la autenticación IAM le gana a la contraseña: no se lo asignes al master si lo necesitás como break-glass.

⚑ Reportar desactualizado

Ver en el patrón →

Confiabilidad● verificado hace 34 días◌ sin revisor externo

El token de IAM auth dura 15 minutos y solo sirve para abrir la conexión

El token vence a los 15 minutos y se usa solo para autenticar: no afecta la sesión una vez establecida, pero si intentás conectarte con un token vencido, la conexión se rechaza.

⚑ Reportar desactualizado

Ver en el patrón →

Costo● verificado hace 34 días◌ sin revisor externo

Fargate en subnet privada sin NAT necesita varios VPC endpoints pagos

Para bajar la imagen sin salida a internet, la tarea necesita interface endpoints de ECR (api y dkr), más el gateway endpoint de S3 (donde ECR guarda las capas). Si usa el driver de logs awslogs, también necesita el interface endpoint de CloudWatch Logs. Cada interface endpoint se cobra por hora por AZ. La alternativa (NAT Gateway) también tiene cargo por hora y por GB.

⚑ Reportar desactualizado

Ver en el patrón →

Seguridad● verificado hace 34 días◌ sin revisor externo

HTTPS en un ALB interno igual necesita un certificado de servidor SSL

Para crear un listener HTTPS hay que desplegar al menos un certificado de servidor SSL (de ACM o de IAM). ACM no puede validar recursos en una private hosted zone de VPC ni en ningún otro dominio privado, aunque el ALB sea interno. ACM no valida la propiedad del dominio en certificados importados ni firmados por una CA privada.

⚑ Reportar desactualizado

Ver en el patrón →

Seguridad● verificado hace 34 días◌ sin revisor externo

Que la contraseña del master user la gestione Secrets Manager

Con manage_master_user_password = true, RDS genera la contraseña del master y la guarda en Secrets Manager. El provider de Terraform no permite combinarlo con password, y RDS no lo soporta en algunos escenarios (por ejemplo Blue/Green deployments), así que decidilo de entrada.

⚑ Reportar desactualizado

Ver en el patrón →