Skip to main content

This package provides utilities to add AWS Signature V4 authentication infrormation to calls made by python httpx library.

Project description

httpx-auth-awssigv4

pypi python Build Status codecov

This package provides utilities to add AWS Signature V4 authentication infrormation to calls made by python httpx library.

Installation

pip install httpx-auth-awssigv4

Usage

Basic Usage

This library has primarily been developed to help add authentication support to httpx library while making calls to REST API deployed using AWS API Gateway service. Will be extended in future to help with calling AWS services.

import httpx
from httpx_auth_awssigv4 import Sigv4Auth

# creating a callable for httpx library
auth = Sigv4Auth(
    access_key="AWS_ACCESS_KEY_ID",
    secret_key="AWS_SECRET_ACCESS_KEY",
    service="execute-api",
    region="us-east-1"
)

# Calling an API endpoint deployed using AWS API Gateway which has
# AWS_IAM set as authorization type

response = httpx.get(
    url="https://<API ID>.execute-api.<Region>.amazonaws.com/prod/detials",
    params={"username": "tstark"},
    auth=auth
)

# Making a post call

response = httpx.get(
    url="https://<API ID>.execute-api.<Region>.amazonaws.com/prod/details",
    params={"username": "tstark"},
    json={"mission": "avengers"},
    auth=auth
)

With STS credentials

Sigv4Auth can be used with temporary credentials generated with tools like aws-sso-util.

import boto3
from httpx_auth_awssigv4 import Sigv4Auth

# fetch temporary credentials from AWS STS service
credentials = boto3.Session(profile_name="<profile>").get_credentials()

# creating a callable for httpx library
auth = Sigv4Auth(
    access_key=credentials.access_key,
    secret_key=credentials.secret_key,
    token=credentials.token
    service="execute-api",
    region="us-east-1"
)

Sigv4Auth can also be used with temporary credentials from AWS STS.

import boto3
from httpx_auth_awssigv4 import Sigv4Auth

# role with `execute-api` permissions
ROLE_ARN="arn:aws:iam::<ACCOUNT ID>:role/<ROLE NAME"

# fetch temporary credentials from AWS STS service
credentials = boto3.client('sts').assume_role(
    RoleArn=ROLE_ARN,
    RoleSessionName="httpxcall"
)["Credentials"]

# creating a callable for httpx library
auth = Sigv4Auth(
    access_key=credentials["AccessKeyId"],
    secret_key=credentials["SecretAccessKey"],
    token=credentials["SessionToken"]
    service="execute-api",
    region="us-east-1"
)

ToDo

  • Add examples on usage along with API backend deployment instructions.
  • Test the library with AWS services and add integration tests.

Credits

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

httpx-auth-awssigv4-0.1.4.tar.gz (8.4 kB view details)

Uploaded Source

Built Distribution

httpx_auth_awssigv4-0.1.4-py3-none-any.whl (6.3 kB view details)

Uploaded Python 3

File details

Details for the file httpx-auth-awssigv4-0.1.4.tar.gz.

File metadata

  • Download URL: httpx-auth-awssigv4-0.1.4.tar.gz
  • Upload date:
  • Size: 8.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.9.12

File hashes

Hashes for httpx-auth-awssigv4-0.1.4.tar.gz
Algorithm Hash digest
SHA256 6e8c87c9367896db6eea28a2195cb85a61ddf374cffab2070b2d044c3343625d
MD5 2310b8da7ff1728f88a585a23cb8a0aa
BLAKE2b-256 c15bb5e80ff26240182b9d0dad19702676b3bb66cd3840ff2a2e3a5c3c10ee67

See more details on using hashes here.

File details

Details for the file httpx_auth_awssigv4-0.1.4-py3-none-any.whl.

File metadata

File hashes

Hashes for httpx_auth_awssigv4-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 e58ea5abf976cf4d6ef7643088e8e8002a557ca0520b076c56a9b9a14141bfae
MD5 5adafe0f1dbd6cb48849650c3494d427
BLAKE2b-256 7311fdfd64af9ba9806e27e4290bd7e8d39eede24c5c15b4ed946bfd0846a895

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page