{"id":16111771,"url":"https://github.com/cliffano/mpaws","last_synced_at":"2026-01-26T19:23:22.023Z","repository":{"id":194381737,"uuid":"679702733","full_name":"cliffano/mpaws","owner":"cliffano","description":"Python CLI for executing AWS command across multiple profiles and multiple regions in one go","archived":false,"fork":false,"pushed_at":"2026-01-13T10:42:24.000Z","size":349,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-13T11:43:35.998Z","etag":null,"topics":["aws","cli","python"],"latest_commit_sha":null,"homepage":"","language":"Makefile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cliffano.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-08-17T12:33:22.000Z","updated_at":"2026-01-13T10:30:17.000Z","dependencies_parsed_at":"2024-01-02T11:50:38.475Z","dependency_job_id":null,"html_url":"https://github.com/cliffano/mpaws","commit_stats":null,"previous_names":["cliffano/mpaws"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/cliffano/mpaws","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cliffano%2Fmpaws","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cliffano%2Fmpaws/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cliffano%2Fmpaws/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cliffano%2Fmpaws/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cliffano","download_url":"https://codeload.github.com/cliffano/mpaws/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cliffano%2Fmpaws/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28785334,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-26T13:55:28.044Z","status":"ssl_error","status_checked_at":"2026-01-26T13:55:26.068Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","cli","python"],"created_at":"2024-10-09T19:45:29.144Z","updated_at":"2026-01-26T19:23:22.011Z","avatar_url":"https://github.com/cliffano.png","language":"Makefile","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg align=\"right\" src=\"https://raw.github.com/cliffano/mpaws/main/avatar.jpg\" alt=\"Avatar\"/\u003e\n\n[![Build Status](https://github.com/cliffano/mpaws/workflows/CI/badge.svg)](https://github.com/cliffano/mpaws/actions?query=workflow%3ACI)\n[![Code Scanning Status](https://github.com/cliffano/mpaws/workflows/CodeQL/badge.svg)](https://github.com/cliffano/mpaws/actions?query=workflow%3ACodeQL)\n[![Dependencies Status](https://img.shields.io/librariesio/release/pypi/mpaws)](https://libraries.io/pypi/mpaws)\n[![Security Status](https://snyk.io/test/github/cliffano/mpaws/badge.svg)](https://snyk.io/test/github/cliffano/mpaws)\n[![Published Version](https://img.shields.io/pypi/v/mpaws.svg)](https://pypi.python.org/pypi/mpaws)\n\u003cbr/\u003e\n\nmpaws\n-----\n\nmpaws is a Python CLI for running an AWS command across multiple profiles and multiple regions in one go.\n\nThis is a time-saver when you are managing dozens of AWS accounts and need to run the same command across all of them.\n\nInstallation\n------------\n\n    pip3 install mpaws\n\nUsage\n-----\n\nSet an environment variable `MPAWS_PROFILES`, and another environment variable `MPAWS_REGIONS`, then run `mpaws` command:\n \n    export MPAWS_PROFILES=profile1,profile2,profile3\n    export MPAWS_REGIONS=us-east-1,ap-southeast-2\n    mpaws ec2 describe-instances\n\nThe above command will run `aws ec2 describe-instances` command for each permutation of the AWS profiles and AWS regions, like these:\n  \n    AWS_PROFILE=profile1 AWS_DEFAULT_REGION=us-east-1 AWS_REGION=us-east-1 aws ec2 describe-instances\n    AWS_PROFILE=profile1 AWS_DEFAULT_REGION=ap-southeast-2 AWS_REGION=ap-southeast-2 aws ec2 describe-instances\n    AWS_PROFILE=profile2 AWS_DEFAULT_REGION=us-east-1 AWS_REGION=us-east-1 aws ec2 describe-instances\n    AWS_PROFILE=profile2 AWS_DEFAULT_REGION=ap-southeast-2 AWS_REGION=ap-southeast-2 aws ec2 describe-instances\n    AWS_PROFILE=profile3 AWS_DEFAULT_REGION=us-east-1 AWS_REGION=us-east-1 aws ec2 describe-instances\n    AWS_PROFILE=profile3 AWS_DEFAULT_REGION=ap-southeast-2 AWS_REGION=ap-southeast-2 aws ec2 describe-instances\n\nAlternatively, 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:\n \n    export MPAWS_PROFILES=profile1,profile2,profile3\n    mpaws ec2 describe-instances\n\nThe 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](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-format-profile)).\n\nHere's an example if `AWS_DEFAULT_REGION` is specified with us-east-1 as the value:\n\n    AWS_PROFILE=profile1 AWS_DEFAULT_REGION=us-east-1 AWS_REGION=us-east-1 aws ec2 describe-instances\n    AWS_PROFILE=profile2 AWS_DEFAULT_REGION=us-east-1 AWS_REGION=us-east-1 aws ec2 describe-instances-instances\n    AWS_PROFILE=profile3 AWS_DEFAULT_REGION=us-east-1 AWS_REGION=us-east-1 aws ec2 describe-instances\n\nNote that each run will also carry over the environment variables available from the original `mpaws` command run.\n\n### Custom command\n\nIf 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.\n\nHere's an example:\n\n    export MPAWS_PROFILES=profile1,profile2,profile3\n    export MPAWS_REGIONS=us-east-1,ap-southeast-2\n    mpaws _ echo \\$\\{AWS_PROFILE\\} \\$\\{AWS_REGION\\}\n\nWhich will run the custom command against the permutation of the AWS profiles and AWS regions:\n\n    AWS_PROFILE=profile1 AWS_DEFAULT_REGION=us-east-1 AWS_REGION=us-east-1 echo \\$\\{AWS_PROFILE\\} \\$\\{AWS_REGION\\}\n    AWS_PROFILE=profile1 AWS_DEFAULT_REGION=ap-southeast-2 AWS_REGION=ap-southeast-2 echo \\$\\{AWS_PROFILE\\} \\$\\{AWS_REGION\\}\n    AWS_PROFILE=profile2 AWS_DEFAULT_REGION=us-east-1 AWS_REGION=us-east-1 echo \\$\\{AWS_PROFILE\\} \\$\\{AWS_REGION\\}\n    AWS_PROFILE=profile2 AWS_DEFAULT_REGION=ap-southeast-2 AWS_REGION=ap-southeast-2 echo \\$\\{AWS_PROFILE\\} \\$\\{AWS_REGION\\}\n    AWS_PROFILE=profile3 AWS_DEFAULT_REGION=us-east-1 AWS_REGION=us-east-1 echo \\$\\{AWS_PROFILE\\} \\$\\{AWS_REGION\\}\n    AWS_PROFILE=profile3 AWS_DEFAULT_REGION=ap-southeast-2 AWS_REGION=ap-southeast-2 echo \\$\\{AWS_PROFILE\\} \\$\\{AWS_REGION\\}\n\nConfiguration\n-------------\n\nEnsure that the profiles specified in `MPAWS_PROFILES` are already [configured in credential file](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html). And the regions specified in `MPAWS_REGIONS`, `AWS_DEFAULT_REGION`, `AWS_REGION`, or AWS configuration are [valid regions](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/).\n\n| Environment Variable | Mandatory | Example |\n|----------------------|-----------|---------|\n| MPAWS_PROFILES | Yes | profile1,profile2,profile3 |\n| MPAWS_REGIONS | No | us-east-1,ap-southeast-2 |\n| AWS_DEFAULT_REGION | No | us-east-1 |\n| AWS_REGION | No | us-east-1 |\n\nColophon\n--------\n\n[Developer's Guide](https://cliffano.github.io/developers_guide.html#python)\n\nBuild reports:\n\n* [Lint report](https://cliffano.github.io/mpaws/lint/pylint/index.html)\n* [Code complexity report](https://cliffano.github.io/mpaws/complexity/radon/index.html)\n* [Unit tests report](https://cliffano.github.io/mpaws/test/pytest/index.html)\n* [Test coverage report](https://cliffano.github.io/mpaws/coverage/coverage/index.html)\n* [Integration tests report](https://cliffano.github.io/mpaws/test-integration/pytest/index.html)\n* [API Documentation](https://cliffano.github.io/mpaws/doc/sphinx/index.html)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcliffano%2Fmpaws","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcliffano%2Fmpaws","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcliffano%2Fmpaws/lists"}