Attention

This workshop content is over a year old and AWS Amplify has made a great deal of improvements since this content was originally written.

Instead of this content, please check out some of the more up-to-date Amplify content. One great example is the AWS Serverless Airline Booking project. Besides that, you can find lots more excellent AWS Amplify content on the AWS Amplify Community site.

If you would still like to review the content of this workshop, these instructions should still work, provided you use the specific version of AWS Amplify noted in the Prerequisites section.

What We'll Build

Our Goal

In this workshop, we’ll build an app with quite a few features, including:

  • Allowing user sign up and authentication, so we know who owns which photo albums

  • Building an API server, so our front end has a way to load the appropriate albums and photos to show a given user

  • Storing data about albums, photos, and permissions of who can view what, so that our API has a fast and reliable place to query and save data to

  • Storing and serving photos, so we have a place to put all of the photos that users are uploading to albums

  • Automatically creating photo thumbnails, so we don’t need to deliver full-resolution photos when users browse a photo album’s list of photos

  • Automatically detecting relevant labels for each uploaded photo and making photos searchable based on these labels

The Architecture

Here’s a map of the services we’ll use and how they’ll all connect.

Serverless Photo Albums Architecture

Our Tools

If we were to try and build scalable and highly-available systems to handle each of the above concerns on our own, we’d probably never get around to building our app! Fortunately, AWS provides services and tooling to handle a lot of the undifferentiated heavy lifting involved in building modern, robust applications. We’ll use a number of these services and tools in our solution, including:

If any or all of these services are new to you, don’t worry. We’ll cover everything you need to know to get started using everything mentioned above. And there’s no better way to learn than to build, so let’s get started!