What can you build with AWS Amplify? Let's see all categories and services.
Published: 2021-10-22 05:44:00

# What can you build with AWS Amplify? Let's see all categories and services.

## Build serverless Apps with Amplify! 

AWS Amplify is a lot. In my [last post](https://sandro.volpee.de/what-is-aws-amplify-it-is-a-lot) I already explained the different products Amplify refers to. In this blog post, I want to show which **categories** and **services** can be used by the **Amplify CLI** and **Amplify Libraries**. 

As a short reminder, the CLI is here to bootstrap infrastructure based on a data schema and a CLI wizard. The libraries give us access to AWS components in different languages, mainly JavaScript. 

I will go through all available categories, show a short example use-case and the involved AWS services. 

You can see all available categories on the main page of the [Amplify Docs](https://docs.amplify.aws).

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1634643323514/UNbgTybLL.png?auto=compress,format&format=webp)

## Authentication

**AWS Services:** Cognito 

**Description:** Authentication refers to all functionality regarding user registration, Sign-In, Social Sign-In, and restricting access to certain users or user groups. Example use cases here are all basic authentication procedures in your app. Social Sign-In via Facebook, Apple, Google, &amp; Amazon is supported natively. All typical workflows like password forget, multi-factor authentication, and much more are supported.

**Use-Case:** User Sign-In, Sign-Up with social providers.

## Functions

**AWS-Services:** Lambda

**Description:** The category function is missing in the overview but I think it is one of the most important ones. Function handles everything regarding creating lambda functions. Especially, the handling of requirements, providing access to other AWS resources, and using lambda layers are really great within Amplify. Runtimes available:
- Python
- NodeJS
- .NET
- Go
- Java

One of the latest news is that you also can use environment variables and secret parameters within Amplify and everything will be provisioned automatically. 

**Use-Case:** Periodically update your database with new data, for example run a lambda daily at 12pm. 

## Storage

**AWS-Services:** DynamoDB, S3

**Description:** Storage refers to all functions regarding persisting data. This could either be object storage such as S3 or a NoSQL database like DynamoDB. A relational database is not supported (yet) in Amplify. The storage component makes it really easy to persist and access your data. Especially, when using DynamoDB, Amplify CLI, and GraphQL it is fairly easy to connect several tables and build a complex and high-performing data model. 

**Use-Case:** Uploading and downloading images from your app.

## GraphQL API

**AWS-Services:** AppSync

**Description:** The category GraphQL API refers to the AWS service AppSync. AppSync is a fully-managed GraphQL API and it has some real benefits. First of all, it is fully managed. That means you don't have to handle any scalability or infrastructure issues. Secondly, you get a lot of things built in. For example, real-time subscriptions are automatically included in AppSync. You can build several authorization methods for your API like API keys, IAM users, or even a lambda authorizer. AppSync also allows an offline mode in combination with Amplify's DataStore to enable offline capabilities. 

**Use-Case:**All API-related backends can be built with AppSync. Live updates on a news feed or stock price. 

## DataStore

**AWS-Services:** AppSync, DynamoDB

**Description:** The DataStore category gives you the ability to persist data online and offline on your device. Under the hood, the services AppSync and DynamoDB are used for synchronizing the content. It is also possible to use it completely offline without any AWS account. As a query language also GraphQL is used.

**Use-Case:** Mobile social media app.

## Geo

**AWS-Services:** Amazon Location Service

**Description:** Geo is one of the newer services of AWS. It provides interfaces to the newly introduced Amazon Location Service. With this service, it is easily possible to build map and location web applications. UI components from maplibre can be used to combine AWS location service with the maplibre UI. You can do several things with the Geo service such as:

* Displaying maps
* Put markers on the map
* Draw points on the map
* Search for certain locations

**Use-Case:** Map enabled web applications. 

## REST API

**AWS-Services:** API Gateway

**Description:** In the same way you can use a managed GraphQL API (AppSync) you can also use a fully managed REST API → API Gateway. With API gateway you can create several endpoints with the same authorization methods and use input and output templates for your data flow. Often times you will use lambdas as a resolver for resolving the given endpoints.

**Use-Case:** Any application which needs an API 😉

## Analytics

**AWS-Services:** PinPoint, Kinesis

**Description:** Analytics gives us the opportunity to get insights into our user behavior. AWS PinPoint and Kinesis are used for this purpose. With Analytics you can track sessions of your user and also create custom events that should be tracked. Analytics data can also be streamed directly to kinesis for further analysis. PinPoint in general even allows more functions, for example sending out newsletters and creating different campaigns is also possible. Within Amplify the main functionality is analyzing user behavior.

**Use-Case:** Analyse how users are using your app. 

## Push Notifications

**AWS-Services:** PinPoint

**Description:** Push notifications handles everything related to notifying your users. Some things have to be configured to get it running on iOS and Android. Push notifications are currently just supported for React-Native projects. 

**Use-Case:** Notify your mobile users when receiving new messages on a social media app.

## XR

**AWS-Services:** Amazon Sumerian

**Description:** XR allows you to build Augmented Reality and Virtual Reality applications. It supports one of the lesser-known AWS Services → Amazon Sumerian. With Sumerian, you are able to build 3D scenes and display them via your Amplify App.

**Use-Case:** AR application for supporting car mechanics

## PubSub

**AWS-Services:** AWS IoT

**Description:** With the PubSub category you are able to build messaging-oriented applications which can publish and subscribe data for a certain middleware. AWS IoT is the preferred and supported middleware in this category. Other middlewares such as MQTT or WebSockets are also possible. Basically, you can subscribe and publish data to a message broker.

**Use-Case:** Weather station with many sensors.

## Interactions

**AWS-Services:** Amazon Lex,

**Description:** Interactions gives you the possibility to build interactive chatbots with the Amazon Lex service. I already made a [post](https://sandro.volpee.de/how-to-develop-a-serverless-chatbot-with-aws-amplify-amazon-lex-and-react) about that. Lex is the service that is also used by Amazon Alexa, so it is battle-proven. The great thing is that Amplify is also offering a UI component for the Chatbot interface which makes it really easy to set up a complex chatbot within minutes for yourself.

**Use-Case:** Customer service chatbot.

## AI / ML Predictions

**AWS-Services:** Polly, Translate, Transcribe, Rekognition, Comprehend

**Description:** The AI and ML Prediction category offers several things. These are:

* Text to speech: Polly
* Transcribe audio or text: Transcribe
* Translate languages: Translate
* Identify Text: Rekognition
* Identify entities: Rekognition
* Label objects: Rekognition
* Interpret sentiment: Comprehend

The great thing about this category and the different services is that you do not need any data science knowledge for building applications that use a lot of machine learning models. You can just use these services to give in proper input and get the results immediately. 

**Use-Case:** Scan documents, identify the texts, and transcribe them to text. 

## Finally

These were all categories AWS Amplify supports. You can build **so much stuff** with these categories. If some categories are not supported (e.g. SQS → Please Amplify 🙏🏼) you can simply add them by adding CloudFormation templates or looking for community-made plugins. 

I've used Amplify already for a couple of projects and have two running SaaS applications on Amplify. If you want to know more about Amplify and building SaaS products on Amplify, follow my [Twitter](https://twitter.com/sandro_vol) 🙂