AWS Certified Developer Preparation
Preparing for the AWS Certified Developer Associate (DVA-C01) exam? Don’t know where to start? This post is the AWS Certified Developer Associate Certificate Study Guide (with links to each objective in the exam domain).
I have curated a detailed list of articles from AWS documentation and other blogs for each objective of the AWS Certified Developer Associate (DVA-C01) exam. Please share the post within your circles so it helps them to prepare for the exam.
Course on AWS Certified Developer Associate
LinkedIn Learning (Free trial) | AWS Certified Developer Associate Exam |
Pluralsight | AWS Cert. Dev. Associate [Course + Labs] |
Udemy | AWS Certified Developer Associate Course |
AWS Certified Developer Associate Practice Test
Whizlabs Exam Questions | Dev. Associate [800Qs+Course+50 Labs] |
Udemy Practice Test | Practice Exams AWS Developer (325 Qs) |
Amazon e-book (PDF) | AWS Certified Developer Study Guide |
AWS Certified Developer Associate Other Stuff
Udacity Nanodegree | Become an AWS Cloud Developer |
Amazon e-book (PDF) | AWS Certified Developer Study Guide |
AWS Certified Cloud Practitioner Exam Questions
Check out all the other AWS certificate study guides
Full Disclosure: Some of the links in this post are affiliate links. I receive a commission when you purchase through them.
Domain 1: Deployment – 22%
1.1 Deploy Written Code in AWS Using Existing CI/CD Pipelines, Processes, and Patterns
Commit code to a repository and invoke build, test, and/or deployment actions
Create a commit in AWS CodeCommit
Add a CodeBuild build action to a pipeline
Use AWS CodePipeline with CodeBuild to test code
Use GitHub Actions to deploy serverless apps
Use labels and branches for version and release management
Create a branch in AWS CodeCommit
Work with branches in AWS CodeCommit repositories
Multi-branch CodePipeline strategy
Use AWS CodePipeline to orchestrate workflows against different environments
How to create a workflow with AWS CodePipeline?
Multi-environment CI/CD pipelines with AWS CodePipeline
Apply AWS CodeCommit, AWS CodeBuild, AWS CodePipeline, AWS CodeStar, and AWS CodeDeploy for CI/CD purposes
Complete CI/CD with CodeCommit, CodeBuild, CodeDeploy, & CodePipeline
CI/CD on EKS using CodeCommit, CodePipeline, CodeBuild
Create a CI/CD workflow using AWS CodeStar
Perform a rollback plan based on application deployment policy
Deployment policies & settings
Cancel application deployments
Automate rollback of failed Amazon ECS deployments
A brief overview of different deployment services
AWS CodeCommit
A managed source-control service to host Git repositories in AWS.
AWS CodeBuild
Hosts build servers so you don’t have to. A build service that compiles your code, runs unit tests, and drops artifacts into your target location, ready to be deployed.
AWS CodePipeline
A fully-managed continuous delivery service that defines your release process. Whenever there is a commit to the source control repository, CodePipeline automates the process of building the code, running tests, and releasing it to production.
AWS CodeStar
With CodeStar, developers provision the necessary resources for creating a pipeline for their development activities. You can choose from a variety of project templates (C#, Java, Python, etc.,) and build a variety of apps like websites, web apps, etc.,
The difference between CodeStar and CodePipeline is that the latter is a CI/CD pipeline. Whereas CodeStar allows you to build things from scratch with a set of getting started templates. Targeted for different project scenarios.
AWS CodeDeploy
Automate deployments to different Compute services like EC2, Lambda, or your servers in an on-premises environment.
The difference between CodeDeploy and CodeBuild is that the latter acts as the CI server. Whereas CodeDeploy provides an installable agent that manages deployments to EC2 or just any other compute instances.
1.2 Deploy Applications Using AWS Elastic Beanstalk
Utilize existing supported environments to define a new application stack
AWS Elastic Beanstalk .NET Core: Getting started
Package the application
Create an application source bundle
Installing your application’s dependencies
Introduce a new application version into the Elastic Beanstalk environment
Deploy a new version of your application
Utilize a deployment policy to deploy an application version (i.e., all at once, rolling, rolling with batch, immutable)
Elastic Beanstalk deployment strategies
Configuring application deployments
Validate application health using Elastic Beanstalk dashboard
Enhanced health reporting and monitoring
Use Amazon CloudWatch Logs to instrument application logging
Using Elastic Beanstalk with Amazon CloudWatch logs
View logs from EC2 instances in your Beanstalk environment
Some notes on Elastic beanstalk
Elastic Beanstalk, mainly used by developers, handles applications developed in a variety of frameworks like .NET, Go, Java, PHP, Python, etc., Simply put, you just upload your application to the AWS, and Beanstalk takes care of the infrastructure, load balancing, scaling, and monitoring.
Beanstalk is ideal for 3-tier applications (a number of them are given below)
What is AWS Elastic Beanstalk?
Deploying your first application with Beanstalk
Java applications
.Net applications
1.3 Prepare the Application Deployment Package to Be Deployed to AWS
Manage the dependencies of the code module (like environment variables, config files, and static image files) within the package
Manage dependencies with AWS SDK for Java
Advanced environment customization with config files
Environment properties & other software settings
Outline the package/container directory structure and organize files appropriately
Structuring your project folder
Translate application resource requirements to AWS infrastructure parameters (e.g., memory, cores)
Determine your cloud server requirements
1.4 Deploy Serverless Applications
Given a use case, implement and launch an AWS Serverless Application Model (AWS SAM) template
AWS Serverless Application Model (AWS SAM)
What is the AWS Serverless Application Model?
Mastering the AWS Serverless Application Model
Manage environments in individual AWS services (e.g., Differentiate between Development, Test, and Production in Amazon API Gateway
Manage stages and environments
Deploy AWS Lambda code in different environments
Manage a multi-environment serverless architecture
Amazon link (affiliate)
Domain 2: Security – 26%
2.1 Make Authenticated Calls to AWS Services
Communicate required policy based on the least privileges required by the application
Techniques for writing least privilege IAM policies
Approaching least privilege | IAM policies with usage-based analytics
Assume an IAM role to access a service
Delegate access across AWS accounts using IAM roles
Assume an IAM role using the AWS CLI
Configure a function to assume a role in another account
Use the software development kit (SDK) credential provider on-premises or in the cloud to access AWS services (local credentials vs. instance roles)
2.2 Implement Encryption Using AWS Services
Encrypt data at rest (client-side; server-side; envelope encryption) using AWS services
Protect data at rest with EC2 instance store encryption
Protect data using client-side encryption
Client-side & server-side encryption
Server-side encryption with S3-managed encryption keys
Encrypt data in transit
How do you protect your data in transit?
AWS services use the below tools for encryption
2.3 Implement Application Authentication, and Authorization
What is Amazon Cognito?
Amazon Cognito is the service that provides authentication, authorization for web & mobile apps. It supports simple password authentication or a third-party identity provider like Google, Amazon, Facebook, or Active Directory.
2 main components of Cognito: User pools (directory for user sign-in) and identity pools (granting users access to AWS resources).
Add user sign-up and sign-in functionality for applications with Amazon Cognito identity or user pools
Use the Amazon Cognito hosted UI for sign-up & sign-in
Add social sign-in to a user pool
Use Amazon Cognito-provided credentials to write code that accesses AWS services
Accessing AWS services with Amazon Cognito
Use Amazon Cognito sync to synchronize user-profiles and data
Getting started with Amazon Cognito Sync
Synchronize data with Amazon Cognito
Use developer-authenticated identities to interact between end-user devices, backend authentication, and Amazon Cognito
Developer authenticated identities
Integrate Amazon Cognito with developer authenticated identities
Integrate third-party IdP with developer authenticated identities
Domain 3: Development with AWS Services – 30%
3.1 Write Code for Serverless Applications
Compare and contrast server-based vs. serverless model (e.g., microservices, stateless nature of serverless applications, scaling serverless applications, and decoupling layers of serverless applications)
Server vs. serverless: What’s the best option?
Serverless computing: It’s all about stateless microservices
Design your serverless apps for massive scale
Build scalable serverless apps with S3 & Lambda
Decouple larger applications with EventBridge
Configure AWS Lambda functions by defining environment variables and parameters (e.g., memory, time out, runtime, handler)
Configure Lambda environment variables
Using Lambda environment variables
Create an API endpoint using Amazon API Gateway
Introducing Amazon API Gateway private endpoints
Creating a private API in Amazon API Gateway
Create and test appropriate API actions like GET, POST using the API endpoint
Set up a method request in API Gateway
Use the API Gateway console to test a REST API method
Apply Amazon DynamoDB concepts (e.g., tables, items, and attributes)
Core components of Amazon DynamoDB
Compute read/write capacity units for Amazon DynamoDB based on application requirements
Calculate Read and Write capacity unit for DynamoDB
Associate an AWS Lambda function with an AWS event source (e.g., Amazon API Gateway, Amazon CloudWatch event, Amazon S3 events, Amazon Kinesis)
Use AWS Lambda with Amazon API Gateway
Using AWS Lambda with scheduled events
Tutorial: Use an S3 trigger to invoke a Lambda function
Using AWS Lambda with Amazon Kinesis
Invoke an AWS Lambda function synchronously and asynchronously
Understand the different ways to invoke Lambda functions
3.2 Translate Functional Requirements into Application Design
Determine real-time vs. batch processing for a given use case
Comparison between batch and stream processing
Determine the use of synchronous vs. asynchronous for a given use case
Asynchronous vs. Synchronous responses
Synchronous invocation | AWS Lambda
Asynchronous invocation | AWS Lambda
Determine the use of event vs. schedule/poll for a given use case
Asynchronous client interaction in AWS serverless
Account for tradeoffs for consistency models in an application design
3.3 Implement Application Design into Application Code
Write code to utilize messaging services (e.g., SQS, SNS)
Use Lambda with Amazon Simple Notification Service
Use Amazon ElastiCache to create a database cache
Boost MySQL database performance with ElastiCache
Use Amazon DynamoDB to index objects in Amazon S3
Is DynamoDB suitable as an S3 metadata index?
Build an S3 metadata index without servers
Write a stateless AWS Lambda function
Write code for AWS Lambda | Statelessness & reuse
Implement statelessness in functions
Write a web application with stateless web servers (Externalize state)
Stateful or Stateless? Choose the right approach
3.4 Write code that interacts with AWS services by using APIs, SDKs, and AWS CLI
Choose the appropriate APIs, software development kits (SDKs), and CLI commands for the code components
SDKs & programming toolkits for AWS
AWS Command Line Interface documentation
Write resilient code that deals with failures or exceptions (i.e., retries with exponential backoff and jitter)
Error handling and automatic retries in AWS Lambda
Error retries and exponential backoff in AWS
Timeouts, retries and backoff with jitter
Exponential backoff and Jitter
Other learning material related to CLI, SDKs, and APIs
AWS CLI
Use commands in your command-line tool to interact with the AWS services. This is an alternative to the browser-based AWS Console to create, update, delete, or modify your AWS resources.
What is the AWS Command Line Interface?
AWS SDK
Use any of the programming language SDKs to develop applications on AWS
APIs
Domain 4: Refactoring – 10%
4.1 Optimize Application to Best Use AWS Services and Features
Implement AWS caching services to optimize performance (e.g., Amazon ElastiCache, Amazon API Gateway cache)
Boost application performance with Amazon ElastiCache
ElastiCache performance boost with EC2 M5 & R5 instances
Enabling API caching to enhance responsiveness
Apply an Amazon S3 naming scheme for optimal read performance
Design patterns: Optimizing Amazon S3 performance
Understand Amazon S3 object key naming patterns
Amazon S3 performance tips & tricks
Bucket naming rules in Amazon S3
4.2 Migrate Existing Application Code to Run on AWS
Isolate dependencies
Explicitly declare and isolate dependencies
Run the application as one or more stateless processes
Execute the app as one or more stateless processes
Twelve-factor app methodology: Process
Develop in order to enable horizontal scalability
AWS well-architected framework | Horizontal scaling
Scale your RDS instance vertically & horizontally
Horizontal scaling & parallelization for high throughput
Externalize state
AWS migration scenarios
a. Lift-and-shift solutions
Typically for legacy applications that need to be rehosted in the cloud.
CloudEndure Migration
AWS VM Import/Export
b. Replatforming
Reduce administration/infrastructure overhead by migrating on-premises applications to use PaaS services in the cloud to take advantage of scalability & flexibility
Example: AWS Database Migration Service
Domain 5: Monitoring and Troubleshooting – 12%
5.1 Write Code That Can Be Monitored
Create custom Amazon CloudWatch metrics
Create CloudWatch custom metrics
Perform logging in a manner available to systems operators
Complexities and best practices for AWS Lambda logging
Logging requests using server access logging
Instrument application source code to enable tracing in AWS X-Ray
Trace Lambda functions in AWS X-Ray
Configure X-Ray tracing for your AWS Batch jobs
5.2 Perform Root Cause Analysis on Faults Found in Testing or Production
Interpret the outputs from the logging mechanism in AWS to identify errors in logs
View Amazon OpenSearch Service error logs
Find API Gateway REST API errors using CloudWatch logs
Check build and testing history in AWS services (e.g., AWS CodeBuild, AWS CodeDeploy, AWS CodePipeline) to identify issues
View build details in AWS CodeBuild
AWS CodePipeline details and history
View pipeline details and history
Utilize AWS services (e.g., Amazon CloudWatch, VPC Flow Logs, and AWS X-Ray) to locate a specific faulty component
Using filter expressions to search for traces
Investigate & troubleshoot network issues
This brings us to the end of the AWS Certified Developer Associate (DVA-C01) Exam Study Guide.
What do you think? Let me know in the comments section if I have missed out on anything. Also, I love to hear from you about how your preparation is going on!
In case you are preparing for other AWS certification exams, check out the AWS study guides for those exams.
Get Updates on AWS Certified Developer Exam
Want to be notified as soon as I post? Subscribe to the RSS feed / leave your email address in the subscribe section. Share the article to your social networks with the below links so it can benefit others.