AWS is not really great with naming things. Nothing new here. Amplify is one of the products where A LOT of confusion exists on which product you are actually referring to. With this post, I will try to give some clarity. I will go through each product Amplify has, what the main purpose is, and how they are connected. Let's go!
TLDR; Basically there are 5 things which are Amplify:
- Amplify Hosting: Hosting service with DNS options
- Amplify Console: CI/CD for full-stack apps
- Amplify CLI: Bootstrap your infrastructure
- Amplify Libraries: Connect your app with AWS
- Amplify Admin UI: Use AWS without AWS account 🤯
Let's get into some details.
Amplify hosting offers the ability to quickly and easily host your static web page. If you have a react web app and want to host it, Amplify hosting is the way to go. Some really great features are:
Amplify Hosting is deeply connected with Amplify Console (CI/CD) which we cover in the next part. After the website is built it can be automatically published and hosted.
PR Preview: Amplify Hosting allows you to preview new PRs in a completely own environment to test out new features
Custom and not custom domains:
Amplify Hosting published your web page normally on some Amplify domain such as
develop.d23z478fg.amplifyapp.com. This is done automatically. If you want to map custom domains you can easily do this.
SSL Certificate included SSL is automatically included in both custom and not custom domains.
Monitoring You can monitor the metrics of the application and get SNS notifications in case you reach certain thresholds. Under the hood Amplify Hosting uses S3 and CloudFront to deliver your webpage over the globe. It abstracts the hassle of setting everything up manually and gives you a lot of options to customize the experience.
Amplify Console is the CI/CD component of Amplify. It allows you to build full-stack apps by building your backend, frontend and deploying all of it with Amplify Hosting.
The console follows a git-based workflow. That means it will automatically be triggered by pushes or PRs on your git branches. The console build is based on a docker image which you can adjust to anything you want. After setting the image you can define your build in the
build.yml file and follow several phases. The phases are:
- Provision: All AWS resources for the build will be provisioned
- Build: Backend and frontend deployment
- Deploy: Everything will be deployed.
- Verify: Tests will be executed
After deploying the website a preview is available to check how it looks like.
The Amplify CLI is one of these products which are normally meant if people talk about Amplify. A CLI is a command-line-interface, so a program you can execute just in the terminal without a GUI. The main idea of the CLI is to make the experience of programming fullstack apps on AWS a lot easier. The CLI handles a lot of things, but mainly it is doing the following:
- Provisioning resources by creating CloudFormation templates for pre-defined categories
- Deploying resources and updates (e.g. for lambdas)
- Generating boilerplate templates (e.g. VTL for GraphQL)
- Lokal mocking of some resources such as API, Lambda, DynamoDB
With Amplify you can easily add several services by following a wizard-like approach and Amplify will create the CloudFormation stacks you need for getting the resources.
The CLI is doing quite a bit of magic to give you your desired services. I think it is an awesome product to use but be quite aware that you can run into some bugs where you maybe need some support.
Amplify also offers libraries for connecting your app with AWS services. Currently, the libraries are available for the following platforms:
Be aware that for all other platforms you can also use the main SKD of AWS. Amplify is trying to make things easier for you but if it is not available use the SDK.
The libraries let you connect the backend and frontend with the categories which are available in Amplify such as Authentication, DataStore, API, etc.
The Admin-UI is one of the latest products.
The idea is to create an app backend with a much nicer and cleaner interface compared to the typical AWS console. It also allows you to access AWS resources without using an AWS account. That means no handling of IAM policies and users. Just the first deployment of the backend needs an AWS account but after that, you can invite team members to the Admin-UI without an AWS account.
It also allows you a visual data modeling approach. That means you can see how your data model interacts with each other and how the relationships look like. The really neat thing is that all configured resources you provisioned with the Admin-UI are also available in the CLI. So it is a great way of working together.
Anna is the main PM of the Admin-UI and loves to improve the product, so if you want to help her, reach out to her 🙂
That's it! These are all Amplify services. I hope it will be easier for you now to know what services are doing and how they interact. If you want to know more about Amplify follow my Twitter you can also see it as a Thread 😉