%global _empty_manifest_terminate_build 0 Name: python-aws2-wrap Version: 1.3.1 Release: 1 Summary: A wrapper for executing a command with AWS CLI v2 and SSO License: GPL-3.0-or-later URL: https://github.com/linaro-its/aws2-wrap Source0: https://mirrors.nju.edu.cn/pypi/web/packages/db/07/db4c98b4d44ee824ad21563910d198f0da2561a6c7cfeaef1b954979c5c6/aws2-wrap-1.3.1.tar.gz BuildArch: noarch Requires: python3-psutil %description # aws2-wrap [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=linaro-its_aws2-wrap&metric=alert_status)](https://sonarcloud.io/dashboard?id=linaro-its_aws2-wrap) 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: * Run a command using AWS SSO credentials * Generate a temporary profile in the $AWS_CONFIG_FILE and $AWS_SHARED_CREDENTIALS_FILE file * Exporting the AWS SSO credentials * Use the credentials via .aws/config * Assume a role via AWS SSO 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` ``` pip3 install aws2-wrap ``` ### Using `brew` ``` brew install aws2-wrap ``` ## Run a command using AWS SSO credentials `aws2-wrap [--profile ] [--exec] ` Note that if you are using `--exec` and `` 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` If you are having problems with the use of quotes in the command, you may find one of the other methods works better for you. ## 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` Optionally, you can specify `--generatestdout` instead of `--generate`. `--outprofile` is still required in order to name the section but `--credentialsfile` and `--configfile` are ignored. With this command option, the generated credentials will then be output to the console. ## Export the AWS SSO 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 ] --export)"` For example: `eval "$(aws2-wrap --profile MySSOProfile --export)"` If you are using PowerShell, the equivalent command is: `aws2-wrap --profile MySSOProfile --export | invoke-expression` ## 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`: ```text [profile Wrapped] credential_process = aws2-wrap --process --profile ``` then, after authentication, you can run any command that uses AWS credentials by specifying the "Wrapped" profile: ```text aws sso login --profile 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. ## Assume a role via AWS SSO Your `.aws/config` file can look like this: ```text [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 ` and `` will be run under `role-to-be-assumed`. ## Contributing Contributions are more than welcome, particularly if you are able to expand on the test code. Please ensure, though, that before you submit a Pull Request, you run `make test` to ensure that your changes don't break any of the existing tests and `make pylint` to ensure that the linter is happy. Please note that the CI/CD pylint test *may* use different pylint rules from your own local setup. Please also note that `make pylint` will only report errors. You *may* want to explicitly run `python3 -m pylint setup.py aws2wrap` ## Credits Thanks to @nitrocode, @chenrui333, @l1n, @sodul, @damian-bisignano, @flyinprogrammer, @abeluck, @topu, @bigwheel, @krabbit, @jscook2345, @hieki, @blazdivjak, @fukushun1994, @johann8384, @ppezoldt, @atwoodjw, @lummish, @life36-vinny, @lukemassa and @axelri for their contributions. %package -n python3-aws2-wrap Summary: A wrapper for executing a command with AWS CLI v2 and SSO Provides: python-aws2-wrap BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-aws2-wrap # aws2-wrap [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=linaro-its_aws2-wrap&metric=alert_status)](https://sonarcloud.io/dashboard?id=linaro-its_aws2-wrap) 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: * Run a command using AWS SSO credentials * Generate a temporary profile in the $AWS_CONFIG_FILE and $AWS_SHARED_CREDENTIALS_FILE file * Exporting the AWS SSO credentials * Use the credentials via .aws/config * Assume a role via AWS SSO 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` ``` pip3 install aws2-wrap ``` ### Using `brew` ``` brew install aws2-wrap ``` ## Run a command using AWS SSO credentials `aws2-wrap [--profile ] [--exec] ` Note that if you are using `--exec` and `` 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` If you are having problems with the use of quotes in the command, you may find one of the other methods works better for you. ## 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` Optionally, you can specify `--generatestdout` instead of `--generate`. `--outprofile` is still required in order to name the section but `--credentialsfile` and `--configfile` are ignored. With this command option, the generated credentials will then be output to the console. ## Export the AWS SSO 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 ] --export)"` For example: `eval "$(aws2-wrap --profile MySSOProfile --export)"` If you are using PowerShell, the equivalent command is: `aws2-wrap --profile MySSOProfile --export | invoke-expression` ## 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`: ```text [profile Wrapped] credential_process = aws2-wrap --process --profile ``` then, after authentication, you can run any command that uses AWS credentials by specifying the "Wrapped" profile: ```text aws sso login --profile 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. ## Assume a role via AWS SSO Your `.aws/config` file can look like this: ```text [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 ` and `` will be run under `role-to-be-assumed`. ## Contributing Contributions are more than welcome, particularly if you are able to expand on the test code. Please ensure, though, that before you submit a Pull Request, you run `make test` to ensure that your changes don't break any of the existing tests and `make pylint` to ensure that the linter is happy. Please note that the CI/CD pylint test *may* use different pylint rules from your own local setup. Please also note that `make pylint` will only report errors. You *may* want to explicitly run `python3 -m pylint setup.py aws2wrap` ## Credits Thanks to @nitrocode, @chenrui333, @l1n, @sodul, @damian-bisignano, @flyinprogrammer, @abeluck, @topu, @bigwheel, @krabbit, @jscook2345, @hieki, @blazdivjak, @fukushun1994, @johann8384, @ppezoldt, @atwoodjw, @lummish, @life36-vinny, @lukemassa and @axelri for their contributions. %package help Summary: Development documents and examples for aws2-wrap Provides: python3-aws2-wrap-doc %description help # aws2-wrap [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=linaro-its_aws2-wrap&metric=alert_status)](https://sonarcloud.io/dashboard?id=linaro-its_aws2-wrap) 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: * Run a command using AWS SSO credentials * Generate a temporary profile in the $AWS_CONFIG_FILE and $AWS_SHARED_CREDENTIALS_FILE file * Exporting the AWS SSO credentials * Use the credentials via .aws/config * Assume a role via AWS SSO 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` ``` pip3 install aws2-wrap ``` ### Using `brew` ``` brew install aws2-wrap ``` ## Run a command using AWS SSO credentials `aws2-wrap [--profile ] [--exec] ` Note that if you are using `--exec` and `` 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` If you are having problems with the use of quotes in the command, you may find one of the other methods works better for you. ## 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` Optionally, you can specify `--generatestdout` instead of `--generate`. `--outprofile` is still required in order to name the section but `--credentialsfile` and `--configfile` are ignored. With this command option, the generated credentials will then be output to the console. ## Export the AWS SSO 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 ] --export)"` For example: `eval "$(aws2-wrap --profile MySSOProfile --export)"` If you are using PowerShell, the equivalent command is: `aws2-wrap --profile MySSOProfile --export | invoke-expression` ## 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`: ```text [profile Wrapped] credential_process = aws2-wrap --process --profile ``` then, after authentication, you can run any command that uses AWS credentials by specifying the "Wrapped" profile: ```text aws sso login --profile 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. ## Assume a role via AWS SSO Your `.aws/config` file can look like this: ```text [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 ` and `` will be run under `role-to-be-assumed`. ## Contributing Contributions are more than welcome, particularly if you are able to expand on the test code. Please ensure, though, that before you submit a Pull Request, you run `make test` to ensure that your changes don't break any of the existing tests and `make pylint` to ensure that the linter is happy. Please note that the CI/CD pylint test *may* use different pylint rules from your own local setup. Please also note that `make pylint` will only report errors. You *may* want to explicitly run `python3 -m pylint setup.py aws2wrap` ## Credits Thanks to @nitrocode, @chenrui333, @l1n, @sodul, @damian-bisignano, @flyinprogrammer, @abeluck, @topu, @bigwheel, @krabbit, @jscook2345, @hieki, @blazdivjak, @fukushun1994, @johann8384, @ppezoldt, @atwoodjw, @lummish, @life36-vinny, @lukemassa and @axelri for their contributions. %prep %autosetup -n aws2-wrap-1.3.1 %build %py3_build %install %py3_install install -d -m755 %{buildroot}/%{_pkgdocdir} if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi pushd %{buildroot} if [ -d usr/lib ]; then find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/lib64 ]; then find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/bin ]; then find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/sbin ]; then find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst fi touch doclist.lst if [ -d usr/share/man ]; then find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst fi popd mv %{buildroot}/filelist.lst . mv %{buildroot}/doclist.lst . %files -n python3-aws2-wrap -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Fri May 05 2023 Python_Bot - 1.3.1-1 - Package Spec generated