“Give the pupils something to do, not something to learn; and the doing is of such a nature as to demand thinking; learning naturally results.”
― John Dewey
As several psychologists have found, John Dewey amongst them, one of the best ways to learn is by doing. For that reason, in AWS official trainings we include hands-on labs, to strengthen the theory that we teach and the concepts that we show. And now, as part of this 2020 virtual re:Invent, AWS made available for free for all assistants 57 hands-on labs. They are available until December 18th, with a limit of 5 labs per day per person. In this article, we’ll explore in some detail some of them, as a recommendation if you have the time to do them.
In order to access the labs you must be logged in on this site with your re:Invent 2020 account, and the labs catalog can be found on this link. The labs are divided in three levels: Fundamental, Intermediate and Advanced, and we can also filter them by the services they cover or by the certification to which they are relevant. In each of the we’ll receive a set of step-by-step instructions to follow and a sandbox account in which to execute those instructions. Neither the instructions, nor the account, nor the charges we incur as part of the lab have any cost whatsoever, so this is an excellent chance to try out new stuff in a free account. Keep in mind, we can’t use these accounts freely, we’re limited to the actions necessary for the lab, but the labs are sufficiently detailed and long enough that we can learn a ton about each service.
For example, the intro to S3 lab involves creating an S3 bucket, uploading an object from the console and from the cli, connection from an EC2 instance, creating a bucket policy and enabling versioning. That’s the level of completeness of an introductory-level lab, made so that it can be completed within 90 minutes. Lab duration ranges from 40 minutes to 2 hours, just to follow the instructions. Some labs have prerequisites such as an existing VPC, but AWS handles those prerequisites for us when it provisions the account, all we need to do is follow the instructions.
In the Fundamentals level, I mainly recommend choosing based on the services covered, according to what you want to learn about. In my particular case I really liked the following labs, though your interests may vary:
Introduction to Identity and Access Management (IAM): If you’re new to the cloud or to AWS, or if you never bothered to learn formally and just kep on doing what you could, you are most assuredly not handling account security well. IAM is the service that controls identity and access to the AWS account, and it’s important to understand it in order to improve the security of your account. In other words, it’s going to lower the chance that someone steals your account and uses it to mine bitcoins while you pay for the instances with your credit card.
Introduction to DynamoDB: This is a short lab (40m) that serves as a great introduction to a very powerful and easy to use service, a non-relational database that’s just excellent.
Introduction to AWS Lambda: If you’re interested in the serverless paradigm, this is the place to start. If you already have some knowledge (or when you do, after completing this lab) I recommend you the ones that follow.
Serverless Architectures using Amazon CloudWatch Events and Scheduled Events with AWS Lambda: This one is not about how to code in serverless, but rather how to use Lambda functions to perform automated actions in response to events detected by CloudWatch. Basically more DevOps than dev, but very interesting to understand a different use case of Lambdas.
Using AWS Lambda with Amazon CloudWatch and SNS to Implement a Slack Chat Bot: Another one about Lambdas, a backend for a Slack chatbot. A great excuse to show your workmates what serverless can do. Chatbot idea: A bot that comments with a random phrase often used in the team/company (every company has their phrases)
Introduction to Amazon API Gateway: API Gateway is the service that we use to expose an HTTP(S) endpoint that starts a Lambda function every time it receives a request. It’s an interesting service in and of itself, and it’s necessary for the labs that follow.
Serverless Web Apps using Amazon DynamoDB - Part 1, Part 2 y Part 3: Throughout these three labs we’re going to build a complete serverless application using AWS Lambda, DynamoDB and API Gateway. Knowledge from the previous labs (though not the labs themselves) is a prerequisite, and this is the real intro to serverless programming. Welcome!
Hosting WordPress Using Amazon S3: Did you always want to have your own serverless blog, but never felt like typing HTML and CSS? WordPress can be a solution, and in this lab we’re going to learn how to transform a WordPress site into a static website, and how to serve it from an S3 bucket for a very low price. Let’s blog!
Introduction to Amazon EC2 Auto Scaling: Auto Scaling isn’t something odd or magical. This lab can serve to demystify it a little bit.
Working with Amazon Elastic Container Service: ECS is a container orchestrator that’s a lot simpler than Kubernetes, and great for most workloads. This lab can help you add ECS to your toolbox and start using it to orchestrate container workloads.
At the Intermediate level, all labs seem interesting for different reasons, but I want to draw attention to these three:
Automating AWS Services with Scripting and the AWS CLI: Another more DevOps than dev lab, focused on using the cli and scripting to automate the usage of AWS services. Automation is a key practice for all environments, more so for production, so I recommend you at least have some idea about it. This labs serves as a good introduction to the topic.
Update Security Groups Automatically Using AWS Lambda: I’m not particularly interested in this lab’s specific use case (keeping Security Group rules up to date if CloudFront or WAF endpoints change), but I’m very interested in this as an example of what kinds of problems we might run into and how they can be resolved in an automated way. I strongly recommend at least reading the instructions, ideally doing the lab, but mainly thinking about the lab and understanding what the solution is and why.
Centralized Log Processing with Amazon Elasticsearch Service: The title says it all. It sounds like something hard, but this lab will show that it’s actually pretty simple to implement, and very useful for any application that produces logs (basically, all of them)
Finally, in the Advanced level we find only two labs:
Launching and Managing a Web Application with AWS CloudFormation: CloudFormation isn’t that hard by itself but doing everything with CloudFormation is hard. However, the more our AWS knowledge grows the more we realize it’s the only way that makes sense. To begin to understand that, do this lab. Believe me, after a while you’ll thank me (actually you’ll thank AWS, I’m just giving recommendations).
Blue/Green Deployment Pattern with AWS Elastic Beanstalk: Elastic Beanstalk is one of those services that we’re maybe not sure of when to use. It’s useful because it does a lot of work for us, but how limiting is it and when should we use it if we already know how to do this stuff by hand? In this lab we’ll see that it’s not as limited as we might think, by exploring a blue/green deployment pattern that we could use in our production environments.
Regarding certifications, I recommend that if you’re going to do a certification you do all related labs. No knowledge is a waste, especially when preparing for an AWS certification.
And with that idea, we close this article. No knowledge is a waste, though we must recognize the time and effort that we put into acquiring knowledge. I hope these labs serve as a shortcut for some specific knowledge, as a starting point for your road in AWS, or as additional material to help prepare for a certification. Or for all three of those purposes, why not. My advice is to do the labs to understand and learn, thinking a reasoning every step.