Execute AWS CLI across multiple profiles and multiple regions in one go
Project description
mpaws
mpaws is a Python CLI for running an AWS command across multiple profiles and multiple regions in one go.
This is a time-saver when you are managing dozens of AWS accounts and need to run the same command across all of them.
Installation
pip3 install mpaws
Usage
Set an environment variable MPAWS_PROFILES, and another environment variable MPAWS_REGIONS, then run mpaws command:
export MPAWS_PROFILES=profile1,profile2,profile3
export MPAWS_REGIONS=us-east-1,ap-southeast-2
mpaws ec2 describe-instances
The above command will run aws ec2 describe-instances command for each permutation of the AWS profiles and AWS regions, like these:
AWS_PROFILE=profile1 AWS_DEFAULT_REGION=us-east-1 AWS_REGION=us-east-1 aws ec2 describe-instances
AWS_PROFILE=profile1 AWS_DEFAULT_REGION=ap-southeast-2 AWS_REGION=ap-southeast-2 aws ec2 describe-instances
AWS_PROFILE=profile2 AWS_DEFAULT_REGION=us-east-1 AWS_REGION=us-east-1 aws ec2 describe-instances
AWS_PROFILE=profile2 AWS_DEFAULT_REGION=ap-southeast-2 AWS_REGION=ap-southeast-2 aws ec2 describe-instances
AWS_PROFILE=profile3 AWS_DEFAULT_REGION=us-east-1 AWS_REGION=us-east-1 aws ec2 describe-instances
AWS_PROFILE=profile3 AWS_DEFAULT_REGION=ap-southeast-2 AWS_REGION=ap-southeast-2 aws ec2 describe-instances
Alternatively, you can also run mpaws with multiple AWS profiles against a single AWS region. You can do this by setting the environment variable MPAWS_PROFILES, then run mpaws command:
export MPAWS_PROFILES=profile1,profile2,profile3
mpaws ec2 describe-instances
The above command will run aws ec2 describe-instances command using each AWS profile, combined with the configured AWS region (either via AWS_DEFAULT_REGION, AWS_REGION, or the configured region within the profile definition).
Here's an example if AWS_DEFAULT_REGION is specified with us-east-1 as the value:
AWS_PROFILE=profile1 AWS_DEFAULT_REGION=us-east-1 AWS_REGION=us-east-1 aws ec2 describe-instances
AWS_PROFILE=profile2 AWS_DEFAULT_REGION=us-east-1 AWS_REGION=us-east-1 aws ec2 describe-instances-instances
AWS_PROFILE=profile3 AWS_DEFAULT_REGION=us-east-1 AWS_REGION=us-east-1 aws ec2 describe-instances
Note that each run will also carry over the environment variables available from the original mpaws command run.
Custom command
If you need to run a custom command using each profile, you can use the _ (underscore) character which will tell mpaws to run the custom command AS-IS.
Here's an example:
export MPAWS_PROFILES=profile1,profile2,profile3
export MPAWS_REGIONS=us-east-1,ap-southeast-2
mpaws _ echo \$\{AWS_PROFILE\} \$\{AWS_REGION\}
Which will run the custom command against the permutation of the AWS profiles and AWS regions:
AWS_PROFILE=profile1 AWS_DEFAULT_REGION=us-east-1 AWS_REGION=us-east-1 echo \$\{AWS_PROFILE\} \$\{AWS_REGION\}
AWS_PROFILE=profile1 AWS_DEFAULT_REGION=ap-southeast-2 AWS_REGION=ap-southeast-2 echo \$\{AWS_PROFILE\} \$\{AWS_REGION\}
AWS_PROFILE=profile2 AWS_DEFAULT_REGION=us-east-1 AWS_REGION=us-east-1 echo \$\{AWS_PROFILE\} \$\{AWS_REGION\}
AWS_PROFILE=profile2 AWS_DEFAULT_REGION=ap-southeast-2 AWS_REGION=ap-southeast-2 echo \$\{AWS_PROFILE\} \$\{AWS_REGION\}
AWS_PROFILE=profile3 AWS_DEFAULT_REGION=us-east-1 AWS_REGION=us-east-1 echo \$\{AWS_PROFILE\} \$\{AWS_REGION\}
AWS_PROFILE=profile3 AWS_DEFAULT_REGION=ap-southeast-2 AWS_REGION=ap-southeast-2 echo \$\{AWS_PROFILE\} \$\{AWS_REGION\}
Configuration
Ensure that the profiles specified in MPAWS_PROFILES are already configured in credential file. And the regions specified in MPAWS_REGIONS, AWS_DEFAULT_REGION, AWS_REGION, or AWS configuration are valid regions.
| Environment Variable | Mandatory | Example |
|---|---|---|
| MPAWS_PROFILES | Yes | profile1,profile2,profile3 |
| MPAWS_REGIONS | No | us-east-1,ap-southeast-2 |
| AWS_DEFAULT_REGION | No | us-east-1 |
| AWS_REGION | No | us-east-1 |
Colophon
Build reports:
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mpaws-1.0.0.tar.gz.
File metadata
- Download URL: mpaws-1.0.0.tar.gz
- Upload date:
- Size: 8.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.2.1 CPython/3.12.12 Linux/6.11.0-1018-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f8591af50bc25e60e32107c4f0dcf7c01e9fbb61224051da584b01be10d02dc6
|
|
| MD5 |
eae1a08cb79782622c9ab9e23df9e6f2
|
|
| BLAKE2b-256 |
005847a6edef81ae443fc4569e4cedd7df54698f1377945db15a27ed255c827c
|
File details
Details for the file mpaws-1.0.0-py3-none-any.whl.
File metadata
- Download URL: mpaws-1.0.0-py3-none-any.whl
- Upload date:
- Size: 9.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.2.1 CPython/3.12.12 Linux/6.11.0-1018-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0320e6e7a2252abfcc8d8ce819c32477d9340d7bdfae9f84c8cdc3a0473d0f3c
|
|
| MD5 |
effc580bf06c2b5ecc422a56c77615ac
|
|
| BLAKE2b-256 |
03c994052b80d049e8562f8b57099c1ea12d3b83a5f7c0ae1b657067abe38e08
|