Skip to main content

A wrapper for executing a command with AWS CLI v2 and SSO

Project description

aws2-wrap

Quality Gate Status

This is a simple script to make it easier to use AWS Single Sign On credentials with tools that don't understand the sso entries in an AWS profile.

The script provides the following capabilities:

  • Running a specified command with the retrieved AWS SSO credentials.
  • Exporting the AWS SSO credentials.
  • Supporting credential_process within an AWS profile
  • Supporting assuming roles within an AWS profile

Please note that the script is called aws2-wrap to show that it works with AWS CLI v2, even though the CLI tool is no longer called aws2.

Install using pip

https://pypi.org/project/aws2-wrap

pip install aws2-wrap==1.1.3

Run a command using AWS SSO credentials

aws2-wrap [--profile <awsprofilename>] [--exec] <command>

Note that if you are using --exec and <command> contains spaces, it must be surrounded with double-quotation marks.

You can also specify the profile to be used via AWS_PROFILE which then allows the same profile to be used by subsequent tools and commands.

Examples:

aws2-wrap --profile MySSOProfile terraform plan

aws2-wrap --profile MySSOProfile --exec "terraform plan"

AWS_PROFILE=MySSOProfile aws2-wrap terraform plan

Generate a temporary profile in the $AWS_CONFIG_FILE and $AWS_SHARED_CREDENTIALS_FILE file

There are some utilities which work better with the configuration files rather than the environment variables. For example, if you need to access more than one profile at a time.

aws2-wrap --generate --profile $AWS_PROFILE --credentialsfile $AWS_SHARED_CREDENTIALS_FILE --configfile $AWS_CONFIG_FILE --outprofile $DESTINATION_PROFILE

Export the credentials

There may be circumstances when it is easier/better to set the appropriate environment variables so that they can be re-used by any aws command.

Since the script cannot directly set the environment variables in the calling shell process, it is necessary to use the following syntax:

eval "$(aws2-wrap [--profile <awsprofilename>] --export)"

For example:

eval "$(aws2-wrap --profile MySSOProfile --export)"

Assuming a role via AWS SSO

Your .aws/config file can look like this:

[default]
sso_start_url = xxxxxxxxxxxx
sso_region = us-west-2
sso_account_id = xxxxxxxxxxxx
sso_role_name = SSORoleName

[profile account1]
role_arn = arn:aws:iam::xxxxxxxxxxxx:role/role-to-be-assumed
source_profile = default
region = ap-northeast-1

allowing you to then run:

aws2-wrap --profile account1 <command>

and <command> will be run under role-to-be-assumed.

Use the credentials via .aws/config

If you are using a tool that works with normal AWS credentials but doesn't understand the new AWS SSO credentials, another option is to add a profile to .aws/config that calls the aws2-wrap script.

For example, add the following block to .aws/config:

[profile Wrapped]
credential_process = aws2-wrap --process --profile <awsprofilename>

then, after authentication, you can run any command that uses AWS credentials by specifying the "Wrapped" profile:

aws sso login --profile <awsprofilename>
export AWS_PROFILE=Wrapped
export AWS_SDK_LOAD_CONFIG=1
terraform plan

Note that because the profile is being specified via AWS_PROFILE, it is sometimes necessary (as shown above) to set AWS_SDK_LOAD_CONFIG in order to get tools like terraform to successfully retrieve the credentials.

Credits

Thanks to @flyinprogrammer, @abeluck, @topu, @bigwheel, @krabbit, @jscook2345, @hieki, @blazdivjak, @fukushun1994 and @johann8384 for their contributions.

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

aws2-wrap-1.1.3.tar.gz (6.7 kB view details)

Uploaded Source

Built Distribution

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

aws2_wrap-1.1.3-py3-none-any.whl (19.0 kB view details)

Uploaded Python 3

File details

Details for the file aws2-wrap-1.1.3.tar.gz.

File metadata

  • Download URL: aws2-wrap-1.1.3.tar.gz
  • Upload date:
  • Size: 6.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.5

File hashes

Hashes for aws2-wrap-1.1.3.tar.gz
Algorithm Hash digest
SHA256 0598561ea9df3a1a3f090fe85b0854892b25750e05aa76bef6cae69b241bb20e
MD5 fc302db5bd2b088ba0bc8935a4346234
BLAKE2b-256 fb0a6e106ccd6bffb644ab6720a5614fb282b646692fa6cc854bb6cd235603ac

See more details on using hashes here.

File details

Details for the file aws2_wrap-1.1.3-py3-none-any.whl.

File metadata

  • Download URL: aws2_wrap-1.1.3-py3-none-any.whl
  • Upload date:
  • Size: 19.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.5

File hashes

Hashes for aws2_wrap-1.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 c20d69573950f221b4d599c92d16d18bd18ff7e727f78610df1ea55c482d0b04
MD5 58dc06261419e5fbdddcdcf179c566df
BLAKE2b-256 2b1c38546eda5e5ba62f12f4538a6fd1897fee32e838c87cf7c9bd8098c633a2

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