AWS Certified Associate Developer 101 ¿Qué es lo que necesitas saber?
Tags: certification, aws, spanish, learning
Published: 2022-04-12 15:47:44

La certificación AWS Developer — Associate está dirigido a personas que desempeñen un cargo de desarrollador, y que desean demostrar sus conocimientos en cuanto al uso de lambdas, sam, dynamodb, apigateway, seguridad y otras tecnologías.

En este artículo contare un poco de la experiencia que se puede esperar al agendar y rendir el examen en la plataforma Pearson Vue, y algunos tips de como aprobar el examen.


**Sobre el examen**

- Tiene una duración de 130 minutos.
- Tiene un costo de $150 USD.
- Es de opción múltiple con una sola respuesta, o de múltiple respuesta, normalmente el enunciado menciona la cantidad de posibles respuestas correctas.
- No hay penalización por responder erróneamente.
- La nota mínima para aprobar en una escala de 1000, es de 725.
- Al finalizar el examen, solo hay un mensaje PASS o FAIL, el reporte de la certificación no llega a nuestro correo, debemos revisarlo en la plataforma de AWS training, en un promedio de 1–5 días laborables.

**Requisitos**

- No es necesario tener certificación previa.
- Contar con una buena conexión de internet, cámara y micrófono (integrados preferibles).

**Consideraciones importantes**

- El examen es completamente en inglés (en un futuro no muy lejano habrá versiones beta en español, pero aún así recomiendo tomarlas en inglés los términos de la consola cambian drásticamente).
- Contar con un documento de identidad como pasaporte o documento de identificación entregada por el gobierno (cédula de ciudadanía).
- El examen es bajo la modalidad proctored, esto quiere decir que una persona estará monitoriando tu actividad durante el examen.
- La comunicación con el proctor será en inglés.
- Es necesario contar con un espacio de trabajo despejado, sin papeles o aparatos electrónicos cerca del alcance, en el caso de contar con monitores extra se los debe desenchufar.
- No llevar relojes.
- Si la persona se aleja de la cámara sin justificarlo, o aparece una persona ajena, o si existe ruido el examen puede ser revocado sin opción a reclamo.
**Recomendaciones**

- Leer el enunciado una vez, pero de manera detallada, en el caso de no estar seguro de la respuesta correcta, seleccionar la opción “Flag for review”, para re-visitarla una vez completada las demás preguntas.
- A veces puede haber más de una solución, normalmente las opciones más complejas y rebuscadas suelen no ser las correctas, identificar el requerimiento que se pide al leer la última pregunta del enunciado, normalmente estos requerimientos tienen palabras como, low cost, optimized, fast, speed entre otras.
- Hacer check-in 30 minutos antes y tener nuestro celular cargado, debido a que tomaremos varias fotografías de nuestro espacio de trabajo en 4 ángulos.

![Capturas de nuestro espacio de trabajo](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nztmjc4x48wtpmhyxq04.png)
 
**Ejemplo de pregunta**

```
A programmer is developing a Node.js application which will be run in a Linux server on their on-premises data center. The application will access various AWS services such as S3, DynamoDB, and ElastiCache using the AWS SDK.

Which of the following is the MOST suitable way to provide access to the developer in order to accomplish the specified task?
Create an IAM role with the appropriate permissions to access the required AWS services. Assign the role to the on-premises Linux server.

**Go to the AWS Console and create a new IAM user with programmatic access. In the application server, create the credentials file at ~/.aws/credentials with the access keys of the IAM user.**

Create an IAM role with the appropriate permissions to access the required AWS services and assign the role to the on-premises Linux server. Whenever the application needs to access any AWS services, request for temporary security credentials from STS using the AssumeRole API.

Go to the AWS Console and create a new IAM User with the appropriate permissions. In the application server, create the credentials file at ~/.aws/credentials with the username and the hashed password of the IAM User.
```
Si tienes recursos que se ejecutan dentro de AWS, que necesitan acceso programático a varios servicios, la mejor práctica es utilizar siempre roles de IAM. Sin embargo, para las aplicaciones que se ejecutan fuera de un entorno de AWS, estas necesitarán claves de acceso para el acceso programático a los recursos de AWS. Por ejemplo, las herramientas de monitorización que se ejecutan en las instalaciones y las herramientas de automatización de terceros necesitarán claves de acceso.

Las claves de acceso son credenciales a largo plazo para un usuario de IAM o el usuario raíz de la cuenta de AWS. Puedes utilizar las claves de acceso para firmar solicitudes programáticas a la CLI de AWS o a la API de AWS (directamente o utilizando el SDK de AWS).

Para utilizar el SDK de AWS en cualquier aplicación, hay que agregar nuestras claves en el archivo: ~/.aws/credentials en Linux o en Windows C:\User\credentials.

Nuestro archivo de credenciales estará conformado por:

- Nombre del perfil
- Access key
- Secret Access key
- La región a los recursos que se desean acceder

La respuesta correcta es: Go to the AWS Console and create a new IAM user with programmatic access. In the application server, create the credentials file at ~/.aws/credentials with the access keys of the IAM user.

La opción: Create an IAM role with the appropriate permissions to access the required AWS services and assign the role to the on-premises Linux server. Whenever the application needs to access any AWS services, request for temporary security credentials from STS using the AssumeRole API, es incorrecta debido a que el escenario plantea el hecho de que una aplicación se está ejecutando en un servidor Linux on-premise, y no en una instancia de EC2. No es posible acceder directamente con un IAM Role a un servidor on-premise. Aunque es posible utilizar una combinación STS y IAM Role, el uso de claves de acceso para utilizar el SDK de AWS es preferible.

La opción: Create an IAM role with the appropriate permissions to access the required AWS services. Assign the role to the on-premises Linux server, es incorrecta debido a que el uso de IAM Roles no una solución posible para este escenario.

La opción: Go to the AWS Console and create a new IAM User with the appropriate permissions. In the application server, create the credentials file at ~/.aws/credentials with the username and the hashed password of the IAM User, es incorrecta por que se debe utilizar claves de acceso (access key ID and secret access key), no un usuario y contraseña.

**Otros ejemplos**
[Aws Dev cert example](https://d1.awsstatic.com/training-and-certification/docs-dev-associate/AWS_certified_developer_associate_examsample.pdf)

**Estructura del examen**
El examen contempla 5 dominios, dividimos de la siguiente forma:
![5 Dominios](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d3u0tgvka8aiz5x15obq.png)

Una gran parte del examen se enfoca en el uso de varias tecnologias cono DynamoDB, Cloudfront, Cloudformation, S3, Lambdas.

**Referencia**
[Associate exam](https://d1.awsstatic.com/training-and-certification/docs-dev-associate/AWS_Certified_Developer_Associate-Exam_Guide_EN_1.4.pdf)

**Lenguajes de programación**
No es necesario conocer algún lenguaje de programación en específico, sin embargo, seria bueno familiarizarse con Python y go, también es recomendado conocer flujos de programación y entender pseudocódigo.

Hay algunos fragmentos de código a modo de configuraciones que utilizan formato json o yaml, por lo que resulta útil familiarizarse con la sintaxis.

## **Que temas recomiendo aprender**
**DynamoDB**

- Para cualquiera de las certificaciones de AWS vale la pena conocer los fundamentos de DynamoDB. Esto es especialmente importante en este examen, que se centra en cómo utilizar el producto en el mundo real.
- Conocer conceptos como: Tables, Items, Attributes.
- Conocer la diferencia entre una Partition Key (PK) y una Sort key (SK).
- Saber qué operación incurre en el uso de uno o multiples PK, o filtros basados en uno o más SK.
- Saber operaciones como getItem, query, scan, entre otras y CUANDO es recomendado utilizar SCAN vs QUERY y viceversa.
- Super importante saber la diferencia entre Global Secondary Index (GSI) vs Local Secondary Index (LSI).
- Entender el concepto de DynamoDB Streams, Old, New, New and Old y como funciona con AWS lambdas.
- Cuando utilizar DynamoDB AutoScaling vs DAX.
- Entender la diferencia entre RDS vs Aurora vs DynamoDB.

Un tema bastante importante y que es muy posible que al menos una pregunta corresponda a este tema es saber cómo calcular RCU y WCU, por lo que es necesario comprender cuando utilizar strong consistency vs eventual consistency, cuántas unidades de RCU o WCU equivale cada uno, y como calcular esas unidades dado un filesize.
![Calculator](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/18xcf3nfdfupv9wu3szi.png)
 
**Lecturas recomendadas**
[Read/Write Capacity Mode — Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html)
[Change Data Capture for DynamoDB Streams — Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Streams.html)
[StreamSpecification — Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_StreamSpecification.html)

**EC2**
No es un tema tan grande en Developer, pero hay ciertos temas que sería bueno repasarlos.

- Conocer el agente para obtener logs en la instancia de EC2 (Cloudwatch Agent).
- Cómo funcionan los IAM roles en la instancia de EC2.
- Conocer los tipos de storages en EC2 (EBS vs EFS vs S3), conocer que significa instance storage.
- Conocer grupos de seguridad inbound outbound rules.
- Conocer los tipos de instancia (spot, scheduled, on-demand).

**Elastic Beanstalk**

- Entender como está compuesto y cómo funciona Elastic Bean Stalk
- Cuando es recomendable utilizarlo vs una arquitectura Serverless.
- Conocer cuáles son los archivos de configuración de ELB. (Monitoring, Health, Configuration normalmente estos archivos tienen una sintaxis. yml).
- Conocer como ELB escala, versionamiento, como cambiar de ambiente.

**Serverless Application Model (SAM).**

- Conocer cómo crear templates en JSON y en YML.
- Conocer la sintaxis claramente, ejemplo: donde podemos empaquetar nuestro código dentro de nuestro template, o cómo podemos definir nuestra API.
- Muy importante conocer los comandos de SAM a nivel de CLI.
- Como se despliegan las aplicaciones SAM con Cloudformation.

**Monitoreo**

- Conocer cuando se utiliza CloudWatch, CloudTrail, X-ray, VPC logs
- Conocer que métricas es posible loggear con Cloudwatch, cuál es su relación con lambdas y cómo podemos identificar errores.
- Entender que es un namespace en cloudwatch.
- Conocer las partes más importantes de X-Ray, que es un segmento y un sub-segmento y sus partes (ejemplo: que hace namespace, aws, http…).
- En donde enviar metadata para realizar debugging, entender que es Annotations y cuando utilizarlos.
- Como configurar X-Ray daemons (entender las caracteristicas del archivo xray-daemon.config).

**Lecturas recomendadas**
[AWS X-ray](https://docs.aws.amazon.com/lambda/latest/dg/lambda-x-ray.html#viewing-lambda-xray-results)
[Configuring the X-Ray SDK for Node.js — AWS X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/xray-sdk-nodejs-configuration.html)
[Configuring the X-Ray SDK for Python — AWS X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/xray-sdk-python-configuration.html)
[Logging IP traffic with VPC Flow Logs — Amazon Virtual Private Cloud](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html)
[Running the X-Ray daemon on Amazon EC2 — AWS X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/xray-daemon-ec2.html)
[AWS X-Ray concepts — AWS X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/xray-concepts.html)
[AWS X-ray annotations](https://docs.aws.amazon.com/xray/latest/devguide/xray-concepts.html#xray-concepts-annotations)
[Using filter expressions to search for traces in the console — AWS X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/xray-console-filters.html)
[AWS Cloudwatch options](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Namespace)
[Viewing available metrics — Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/viewing_metrics_with_cloudwatch.html)
[AWS services that publish CloudWatch metrics — Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/aws-services-cloudwatch-metrics.html)

**S3**

- Entender el concepto de Bucket, Object, metadata
- Conocer los tipos de S3 (Standard, IA, Glacier, etc)
- Conocer los lifecycle policies
- Conocer cuando utilizar multipart upload
- Conocer que es transfer acceleration
- Conocer qué tipo de encriptación es posible aplicar a un bucket de S3 (va bastante relacionado a KMS, envelope encryption, key rotation CMK)
- Como permitir a usuarios externos visualizar objetos de S3 o permitir acciones GET, PUT (preSigned URL, cookies)
- Conocer cómo se relaciona S3 con lambdas (escuchar eventos S3 y utilizar lambdas para procesamiento)

- Entender como configurar CORS y sus políticas de seguridad, ejemplo:

```
<?xml version="1.0" encoding="UTF-8"?> 2<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> 3 <CORSRule> 4 <AllowedOrigin> </AllowedOrigin> 5 <AllowedMethod>GET</AllowedMethod> 6 <AllowedMethod>PUT</AllowedMethod> 7 <AllowedMethod>POST</AllowedMethod> 8 <AllowedMethod>DELETE</AllowedMethod> 9 <AllowedHeader>*</AllowedHeader> 10 <ExposeHeader>ETag</ExposeHeader> 11 <ExposeHeader>x-amz-meta-custom-header</ExposeHeader> 12 <MaxAgeSeconds>3600</MaxAgeSeconds> 13 </CORSRule> 14</CORSConfiguration>
```
**ApiGateway**
Es una gran parte de este examen, por lo que es recomendable conocer a fondo como funciona con otros servicios en especial lambdas.

- Conocer las diferentes formas de crear apis con templates o SDK
- Conocer que son stage variables
- Conocer TTL, caching
- Conocer cuando utilizar edge vs regional vs private
- Conocer como API Gateway interactúa con lambdas y elb
- Entender como regresar a una versión anterior de una API
- Como implementar autorización con lambdas o cognito
- Proxy integration y lambdas
- Como realizar error handling
**Nota**: Normalmente los errores 502 son errores de integración mientras que los errores 504 son de timeout es importante identificar estas palabras clave en las preguntas.

**Nota**: Una implementación de seguridad comúnmente utilizada con Api Gateway es AWS WAF/ AWS Guard, debido a que da protección contra ataques XSS.

**Referencias**
[Amazon API Gateway quotas and important notes — Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/limits.html)
[Custom Timeouts](https://aws.amazon.com/about-aws/whats-new/2017/11/customize-integration-timeouts-in-amazon-api-gateway/)
[Gateway response types — Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/supported-gateway-response-types.html)
[Amazon API Gateway dimensions and metrics — Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-metrics-and-dimensions.html)
[Monitoring REST API execution with Amazon CloudWatch metrics — Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/monitoring-cloudwatch.html)
[Malforme 502 Api Gateway](https://aws.amazon.com/premiumsupport/knowledge-center/malformed-502-api-gateway/)
[Simple Proxy](https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html#api-gateway-simple-proxy-for-lambda-output-format)
[Error handling](https://docs.aws.amazon.com/apigateway/api-reference/handling-errors/)

**Security**

- Encriptación, Cognito y IAM es una parte bastante grande del examen, por lo se recomienda dedicarle mayor tiempo a esta sección
- Entender a profundidad KMS, cuando se utiliza vs CMKs, cuando la maneja el usuario cuando lo maneja AWS, los algoritmos disponibles
- Comprender como funciona envelope encryption.
- Entender el tamaño de los datos que pueden ser encriptados con KMS, encriptación por segundo, des-encriptación, rotación.
- Entender cómo funciona KMS con S3 y RDS.
- Comprender IAM a profundidad, usuarios, grupos, policies, roles, trust relationship.
- Que es IAM federate/Cognito Federation.
- Entender cuando utilizar AWS Organizations.
- Entender cómo escribir policies en JSON.
- Entender las diferentes formas de autenticación, tanto on-premise como en la nube de AWS (ejemplo: servidores Windows Active Directory, o autenticación por SAML).
- ¿Entender que es STS, cuando se utiliza? O cuando utilizarlo vs Access keys.
- Entender cómo funciona cognito y como se autentican usuarios con JWT, OAuth, user pools, federate users, MFA.

**Lambdas**

- Entender la estructura y declaración de una función lambda.
- Conocer como optimizar funciones lambda en código.
- Comprender Parameter store y secure strings.
- Entender que es un layer.
- Entender versionamiento.
- Las diferentes formas de agregar código a una función lambda.
- Invocar funciones diferencias y ventajas entre asynchronous vs synchronous.
- Como a una lambda se le da acceso a internet en un VPC.

**Nota**: Es importante aprender sobre Step Functions y su relación con lambdas, también es recomendado conocer de manera general AWS Simple Workflow (SWF).

[Configuring a Lambda function to access resources in a VPC — AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/vpc.html)
[Internet access lambda function](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/)

**Kinesis**
Conocer de manera general, los servicios de kinesis, en especial kinesis data stream.

Importante recordar: cuando se necesita mayor capacidad, dividir los shards de kinesis, cuando se necesita menor capacidad agruparlos.

Conocer la diferencia entre hot y cold shards.

Conocer que es un KCL (cuando existen preguntas que involucran este tema normalmente la cantidad de shards es igual a la cantidad de instancias EC2 que necesitan ser desplegadas.

**Conocer de manera general los siguientes servicios**

- Elastic cache vs Redis
- Cloudfront y su relación con S3 (OAI)
- VPC (VPC Endpoint, VPC logs)
- SQS (Dead letter Q, Long vs Short polling)
- ECS, EKS, ECR
- RDS (Read replicas, Multi Zone), RDS with Aurora
- CodeCommit, CodeDeploy, Codebuild, CodePipeline (actions ejemplo: crear un approval stage en nuestro pipeline), CodeStar.

Aunque en un principio pueden resultados muchos servicios, aprender cada uno de ellos te dará una visión de cómo funciona la arquitectura de AWS, recuerda que estos servicios se relacionan entre así o todas son un conjunto de una solución. Te deseo la mejor de las suertes, recuerda leer cada pregunta cuidadosamente, y no desperdiciar el tiempo puedes volver a la pregunta siempre que quieras.

**Cursos que recomiendo (según mi opinión personal)**

Los siguientes cursos los recomiendo por que su contenido siempre esta actualizado, y aporta bastante en el proceso de aprendizaje y preparación para la certificación, recomiendo jugar un poco con los servicios más importantes presentes en esta certificación, sea creando una cuenta personal configurada con alarmas o limites de gastos, para evitar costos innecesarios, o accediendo a un servicio de sandbox ofertados por terceros.

[Ultimate AWS Certified Developer Associate 2022 — NEW!](https://www.udemy.com/course/aws-certified-developer-associate-dva-c01/?couponCode=JUN_21_GET_STARTED)
[AWS Certified Developer Associate Exam Training DVA-C01](https://www.udemy.com/course/aws-certified-developer-associate-exam-training/)
[AWS Certified Developer Associate Practice Exams](https://www.udemy.com/course/aws-certified-developer-associate-practice-exams-amazon/)

**Cursos que no recomiendo (según mi opinión personal)**

**ACloudGuru**, bastante contenido desactualizado y que no es relevante o no profundiza lo suficiente

**Whizlab**, contenido bastante desactualizado, algunas de las preguntas son bastante simples o no reflejan la dificultad adecuada del examen

**WhitePapers**
Vale la pena revisarlos, si nos encontramos con algo de tiempo libre.

[Microservices AWS](https://d1.awsstatic.com/whitepapers/microservices-on-aws.pdf)
[Running containerized microservices](https://d1.awsstatic.com/whitepapers/DevOps/running-containerized-microservices-on-aws.pdf)
[Optimizing enterprise economics](https://d1.awsstatic.com/whitepapers/optimizing-enterprise-economics-serverless-architectures.pdf)
[Serverless Architectures](https://d1.awsstatic.com/whitepapers/serverless-architectures-with-aws-lambda.pdf)
[Practicing CI CD](https://d1.awsstatic.com/whitepapers/DevOps/practicing-continuous-integration-continuous-delivery-on-AWS.pdf)
[Blue Green Deployments](https://d1.awsstatic.com/whitepapers/AWS_Blue_Green_Deployments.pdf)
[Aws CLoud Best practices](https://d1.awsstatic.com/whitepapers/AWS_Cloud_Best_Practices.pdf)
[AWS Security Best Practices](https://d0.awsstatic.com/whitepapers/Security/AWS_Security_Best_Practices.pdf)
[Well Architected Framework](https://docs.aws.amazon.com/wellarchitected/latest/framework/wellarchitected-framework.pdf)
[Certificaiton Preparation](https://aws.amazon.com/es/certification/certification-prep/)

Espero que este articulo te sea de ayuda y que te animes a obtener esta certificación.