diff options
Diffstat (limited to 'python-requests-auth-aws-sigv4.spec')
| -rw-r--r-- | python-requests-auth-aws-sigv4.spec | 508 |
1 files changed, 508 insertions, 0 deletions
diff --git a/python-requests-auth-aws-sigv4.spec b/python-requests-auth-aws-sigv4.spec new file mode 100644 index 0000000..51ae20c --- /dev/null +++ b/python-requests-auth-aws-sigv4.spec @@ -0,0 +1,508 @@ +%global _empty_manifest_terminate_build 0 +Name: python-requests-auth-aws-sigv4 +Version: 0.7 +Release: 1 +Summary: AWS SigV4 Authentication with the python requests module +License: Apache Software License +URL: https://github.com/andrewjroth/requests-auth-aws-sigv4 +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/b3/bc/f695cd7d54327f925e22293d5b71b312dcdee0d8e720defc7a7a5f16a5ae/requests-auth-aws-sigv4-0.7.tar.gz +BuildArch: noarch + +Requires: python3-requests + +%description +# requests-auth-aws-sigv4 +Use AWS signature version 4 Authentication with the python requests module + +This package provides an authentication class that can be used with the popular +[requests](https://requests.readthedocs.io/en/master/) package to add the +[AWS Signature Version 4](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html) +authentication information. + +The signing code is inspired by the python example provided by AWS. + +This package should support any/all AWS API's, including API Gateway API's (execute-api), +Elasticsearch clusters, and others. AWS Credentials may be pulled from the environment +in an easy and familiar way. +The signature is added as a header to the request. + +## Installation + +``` +pip install requests-auth-aws-sigv4 +``` + +## Usage + +```python +import requests +from requests_auth_aws_sigv4 import AWSSigV4 + +r = requests.request('POST', 'https://sts.us-east-1.amazonaws.com', + data=dict(Version='2011-06-15', Action='GetCallerIdentity'), + auth=AWSSigV4('sts')) +print(r.text) +``` + +If **boto3** is available, it will attempt to use credentials that have been configured for the AWS CLI or SDK's, +as documented in [Boto3 User Guide: Credentials](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/configuration.html#credentials). +Otherwise, if **boto3** is not available, credentials must be provided using either environment variables or parameters. + +#### Example using environment variables + +Environment variable names are the same as documented for AWS CLI and SDK's. + +```shell +export AWS_ACCESS_KEY_ID=MYACCESSKEY +export AWS_SECRET_ACCESS_KEY=THISISSECRET +export AWS_SESSION_TOKEN=THISISWHERETHESUPERLONGTOKENGOES +``` + +```python +import requests +from requests_auth_aws_sigv4 import AWSSigV4 + +aws_auth = AWSSigV4('ec2') # If not provided, check for AWS Credentials from Environment Variables + +r = requests.request('GET', 'https://ec2.us-east-1.amazonaws.com?Version=2016-11-15&Action=DescribeRegions', + auth=aws_auth) +print(r.text) +``` + +#### Example using parameters + +Passing credentials as parameters overrides all other possible sources. + +```python +import requests +from requests_auth_aws_sigv4 import AWSSigV4 + +aws_auth = AWSSigV4('ec2', + aws_access_key_id=ACCESS_KEY, + aws_secret_access_key=SECRET_KEY, + aws_session_token=SESSION_TOKEN, +) + +r = requests.request('GET', 'https://ec2.us-east-1.amazonaws.com?Version=2016-11-15&Action=DescribeRegions', + auth=aws_auth) +print(r.text) +``` + +### Usage with Elasticsearch Client (elasticsearch-py) + +```python +from elasticsearch import Elasticsearch, RequestsHttpConnection +from requests_auth_aws_sigv4 import AWSSigV4 + +es_host = 'search-service-foobar.us-east-1.es.amazonaws.com' +aws_auth = AWSSigV4('es') + +# use the requests connection_class and pass in our custom auth class +es_client = Elasticsearch(host=es_host, + port=80, + connection_class=RequestsHttpConnection, + http_auth=aws_auth) +es_client.info() +``` + +### Debug Logging + +All log messages are at the module level. + +```python +import logging +logging.basicConfig() # Setup basic logging to stdout +log = logging.getLogger('requests_auth_aws_sigv4') +log.setLevel(logging.DEBUG) +``` + +## Command Line Usage + +The module can be run from the command line in a way that is similar to how cURL works. + +```shell +$ python3 -m requests_auth_aws_sigv4 https://sampleapi.execute-api.us-east-1.amazonaws.com/test/ -v +> GET /test/ HTTP/1.1 +> Host: sampleapi.execute-api.us-east-1.amazonaws.com +> User-Agent: python-requests/2.23.0 auth-aws-sigv4/0.2 +> Accept-Encoding: gzip, deflate +> Accept: */* +> Connection: keep-alive +> X-AMZ-Date: 20200513T180549Z +> Authorization: AWS4-HMAC-SHA256 Credential=AKIASAMPLEKEYID/20200513/us-east-1/execute-api/aws4_request, SignedHeaders=host;x-amz-date, Signature=EXAMPLESIGNATUREISHERE +> +< HTTP/1.1 200 OK +< Connection: keep-alive +< Content-Length: 25 +< Content-Type: application/json +< Date: Wed, 13 May 2020 18:05:49 GMT +< Server: Server +< x-amz-apigw-id: MeExampleiMFs99= +< x-amzn-RequestId: 7example-7b7b-4343-9a9a-9bbexampleaf +hello +``` + +## Temporary Security Credentials + +Credentials issued from [AWS STS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html) +to grant temporary access can be used normally. Set the token by passing the `aws_session_token` parameter, +setting the `AWS_SESSION_TOKEN` environment variable, or configure the credential for boto3 as normal. + +## Using boto3 (or botocore) for AWS Credentials + +The packages **boto3** and **botocore** are not requirements to use this module. +As mentioned above, if **boto3** is available, a boto3.Session will be created to attempt to get credentials +and configure the default region. This will happen automatically if credentials are not provided as parameters. + + + + + +%package -n python3-requests-auth-aws-sigv4 +Summary: AWS SigV4 Authentication with the python requests module +Provides: python-requests-auth-aws-sigv4 +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-requests-auth-aws-sigv4 +# requests-auth-aws-sigv4 +Use AWS signature version 4 Authentication with the python requests module + +This package provides an authentication class that can be used with the popular +[requests](https://requests.readthedocs.io/en/master/) package to add the +[AWS Signature Version 4](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html) +authentication information. + +The signing code is inspired by the python example provided by AWS. + +This package should support any/all AWS API's, including API Gateway API's (execute-api), +Elasticsearch clusters, and others. AWS Credentials may be pulled from the environment +in an easy and familiar way. +The signature is added as a header to the request. + +## Installation + +``` +pip install requests-auth-aws-sigv4 +``` + +## Usage + +```python +import requests +from requests_auth_aws_sigv4 import AWSSigV4 + +r = requests.request('POST', 'https://sts.us-east-1.amazonaws.com', + data=dict(Version='2011-06-15', Action='GetCallerIdentity'), + auth=AWSSigV4('sts')) +print(r.text) +``` + +If **boto3** is available, it will attempt to use credentials that have been configured for the AWS CLI or SDK's, +as documented in [Boto3 User Guide: Credentials](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/configuration.html#credentials). +Otherwise, if **boto3** is not available, credentials must be provided using either environment variables or parameters. + +#### Example using environment variables + +Environment variable names are the same as documented for AWS CLI and SDK's. + +```shell +export AWS_ACCESS_KEY_ID=MYACCESSKEY +export AWS_SECRET_ACCESS_KEY=THISISSECRET +export AWS_SESSION_TOKEN=THISISWHERETHESUPERLONGTOKENGOES +``` + +```python +import requests +from requests_auth_aws_sigv4 import AWSSigV4 + +aws_auth = AWSSigV4('ec2') # If not provided, check for AWS Credentials from Environment Variables + +r = requests.request('GET', 'https://ec2.us-east-1.amazonaws.com?Version=2016-11-15&Action=DescribeRegions', + auth=aws_auth) +print(r.text) +``` + +#### Example using parameters + +Passing credentials as parameters overrides all other possible sources. + +```python +import requests +from requests_auth_aws_sigv4 import AWSSigV4 + +aws_auth = AWSSigV4('ec2', + aws_access_key_id=ACCESS_KEY, + aws_secret_access_key=SECRET_KEY, + aws_session_token=SESSION_TOKEN, +) + +r = requests.request('GET', 'https://ec2.us-east-1.amazonaws.com?Version=2016-11-15&Action=DescribeRegions', + auth=aws_auth) +print(r.text) +``` + +### Usage with Elasticsearch Client (elasticsearch-py) + +```python +from elasticsearch import Elasticsearch, RequestsHttpConnection +from requests_auth_aws_sigv4 import AWSSigV4 + +es_host = 'search-service-foobar.us-east-1.es.amazonaws.com' +aws_auth = AWSSigV4('es') + +# use the requests connection_class and pass in our custom auth class +es_client = Elasticsearch(host=es_host, + port=80, + connection_class=RequestsHttpConnection, + http_auth=aws_auth) +es_client.info() +``` + +### Debug Logging + +All log messages are at the module level. + +```python +import logging +logging.basicConfig() # Setup basic logging to stdout +log = logging.getLogger('requests_auth_aws_sigv4') +log.setLevel(logging.DEBUG) +``` + +## Command Line Usage + +The module can be run from the command line in a way that is similar to how cURL works. + +```shell +$ python3 -m requests_auth_aws_sigv4 https://sampleapi.execute-api.us-east-1.amazonaws.com/test/ -v +> GET /test/ HTTP/1.1 +> Host: sampleapi.execute-api.us-east-1.amazonaws.com +> User-Agent: python-requests/2.23.0 auth-aws-sigv4/0.2 +> Accept-Encoding: gzip, deflate +> Accept: */* +> Connection: keep-alive +> X-AMZ-Date: 20200513T180549Z +> Authorization: AWS4-HMAC-SHA256 Credential=AKIASAMPLEKEYID/20200513/us-east-1/execute-api/aws4_request, SignedHeaders=host;x-amz-date, Signature=EXAMPLESIGNATUREISHERE +> +< HTTP/1.1 200 OK +< Connection: keep-alive +< Content-Length: 25 +< Content-Type: application/json +< Date: Wed, 13 May 2020 18:05:49 GMT +< Server: Server +< x-amz-apigw-id: MeExampleiMFs99= +< x-amzn-RequestId: 7example-7b7b-4343-9a9a-9bbexampleaf +hello +``` + +## Temporary Security Credentials + +Credentials issued from [AWS STS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html) +to grant temporary access can be used normally. Set the token by passing the `aws_session_token` parameter, +setting the `AWS_SESSION_TOKEN` environment variable, or configure the credential for boto3 as normal. + +## Using boto3 (or botocore) for AWS Credentials + +The packages **boto3** and **botocore** are not requirements to use this module. +As mentioned above, if **boto3** is available, a boto3.Session will be created to attempt to get credentials +and configure the default region. This will happen automatically if credentials are not provided as parameters. + + + + + +%package help +Summary: Development documents and examples for requests-auth-aws-sigv4 +Provides: python3-requests-auth-aws-sigv4-doc +%description help +# requests-auth-aws-sigv4 +Use AWS signature version 4 Authentication with the python requests module + +This package provides an authentication class that can be used with the popular +[requests](https://requests.readthedocs.io/en/master/) package to add the +[AWS Signature Version 4](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html) +authentication information. + +The signing code is inspired by the python example provided by AWS. + +This package should support any/all AWS API's, including API Gateway API's (execute-api), +Elasticsearch clusters, and others. AWS Credentials may be pulled from the environment +in an easy and familiar way. +The signature is added as a header to the request. + +## Installation + +``` +pip install requests-auth-aws-sigv4 +``` + +## Usage + +```python +import requests +from requests_auth_aws_sigv4 import AWSSigV4 + +r = requests.request('POST', 'https://sts.us-east-1.amazonaws.com', + data=dict(Version='2011-06-15', Action='GetCallerIdentity'), + auth=AWSSigV4('sts')) +print(r.text) +``` + +If **boto3** is available, it will attempt to use credentials that have been configured for the AWS CLI or SDK's, +as documented in [Boto3 User Guide: Credentials](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/configuration.html#credentials). +Otherwise, if **boto3** is not available, credentials must be provided using either environment variables or parameters. + +#### Example using environment variables + +Environment variable names are the same as documented for AWS CLI and SDK's. + +```shell +export AWS_ACCESS_KEY_ID=MYACCESSKEY +export AWS_SECRET_ACCESS_KEY=THISISSECRET +export AWS_SESSION_TOKEN=THISISWHERETHESUPERLONGTOKENGOES +``` + +```python +import requests +from requests_auth_aws_sigv4 import AWSSigV4 + +aws_auth = AWSSigV4('ec2') # If not provided, check for AWS Credentials from Environment Variables + +r = requests.request('GET', 'https://ec2.us-east-1.amazonaws.com?Version=2016-11-15&Action=DescribeRegions', + auth=aws_auth) +print(r.text) +``` + +#### Example using parameters + +Passing credentials as parameters overrides all other possible sources. + +```python +import requests +from requests_auth_aws_sigv4 import AWSSigV4 + +aws_auth = AWSSigV4('ec2', + aws_access_key_id=ACCESS_KEY, + aws_secret_access_key=SECRET_KEY, + aws_session_token=SESSION_TOKEN, +) + +r = requests.request('GET', 'https://ec2.us-east-1.amazonaws.com?Version=2016-11-15&Action=DescribeRegions', + auth=aws_auth) +print(r.text) +``` + +### Usage with Elasticsearch Client (elasticsearch-py) + +```python +from elasticsearch import Elasticsearch, RequestsHttpConnection +from requests_auth_aws_sigv4 import AWSSigV4 + +es_host = 'search-service-foobar.us-east-1.es.amazonaws.com' +aws_auth = AWSSigV4('es') + +# use the requests connection_class and pass in our custom auth class +es_client = Elasticsearch(host=es_host, + port=80, + connection_class=RequestsHttpConnection, + http_auth=aws_auth) +es_client.info() +``` + +### Debug Logging + +All log messages are at the module level. + +```python +import logging +logging.basicConfig() # Setup basic logging to stdout +log = logging.getLogger('requests_auth_aws_sigv4') +log.setLevel(logging.DEBUG) +``` + +## Command Line Usage + +The module can be run from the command line in a way that is similar to how cURL works. + +```shell +$ python3 -m requests_auth_aws_sigv4 https://sampleapi.execute-api.us-east-1.amazonaws.com/test/ -v +> GET /test/ HTTP/1.1 +> Host: sampleapi.execute-api.us-east-1.amazonaws.com +> User-Agent: python-requests/2.23.0 auth-aws-sigv4/0.2 +> Accept-Encoding: gzip, deflate +> Accept: */* +> Connection: keep-alive +> X-AMZ-Date: 20200513T180549Z +> Authorization: AWS4-HMAC-SHA256 Credential=AKIASAMPLEKEYID/20200513/us-east-1/execute-api/aws4_request, SignedHeaders=host;x-amz-date, Signature=EXAMPLESIGNATUREISHERE +> +< HTTP/1.1 200 OK +< Connection: keep-alive +< Content-Length: 25 +< Content-Type: application/json +< Date: Wed, 13 May 2020 18:05:49 GMT +< Server: Server +< x-amz-apigw-id: MeExampleiMFs99= +< x-amzn-RequestId: 7example-7b7b-4343-9a9a-9bbexampleaf +hello +``` + +## Temporary Security Credentials + +Credentials issued from [AWS STS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html) +to grant temporary access can be used normally. Set the token by passing the `aws_session_token` parameter, +setting the `AWS_SESSION_TOKEN` environment variable, or configure the credential for boto3 as normal. + +## Using boto3 (or botocore) for AWS Credentials + +The packages **boto3** and **botocore** are not requirements to use this module. +As mentioned above, if **boto3** is available, a boto3.Session will be created to attempt to get credentials +and configure the default region. This will happen automatically if credentials are not provided as parameters. + + + + + +%prep +%autosetup -n requests-auth-aws-sigv4-0.7 + +%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-requests-auth-aws-sigv4 -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Fri May 05 2023 Python_Bot <Python_Bot@openeuler.org> - 0.7-1 +- Package Spec generated |
