Building Web Applications with the AWS SDK for Go

AWS is the most popular cloud computing provider in the world. This course will teach you to build a full-featured web application written in Go, integrating it with several popular AWS services.
Course info
Level
Intermediate
Updated
Dec 19, 2017
Duration
1h 57m
Table of contents
Course Overview
Getting Started with the AWS SDK for Go
Authenticating with Cognito
Uploading & Managing Photos with S3
Exploring Data Storage with DynamoDB
Handling Asynchronous Image Resizing with Lambda and S3
Optimizing Image Resizing in Lambda Using SQS
Sending Administrative Email Notifications with SNS
Deploying Web Applications Using Elastic Beanstalk
Creating a CloudWatch Log Group for Logging and Monitoring
Description
Course info
Level
Intermediate
Updated
Dec 19, 2017
Duration
1h 57m
Description

With AWS leading the market in cloud platform technology, and the Go programming language surging in popularity, there is ever-growing demand for the intersection of these skills. In this course, Building Web Applications with the AWS SDK for Go, you'll learn to utilize the power of the AWS platform, building high performance and highly scalable web applications, written in Go. First, you'll dive into user authentication using Cognito. Next, you'll learn to use DynamoDB, a powerful NoSQL database, for data storage. Finally, you'll cover deploying a web application to AWS using Elastic Beanstalk, along with best practices for logging and monitoring with CloudWatch. By the end of this course, you'll have a solid foundation upon which to build your own cloud-native web applications in Go, running on AWS.

About the author
About the author

Mark Richman has spent over 20 years building software that spans multiple industries. He is passionate about cloud computing and agile software development. Mark holds a bachelor degree in Computer Science and an MBA with a specialization in Technology Management. Mark lives in Boca Raton, Florida with his wife Sheara.

Section Introduction Transcripts
Section Introduction Transcripts

Course Overview
Hi everyone. My name is Mark Richman and welcome to my course Building Web Applications with the AWS SDK For Go. I've been a software developer for over 20 years and I love to create highly scalable, high-performance applications. Since AWS was first launched, it's grown to become the largest cloud computing provider in the world. The Go programming language is soaring in popularity and is now fully supported on AWS with an SDK of its own. In this course, we're going to learn how to use the AWS SDK For Go to build a feature-rich web application, leveraging some of the most popular AWS services. Some of the major topics that we'll cover include authentication using Cognito, file storage using S3, NoSQL database access with DynamoDB, serverless computing with Lambda, and deploying an application using Elastic Beanstalk. By the end of this course, you'll be familiar with eight major AWS services and you'll know how to create, deploy, and manage robust web applications written in Go on AWS. Before beginning the course, you should be familiar with the Go programming language, as well as web development fundamentals such as HTML, CSS, and JavaScript. You should also have an AWS account. I hope you'll join me on this journey to learn how to build scalable, high-performance web applications with the Building Web Applications with the AWS SDK For Go course at Pluralsight.

Getting Started with the AWS SDK for Go
Hi, I'm Mark Richman. And welcome to this Pluralsight course, Building Web Applications with the AWS SDK for Go. If you're a Go developer looking to build and deploy powerful and scalable web applications using AWS, then this is the course for you. In this introductory module, we're going to present the AWS SDK for Go and why you should choose it for your next web application. We'll also cover the prerequisites you'll need to be familiar with in order to get the most out of this course. We'll get you set up with the AWS SDK for Go, show you where to find documentation, and how to configure the SDK for your AWS account. Next we'll walk through the demo application we'll be building up over this course. Initially we'll see that the demo application makes use of no AWS services at all. Our application will quickly evolve over the next few modules. We'll be introducing new AWS services and enhancing our application with that functionality. Finally we'll close this module out with the course outline. There's a lot of material we're going to cover together so I want to walk you through the topics at a high level just so you know what to expect as we proceed. So let's get started and build our new web application using the AWS SDK for Go.

Authenticating with Cognito
Welcome back. In the previous module, we got a good overview of the AWS SDK for Go, how to set up our environment and the basic command structure. We also walked through the application we'll be building up over this course. You saw in the previous module that we're using database authentication. In this module, we'll be replacing that functionality with Amazon Cognito. Let's take a look at the topics we'll cover in this module. We'll provide an overview of Amazon Cognito and what problems it can solve for you as a developer. Next, we'll explore user pools. We'll look at how to create them in the AWS console and how to define an app client. How to add users, first in the console, and then interactively. Next, we'll demonstrate how to implement signup and signin from our SkelEdit application using the AWS SDK for Go. Finally, we'll also be replacing the authorization middleware I demonstrated in the previous module with new Cognito middleware. You'll also see how we validate a Cognito access token. Let's take a closer look at Cognito.

Uploading & Managing Photos with S3
Welcome back. In the previous module, we took a deep dive into Amazon Cognito, its role into authentication and authorization, and how to integrate it in our application. So far, we've been using the local file system for photo storage. In this module, we'll be replacing that functionality with Amazon S3. Let's take a look at the topics we'll cover in this module. We'll provide an overview of Amazon S3, the various use cases where organizations apply S3. Next, we'll compare object and block storage. Then, we'll look at buckets in depth, including access control lists and bucket policies. We'll look at how to create buckets in the AWS console. Next, we'll demonstrate how to implement uploading our photos to S3 using the AWS SDK for Go. We'll also demonstrate how to resize images as thumbnails and how to store those in S3 as well. Finally, we'll see how to serve up those images in the browser directly from S3. So let's take a closer look at S3.

Exploring Data Storage with DynamoDB
Welcome back. So previously we've been using a local SQL Lite database to store our data. In this module, we're going to see how to replace that with DynamoDB. Let's take a look at the topics we'll cover in this module. We'll provide an overview of DynamoDB, situations where you might consider DynamoDB, next we'll compare SQL and NoSQL databases, we'll look at how to create DynamoDB tables in the AWS console. Finally, we'll demonstrate how to implement DynamoDB storage using the AWS SDK for Go. So let's take a closer look at DynamoDB.

Handling Asynchronous Image Resizing with Lambda and S3
Welcome to this module, Handling Asynchronous Image Resizing with Lambda and S3. I often turn to Lambda to simplify the development of all kinds of workflows in the cloud. Lambda lets you run code without provisioning or managing servers, also known as server-less computing. Sound too good to be true? Well, that's what this module is all about.

Optimizing Image Resizing in Lambda Using SQS
From small startups to large enterprises, developers are designing applications using micro services and distributed architectures to improve resiliency and scale faster. AWS messaging services like simple queue service, SQS, make it easy to decouple communication between software components and build modern applications that are fault tolerant and highly scalable. So let's dive right into SQS.

Sending Administrative Email Notifications with SNS
So we just learned about one of AWS's messaging services, SQS. Next, we're going to look at the Simple Notification Service or SNS. SNS is a web service that makes it really easy to send notifications from your applications and deliver them to subscribers or other applications. Sound good? Let's get started.

Deploying Web Applications Using Elastic Beanstalk
Welcome to this module: Deploying Web Applications Using Elastic Beanstalk. Well, we're in the home stretch. We're code-complete on our application and now we want to deploy it into AWS. In this module, we'll learn how to use Elastic Beanstalk to deploy our application. Here's what we'll cover: What is Elastic Beanstalk? How Elastic Beanstalk works, including a breakdown of Elastic Beanstalk's architecture; we'll see how change management work using versioning; and finally, we'll deploy our application to Elastic Beanstalk using the AWS console. Sounds cool, right? Okay, let's get started.

Creating a CloudWatch Log Group for Logging and Monitoring
CloudWatch is a powerful AWS tool set that lets you monitor and automatically manage your resources. In this final module of our course, we'll put CloudWatch to work for us. The topics we'll cover in this module are what CloudWatch is and how it can benefit you, the various log groups and log streams available to you, how to create a rule in CloudWatch to alert on events, and integrating CloudWatch into our sample application. Let's get started.