Skip to main content

Execute AWS CLI across multiple profiles and multiple regions in one go

Project description

Avatar

Build Status Code Scanning Status Dependencies Status Security Status Published Version

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

Developer's Guide

Build reports:

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mpaws-1.0.1.tar.gz (8.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mpaws-1.0.1-py3-none-any.whl (9.0 kB view details)

Uploaded Python 3

File details

Details for the file mpaws-1.0.1.tar.gz.

File metadata

  • Download URL: mpaws-1.0.1.tar.gz
  • Upload date:
  • Size: 8.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.3.2 CPython/3.12.13 Linux/6.17.0-1010-azure

File hashes

Hashes for mpaws-1.0.1.tar.gz
Algorithm Hash digest
SHA256 d906c697a439084371e770d0d77742e21f7331d4aae59521a8aa93a5233c2f73
MD5 1bab6ff036313537070683387f54f588
BLAKE2b-256 dc6b5d21938f56103530167927399f9df95de48ec1b49d1d4b148ab058211950

See more details on using hashes here.

File details

Details for the file mpaws-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: mpaws-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 9.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.3.2 CPython/3.12.13 Linux/6.17.0-1010-azure

File hashes

Hashes for mpaws-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a029c873ee5c89f7c1dc3e7cecc13338385d613790956e5c7ffc7be7a81c6294
MD5 0d319d2a1edbdf64966e150ff39bb676
BLAKE2b-256 b2e6a006bc71ea0ca0635310f0af4fb62cfa62b211f946ae928d212d6fefd2ef

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page