Certifications

My experience with AWS certifications

Preparing for an AWS certificate can feel scary and overwhelming for many of us. How do I prepare? How difficult is it? Is this certification relevant for me? Since the beginning of this year, I’ve passed both AWS Professional exams and I would like to share my thoughts and answer some of the questions I had before I got started.

For sitting absolutely still, few things get the heart rate going as those three seconds between pressing the “Submit” button and finding out if you passed the AWS exam or not. You’ve probably studied for a few weeks, took time out of your busy day to travel to a certification center. You sat through a draining barrage of questions and you are about to find out if you managed to do enough. I hope that this article will improve your chances of seeing that message that says “Grade: Pass”.

Why should I study for an AWS certificate?

AWS releases new features and services every other week. It can be difficult to keep up and even harder to know how to best combine these services to solve your business problems.

While hands-on experience is king, knowing the strengths and capabilities of a wider range of services can give you an edge and help you gain the courage to try things outside your comfort zone. 

Additionally, organizations can register the certifications of their employees in the APN Partner Central and having a certain amount of certifications in a company is a requirement to reach different partner tiers with AWS.

Which certification fits me?

There are different certifications that you choose from depending on your role and experience within AWS. If you have little or no experience with AWS, you are recommended to start with Cloud Practitioner and then choose an Associate certification based on your role. If you pass the Associate exam, you can move to a Professional certification. With each step, the level of complexity ramps up and you are expected to have a deeper understanding of each service to pass the exam.

The image shows the available certifications, excluding the Specialty level. From https://aws.amazon.com/certification/

You should choose the path based on which role you want to excel at, but know that the exams have many similarities and you will often get the same type of question regardless if you are doing a developer or solutions architect exam.

There is also a certification type called Specialty. These go in-depth on specific topics such as Advanced Networking, Security, Big Data and more. I have not tried these myself.

How I studied

Regardless of exam difficulty I would say that everything below still applies. The difference is just that the professional exams require more time spent studying and will be very difficult if you have no prior AWS experience.

For me, answering scenario based questions and being told in bold red text why you were wrong tends to stick more than reading and listening to course material. With that said, I like to start with one course to set a foundation and my choice is usually at https://acloud.guru/aws-cloud-training. The material is relatively short compared to some of the other training courses I’ve seen out there and I like the mix of theory, hands-on labs and topic specific quizzes. 

Then I seek out as many practice exams I can get my hands on and this is really where I feel like I get the most knowledge out of each hour spent. You want to find the practice exams that explain why each correct answer was correct and why the incorrect answers didn’t make sense. It’s very important that you go back and read the explanations for each question. Even the ones that you got right. I do not use these exams to try and figure out where I am in terms of passing grade. 

I recommend https://linuxacademy.com/ which has one exam for each certificate, but I find that the best practice exams can be bought over at https://www.udemy.com/. There are tons of community made exams here and it’s wise to pick the ones with many good reviews. The questions will closely resemble the more difficult questions you will see in the real exam. For the DevOps Professional exam I actually failed 4 out of 5 practice exams on the week of the real exam while still passing the real exam with a 85% score. So don’t be completely discouraged if you are hovering just below the minimum passing score when doing the practice exams!

AWS provides sample questions for each certificate and also a practice exam that you sign up for just like you would a real exam. You won’t be given a detailed explanation to each question here, so you will have to do the research yourself which is also good practice.

One point could be made that by focusing on practice exams, you move the focus from building AWS skills to simply learning how to pass exams. But I disagree. The practice exams and real exams are made up of scenario based questions that will look exactly like real world problems. Then you need to figure out which combination of methods and AWS services that best solves that scenario. Just like you would at your job as a DevOps technician or Solutions architect.

The exam

To pass an AWS Certification exam you need between 70-75% score depending on each exam. Each question can either have one correct answer or require a combination of up to 3 answers.

Be careful with time management during the real exam and especially for the professional exams. These questions and answers can be pretty long and take a lot of time to read through. A professional exam consists of 75 questions in 180 minutes and looking at the clock after each question will just disrupt your focus and make you stressed. Try to think of it as 25 questions each hour and look up at the clock every 30 minutes to see if you are on time or not. Same principle applies for associate and practitioner exams even though the total question and minute count will differ.

Pay attention to certain keywords in the exam questions. The questions can sometimes feel like essays and you think that many of the answers could possibly be correct. But then the question ends with something like “how can you achieve this in the MOST cost effective way”. Just paying extra attention to the words “most cost effective” can often remove half of the answers. An example could be that two answers involve sending logs to an Elasticsearch cluster while the other two answers use CloudWatch Logs instead. Both approaches might solve the overall problem, but you know that CloudWatch is going to be cheaper than Elasticsearch. With each exam I’ve become better at identifying these key phrases in the question that instantly remove half the answers. Not only does it help me in finding the correct answer, but it saves me tons of time if I only have to thoroughly read through half the answers.

Note: AWS’ own practice exams and real exams can be quite costly and if you’ve completed an exam in the past or know someone who has you can use vouchers available in the AWS certification account that can severely bring down the prices (50% off for real exams and 100% off for practice exams). Use them! And don’t forget to press the “Apply” button after you’ve entered them during checkout, like I did once.

Exam from home

In these times it has become a possibility to do your exam from home or in your office. You will be recorded using your webcam and you will do a system checkup prior to doing the exam. I tried this for my last certificate. A few things to be extra careful with, if you attempt this:

  • Clear your room of any extra monitors, notebooks, post-it notes, etc.
  • Make sure you won’t be disturbed or have any surrounding noise which could be mistaken for someone communicating with you. Your exam will be invalidated if they suspect any third party communication.
  • Make sure the name in your certification account exactly matches the name in your passport.

Last words

It’s difficult to go into an exam feeling 100% prepared. That’s why I think it’s very important to help build a company where we applaud anyone who tries, regardless of the result. Where attempting and failing is considered a learning experience instead of a failure. I bet that environment will result in more passed exams and coworkers that are a lot less stressed. 

Feel free to reach out if you have any comments on this post or AWS certifications in general!

johannes.uhr@tiqqe.com

Serverless

Choosing the right tool for your serverless journey.

What tools are available if I want to start building my own serverless applications? We will go over some of the most popular frameworks and tools available for the developer who wants to get started with AWS Lambda.

There are a lot of tools out there to use when building software that are powered by AWS Lambda. These tools aim to ease the process of coding, configuring and deploying the Lambdas themselves but also the surrounding AWS infrastructure. We will discuss the following alternatives:

  • AWS Cloud development kit (CDK)
  • Serverless Framework
  • AWS Serverless Application Model (SAM)
  • Terraform

About AWS CloudFormation

AWS CloudFormation is a service within AWS that lets you group resources (usually AWS resources) into stacks that you can deploy and continuously update. These CloudFormation templates are written in JSON or YAML and manually typing those can be very tedious. Especially when your stack grows to a lot of resources that reference each other in multiple ways. What lots of these frameworks and tools do is to provide an abstraction layer in front of CloudFormation so that the developer can more rapidly create and focus on the business value of the service they are building.

AWS Cloud development kit (CDK)

The AWS CDK went into general availability in the summer of 2019 and has been getting a lot of traction lately. It is an open source framework that lets you create your infrastructure as code instead of CloudFormation. You then generate CloudFormation templates from your code by running the command cdk synthesize.

You can choose from Python, TypeScript, JavaScript, .NET and Java to describe your resources instead of having to do it in pure CloudFormation. This gives you benefits such as code completion and being able to assign resources to variables, which helps you when a resource needs referencing to another one. Another great benefit is that it has helper functions in place to help with common developer use cases. For example setting up a NodeJs Lambda function or constructing ARNs.

The CDK code in the screeenshot will be synthesized to CloudFormation at build time. This example creates a Lambda function, a DynamoDB table and an API Gateway. The example also shows referencing between the resources: for example giving the Lambda function rights to read from the table.

Serverless Framework

This one has been around since 2015 and was called JAWS before quickly changing to its current name. As the very descriptive name says, it’s a framework for building serverless applications! The framework is easy to get started with and setting up an API with a few Lambdas require very little configuration for the developer as the framework takes care of the underlying CloudFormation template.

Because of its specific focus in serverless applications, the framework is not as broad as the CDK and that comes with pros and cons. You will get a lot of help if you are setting up Lambdas or events that trigger those Lambdas, but setting up the surrounding infrastructure such as queues, tables, kinesis streams and cognito user pools will often require you to write pure CloudFormation. At TIQQE, some of us like to create and deploy this surrounding infrastructure with the CDK, while developing the Lambdas  and the API gateway in Serverless Framework.

Serverless Framework is open source and multi-cloud. It’s also extendable with a wide range of plugins created by the community.

Shows the central configuration file in a Serverless Framework service: serverless.yml. When deployed, a Lambda function “myFirstLambda” is created and an API Gateway will be set up with a method to invoke the Lambda at the path /hello.

AWS Serverless Application Model (SAM)

AWS SAM is another framework similar to Serverless Framework that it let’s the developer write less code when building serverless applications. Unlike Serverless Framework, SAM is specific to AWS and its main configuration file template.yml is written with CloudFormation. So if you have previous experience with AWS and CloudFormation you will likely find it easy to get started with SAM. A neat feature in SAM is that it has support to deploy APIs using swagger out of the box. 

Template.yml in a AWS SAM project. Deploying this template will produce the same result as the Serverless Framework example above.

Terraform

This multi-cloud tool for infrastructure as code is worth a mention! It has been around since 2014 and is written in Go. For AWS it uses the aws-sdk to manage resources instead of CloudFormation, which gives the benefit of not having a resource limit of 200 that AWS impose for CloudFormation templates.

How do I choose which one to pick?

It comes down to some characteristics of your application, and a fair bit of personal preference! 

  • Are you building a service with an API endpoint and you have little or no previous experience in AWS or serverless architecture? We recommend you to check out Serverless Framework.
  • Are you not a fan of writing CloudFormation and your architecture needs a lot of infrastructure? Check out AWS CDK.
  • Are you familiar with CloudFormation and want to get started with serverless applications? AWS SAM could be the perfect match! 

There are countless forum posts and articles debating whether to go with AWS SAM or Serverless Framework. The frameworks are very similar and many times it comes down to personal taste. At TIQQE we have lots of experience working with Serverless Framework and some of us would debate that you get the job done in less lines of code with Serverless Framework. With that said, SAM does not have to worry about being generic for multiple clouds and that can be an edge if you are working only with AWS. SAM also defaults to giving Lambda functions least privilege access rights (AWS best practice), while Serverless Frameworks share a role between all Lambdas.

Terraform can be a good match if you are creating infrastructure as code across multiple clouds. While Terraform is capable of doing many things, it is not specialised in serverless technologies and you will have to write a lot of code to achieve the same results as the other frameworks described in this post. Not having a 200 resource limit is nice but should not be a problem that often if you are designing your systems in terms of microservices.

Do you have any comments or questions about this article? Please reach out!

johannes.uhr@tiqqe.com