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.0.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.0-py3-none-any.whl (9.0 kB view details)

Uploaded Python 3

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

Hashes for mpaws-1.0.0.tar.gz
Algorithm Hash digest
SHA256 f8591af50bc25e60e32107c4f0dcf7c01e9fbb61224051da584b01be10d02dc6
MD5 eae1a08cb79782622c9ab9e23df9e6f2
BLAKE2b-256 005847a6edef81ae443fc4569e4cedd7df54698f1377945db15a27ed255c827c

See more details on using hashes here.

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

Hashes for mpaws-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0320e6e7a2252abfcc8d8ce819c32477d9340d7bdfae9f84c8cdc3a0473d0f3c
MD5 effc580bf06c2b5ecc422a56c77615ac
BLAKE2b-256 03c994052b80d049e8562f8b57099c1ea12d3b83a5f7c0ae1b657067abe38e08

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