The AWS CLI
You'll first need to use the AWS CLI to set up a new profile with an existing AWS IAM access keys into ~/.aws/credentials.
(You can also manually add new profiles and access keys directly into ~/.aws/credentials).
The Serverless CLI (and other AWS CLIs, like the Amplify CLI) uses the AWS IAM access keys in ~/.aws/credentials to perform deploys.
I. Set up the Python Environment: Version Manager, Virtual Env Manager, Package Manager
AWS CLI is written in Python so you'll need to install Python 3 to get this set up.
It is recommended to install Python via a Version Manager (See: Why Not Use System Python?.)
I wrote another post about setting up a Python dev environment
II. Installing AWS CLI
Follow the docs to install the AWS CLI.
Verify the AWS CLI is available:
$ which awsNote: If you run
which awsand it returnsaws not found- try reloading your bash environment.
III. Create an AWS IAM Access Key in your AWS Console
- Go to your AWS > My Security Credentials. (For future reference, this is under your AWS Console > Account Menu Dropdown)
- Click: Create access key
- You will be shown your
Access Key IDandSecret Access Key. Keep this window open. You will need this in the next steps.
IV. Add your AWS IAM Access Keys as a new profile in .aws/credentials
You will need the Access Key ID and Secret Access Key here.
$ aws configure --profile devProfileExample:
AWS Access Key ID [None]: YOUR_ACCESS_KEY_ID
AWS Secret Access Key [None]: YOUR_SECRET_ACCESS_KEY
Default region name [None]: us-west-2
Default output format [None]: jsonSuccessfully running aws configure will set up the .aws/ folder in your root directory:
(root)
└── .aws/
├── config // Your AWS Profiles
└── credentials // Your access key pairsLet's verify that your creds have been added correctly...
# This will print your creds to the console.
$ cat ~/.aws/credentials
# If your console print-out includes the below, you're good-to-go!
[devProfile]
aws_access_key_id = XXXXX
aws_secret_access_key = XXXXX⚠️ The entry
[profile devProfile]must also exist in~/.aws/config. These are also used in other AWS CLIs like Amplify CLI.
$ cat config
# Output:
[profile devProfile]
region=us-west-2
output = jsonUsing an AWS Profile for Serverless CLI
There are several different ways to choose which AWS profile you want to use with Serverless CLI:
A. Specifying the AWS profile in serverless.yml
Add profile setting to provider configuration in serverless.yml.
service: new-service
provider:
name: aws
runtime: nodejs12.x
stage: dev
profile: devProfile # Specify the profile hereB. Set the AWS profile as an environment variable
You can switch the AWS profile per project executing once when you start your project:
Run an npm script for:
export AWS_PROFILE="devProfile" && export AWS_REGION=us-west-1.C. Specifying the AWS profile as a Serverless CLI flag with --aws-profile
Or manually pass the AWS profile as an option to the Serverless CLI command with the --aws-profile flag.
$ serverless deploy --aws-profile devProfileRead more at the Serverless Docs.
D. Switching the AWS profile using Lumigo CLI
https://github.com/lumigo-io/lumigo-cli#lumigo-cli-switch-profile
$ lumigo-cli switch-profile