amplify-cli
The AWS Amplify CLI is a toolchain for simplifying serverless web and mobile development.
Top Related Projects
⚡ Serverless Framework – Effortlessly build apps that auto-scale, incur zero costs when idle, and require minimal maintenance using AWS Lambda and other managed cloud services.
Pulumi - Infrastructure as Code in any programming language 🚀
The AWS Cloud Development Kit is a framework for defining cloud infrastructure in code
Python Serverless Microframework for AWS
Quick Overview
The AWS Amplify CLI is a command-line interface tool that helps developers quickly set up and manage AWS cloud services for their applications. It provides a simple way to create, configure, and deploy backend resources for web and mobile apps using AWS services like AppSync, Cognito, and Lambda.
Pros
- Simplifies the process of setting up and managing AWS services for applications
- Supports multiple programming languages and frameworks
- Provides a consistent workflow for both web and mobile app development
- Offers easy integration with popular frontend frameworks like React, Angular, and Vue
Cons
- Learning curve for developers new to AWS services
- Limited customization options for advanced use cases
- Potential vendor lock-in to AWS ecosystem
- May generate unnecessary resources for simple projects
Code Examples
- Initialize a new Amplify project:
amplify init
- Add authentication to your app:
amplify add auth
- Add an API with GraphQL:
amplify add api
- Push changes to the cloud:
amplify push
Getting Started
To get started with the Amplify CLI, follow these steps:
- Install the Amplify CLI:
npm install -g @aws-amplify/cli
- Configure the CLI with your AWS credentials:
amplify configure
- Initialize a new Amplify project in your app's directory:
amplify init
- Add desired features (e.g., authentication, API, storage):
amplify add auth
amplify add api
amplify add storage
- Deploy your backend resources:
amplify push
- Generate code for your app:
amplify codegen
After completing these steps, your app will be connected to the AWS services you've configured, and you can start using them in your application code.
Competitor Comparisons
⚡ Serverless Framework – Effortlessly build apps that auto-scale, incur zero costs when idle, and require minimal maintenance using AWS Lambda and other managed cloud services.
Pros of Serverless
- Multi-cloud support (AWS, Azure, Google Cloud, etc.)
- More flexible and customizable for complex serverless architectures
- Larger ecosystem with extensive plugins and integrations
Cons of Serverless
- Steeper learning curve for beginners
- Requires more manual configuration and setup
- Less integrated with specific cloud provider services
Code Comparison
Serverless (serverless.yml):
service: my-service
provider:
name: aws
runtime: nodejs14.x
functions:
hello:
handler: handler.hello
Amplify CLI (amplify/backend/function/myFunction/myFunction-cloudformation-template.json):
{
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "Lambda Function resource stack",
"Parameters": {
"CloudWatchRule": {
"Type": "String",
"Default": "NONE"
}
}
}
The Serverless Framework uses a more concise YAML configuration, while Amplify CLI generates CloudFormation templates for AWS resources. Serverless offers more flexibility in defining functions and events, whereas Amplify CLI provides a more guided, AWS-specific approach to serverless development.
Pulumi - Infrastructure as Code in any programming language 🚀
Pros of Pulumi
- Supports multiple cloud providers (AWS, Azure, GCP, etc.), offering greater flexibility
- Uses familiar programming languages (Python, JavaScript, Go, etc.) for infrastructure as code
- Provides a more robust state management system with built-in concurrency controls
Cons of Pulumi
- Steeper learning curve for those unfamiliar with general-purpose programming languages
- Requires more setup and configuration compared to Amplify CLI's streamlined approach
- May have slower execution times for large-scale deployments due to its multi-cloud nature
Code Comparison
Amplify CLI (JavaScript):
amplify add api
amplify push
Pulumi (JavaScript):
const bucket = new aws.s3.Bucket("myBucket");
const lambdaFunction = new aws.lambda.Function("myFunction", {
code: new pulumi.asset.AssetArchive({
".": new pulumi.asset.FileArchive("./path/to/lambda/code"),
}),
handler: "index.handler",
runtime: "nodejs14.x",
});
Amplify CLI focuses on quick setup and deployment of AWS resources, while Pulumi offers more granular control and multi-cloud support using familiar programming languages. Amplify CLI is ideal for rapid AWS-specific development, whereas Pulumi is better suited for complex, multi-cloud infrastructure management.
The AWS Cloud Development Kit is a framework for defining cloud infrastructure in code
Pros of AWS CDK
- More flexible and powerful, allowing for complex infrastructure definitions
- Supports multiple programming languages (TypeScript, Python, Java, C#)
- Provides fine-grained control over AWS resources and their configurations
Cons of AWS CDK
- Steeper learning curve, especially for developers new to infrastructure as code
- Requires more manual configuration and setup compared to Amplify CLI
- May be overkill for simple projects or rapid prototyping
Code Comparison
Amplify CLI (adding an API):
amplify add api
AWS CDK (defining an API Gateway and Lambda function):
import * as apigateway from '@aws-cdk/aws-apigateway';
import * as lambda from '@aws-cdk/aws-lambda';
const handler = new lambda.Function(this, 'Handler', {
runtime: lambda.Runtime.NODEJS_14_X,
code: lambda.Code.fromAsset('lambda'),
handler: 'index.handler',
});
new apigateway.LambdaRestApi(this, 'API', {
handler: handler,
});
Summary
AWS CDK offers more flexibility and control over AWS resources, making it suitable for complex infrastructure needs and experienced developers. Amplify CLI, on the other hand, provides a simpler, more streamlined approach for rapid development and prototyping, especially for mobile and web applications. The choice between the two depends on project requirements, team expertise, and development goals.
Python Serverless Microframework for AWS
Pros of Chalice
- Lightweight and focused on serverless Python applications
- Simpler learning curve for Python developers
- Tighter integration with AWS Lambda and API Gateway
Cons of Chalice
- Limited to Python-based applications
- Less comprehensive tooling for full-stack development
- Fewer built-in features for authentication and database management
Code Comparison
Chalice example:
from chalice import Chalice
app = Chalice(app_name='helloworld')
@app.route('/')
def index():
return {'hello': 'world'}
Amplify CLI example:
import { API } from 'aws-amplify';
API.get('myapi', '/items')
.then(response => {
// Handle successful response
})
.catch(error => {
// Handle error
});
Summary
Chalice is a lightweight framework for building serverless Python applications on AWS, offering a simpler approach for Python developers. It excels in quick Lambda and API Gateway deployments but has limitations in full-stack development.
Amplify CLI, on the other hand, provides a more comprehensive toolkit for full-stack development across multiple languages and platforms. It offers broader features for authentication, database management, and frontend integration but may have a steeper learning curve for some developers.
The choice between the two depends on the project requirements, preferred language, and desired level of AWS service integration.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Reporting Bugs/Feature Requests
[!Important]
Amplify Gen 2 is now generally available
If you are starting a new project, we recommend starting with Amplify Gen 2.
If you are an existing Gen 1 customer, we recommend that you continue working with your Gen 1 Amplify project. We are actively developing migration tooling to aid in transitioning your project from Gen 1 to Gen 2. We remain committed to supporting both Gen 1 and Gen 2 for the foreseeable future.
Customers on Gen 1 will continue to receive support for high-priority bugs and essential security updates.
AWS Amplify CLI (Gen 1)
The AWS Amplify CLI is a toolchain which includes a robust feature set for simplifying mobile and web application development. The CLI uses AWS CloudFormation and nested stacks to allow you to add or modify configurations locally before you push them for execution in your account.
Install the CLI
- Requires Node.js® version 18 or later
Install and configure the Amplify CLI as follows:
$ npm install -g @aws-amplify/cli
$ amplify configure
Commands Summary
The Amplify CLI supports the commands shown in the following table.
Command | Description |
---|---|
amplify configure | Configures the AWS access credentials, AWS Region and sets up a new AWS User Profile |
amplify init | Initializes a new project, sets up deployment resources in the cloud and prepares your project for Amplify. |
amplify configure project | Updates configuration settings used to setup the project during the init step. |
amplify add <category> | Adds cloud features to your app. |
amplify update <category> | Updates existing cloud features in your app. |
amplify push [--no-gql-override] | Provisions cloud resources with the latest local developments. The 'no-gql-override' flag does not automatically compile your annotated GraphQL schema and will override your local AppSync resolvers and templates. |
amplify pull | Fetch upstream backend environment definition changes from the cloud and updates the local environment to match that definition. |
amplify publish | Runs amplify push , publishes a static assets to Amazon S3 and Amazon CloudFront (*hosting category is required). |
amplify status [ <category> ...] | Displays the state of local resources that haven't been pushed to the cloud (Create/Update/Delete). |
amplify status -v [ <category> ...] | Verbose mode - Shows the detailed verbose diff between local and deployed resources, including cloudformation-diff |
amplify serve | Runs amplify push , and then executes the project's start command to test run the client-side application. |
amplify delete | Deletes resources tied to the project. |
amplify help | amplify <category> help | Displays help for the core CLI. |
amplify codegen add | generate | Performs generation of strongly typed objects using a GraphQL schema. |
amplify env add | list | remove | get | pull | import | checkout | See the multienv docs. |
Category specific commands:
- auth (Amazon Cognito)
- storage (Amazon S3 & Amazon DynamoDB)
- function (AWS Lambda)
- api (AWS AppSync & Amazon API Gateway)
- analytics (Amazon Pinpoint)
- hosting (Amazon S3 and Amazon CloudFront distribution)
- notifications (Amazon Pinpoint)
- interactions (Amazon Lex)
- predictions (Amazon Rekognition, Amazon Textract, Amazon Translate, Amazon Polly, Amazon Transcribe, Amazon Comprehend, and Amazon SageMaker)
Tutorials
- Getting Started guide
- GraphQL transform tutorial
- Native development with Amplify CLI and AWS AppSync
Developing
To set up your local development environment, go to Local Environment Setup.
To test your category, do the following:
cd <your-test-front-end-project>
amplify-dev init
amplify-dev <your-category> <subcommand>
Before pushing code or sending a pull request, do the following:
- At the command line, run
yarn lint
at the top-level directory. This invokes eslint to check for lint errors in all of our packages. - You can use
yarn lint
to find some of the lint errors. To attempt fix them, go to the package that has errors and runyarn lint-fix
- If there are any remaining lint errors, resolve them manually. Linting your code is a best practice that ensures good code quality so it's important that you don't skip this step.
Contributing
We are thankful for any contributions from the community. Look at our Contribution Guidelines.
Top Related Projects
⚡ Serverless Framework – Effortlessly build apps that auto-scale, incur zero costs when idle, and require minimal maintenance using AWS Lambda and other managed cloud services.
Pulumi - Infrastructure as Code in any programming language 🚀
The AWS Cloud Development Kit is a framework for defining cloud infrastructure in code
Python Serverless Microframework for AWS
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot