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 aws
Note: If you run
which aws
and 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 ID
andSecret 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 devProfile
Example:
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]: json
Successfully running aws configure
will set up the .aws/
folder in your root directory:
(root)
└── .aws/
├── config // Your AWS Profiles
└── credentials // Your access key pairs
Let'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 = json
Using 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 here
B. 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 devProfile
Read 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