AWS Amplify is coming up more and more in my feed these days, and with good reason: it does a lot for you. I've had a chance use it, and it's a huge leap forward over what was available to you previously.
It does so much, it's even too much for one product/service/library! BUT apparently it doesn't do enough to be given more than one name... Yes, it's time for another dispatch from the department of AWS Is Not Great At Naming Things...
After using Amplify in most of its forms over the last few months, I realised that knowing which Amplify does what is not so straight forward when getting started. Here's my guide on understanding the different Amplifies (that's the collective noun, right?).
At a high level, there are three things that have been given the name "Amplify" and it's possible to use one, two, three, or none of them in your next AWS-based web application.
I'm pretty sure that this was first use of term "Amplify" given the repo was created in late 2017. The functionality was originally provided by a library called amazon-cognito-auth-js, but was superseded by Amplify.js about a year ago.
When to Use
You can use it Amplify.js on its own, and if you're developing a web application on AWS (particularly if you use Cognito) then I strongly recommend you use it. I can't imagine having to work directly with the underlying SDK calls any more, it's just not fun.
The CLI generates CloudFormation to manage your application and helps with deploying it, which is great; it also stores a lot of state locally to work, which I've had some issues with. The fact that it lets you focus on higher-level functionality (e.g. Auth, API, etc) without worrying too much about the underlying services is really nice, it's just that it can get confused sometimes.
The UI components it includes are for common activities, which can be really useful for getting you going quickly. These include many of those standard web application features that aren't unique to your application (e.g. user sign up, resetting passwords, etc).
When to Use
Fantastic for proof-of-concept or demo projects; you can produce something working quickly, with extremely low overhead (e.g. costs). While I've played with it, I'm not using it for my own projects right now; the framework has a lot of really good features, but like all frameworks these come at the cost of customisation. It has been really useful to see what's possible with the various services.
AWS Amplify Console
The AWS Amplify Console is a hosting and CD (Continuous Deployment) service.
It brings together the client-side (e.g. your React/Vue SPA) and server-side (e.g. GraphQL or REST API) components in a serverless web application built on AWS.
It integrates with your code repository, and handles deployment of your application's code, all with a nice interface.
While helpful, you are not required to use the Amplify Console; it's helpful to orchestrate multiple services together quickly, similar to what AWS CodeStar does for the Code suite (CodeCommit, CodePipeline, CodeBuild, etc) of developer services from AWS.
When to Use
While I don't currently use the Amplify Console, if I was getting started today I would definitely use it.
Using the console would let you get up and running very quickly by freeing you up from learning all the various AWS services you need to get your serverless web application running (e.g. Lambda, Cognito, AppSync, S3, API Gateway, etc). It would allow you to learn about the underlying AWS services as needed, rather than up-front.
The AWS Amplify Team
OK, this is obviously not one of the AWS Amplify services/product/libraries, and they're totally justified in using the word "Amplify" in their name!
The Amplify team put out some great content, and you can find many of them on Twitter:
They have been great at open-sourcing their work, something I wish more AWS teams were able to do. In particular you should checkout Nader Dabit on Dev.to for a view of what's possible with Amplify.
The Amplify Community page is also a great resource that you should know about, and it's obviously built with Amplify... but which one(s)?!
I'll leave you to work that out 😉