Skip to main content

Easily create aioboto3 assume role sessions with automatic credential refreshing.

Project description

aioboto3-assume

Easily create aioboto3 assume role sessions with automatic credential refreshing.

NOTE - For boto3 support, see boto3-assume

Installation

Install with pip:

$ pip install aioboto3-assume

Tutorial

import aioboto3
from aioboto3_assume import assume_role

assume_session = assume_role(
    source_session=aioboto3.Session(), # You must pass in an aioboto3 session that automatically refreshes!
    assume_role_kwargs={
        "RoleArn": "arn:aws:iam::123412341234:role/my_role",
        "RoleSessionName": "my-role-session"
    }
)


async def main():
    # Create clients, and their credentials will auto-refresh when expired!
    async with assume_session.client("sts", region_name="us-east-1") as sts_client:
        print(await sts_client.get_caller_identity())
        # {
        #     "UserId": "EXAMPLEID", 
        #     "Account": "123412341234", 
        #     "Arn": "arn:aws:sts::123412341234:role/my_role", 
        #     "ResponseMetadata": {
        #         "RequestId": "asdfqwfqwfasdfasdfasfsdf", 
        #         "HTTPStatusCode": 200, 
        #         "HTTPHeaders": {
        #             "server": "amazon.com", 
        #             "date": "Tue, 27 Jun 2023 00:00:00 GMT"
        #         }, 
        #         "RetryAttempts": 0
        #     }
        # }

asyncio.run(main())

Under the hood an aioboto3 sts client will be created and assume_role called to get/refresh credentials.

You can pass the kwargs parameters as so:

  • assume_role_kwargs - Keyword arguments to pass when calling assume_role with a boto3 STS client.
    • Must at least provide RoleArn and RoleSessionName as outlined in the boto3 docs.
  • sts_client_kwargs - Kwargs to pass when creating the boto3 low level client for STS
    • By default only the service argument will be passed as "sts".
    • Note that you should not pass in the service_name or credentials here.
  • target_session_kwargs - Keyword arguments to pass when creating a the new target boto3 Session
    • By default no arguments are passed.
    • Note that you should only pass in region_name or aws_account_id or other variables that will not effect credentials or credential refreshing.

A more complex example:

import aioboto3
from aioboto3_assume import assume_role
from botocore.config import Config

assume_session = assume_role(
    source_session=aioboto3.Session(), 
    assume_role_kwargs={
        "RoleArn": "arn:aws:iam::123412341234:role/my_role",
        "RoleSessionName": "my-role-session",
        "DurationSeconds": 900,
        "Tags": [
            {
                "Key": "MyKey",
                "Value": "MyValue"
            }
        ]
    },
    sts_client_kwargs={
        "config": Config(
            retries={
                "total_max_attempts": 10,
                "mode": "adaptive"
            }
        )
    },
    target_session_kwargs={
        "region_name": "us-east-1"
    }
)

Development

Install the package in editable mode with dev dependencies.

(venv) $ pip install -e .[dev]

nox is used to manage various dev functions. Start with

(venv) $ nox --help

pyenv is used to manage python versions. To run the nox tests for applicable python version you will first need to install them. In the root project dir run:

(venv) $ pyenv install

Changelog

Changelog for aioboto3-assume. All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[0.1.0] - 2026-01-13

Initial Release. Split from boto3-assume package.

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

aioboto3_assume-0.1.0rc1.tar.gz (10.0 kB view details)

Uploaded Source

Built Distribution

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

aioboto3_assume-0.1.0rc1-py3-none-any.whl (10.5 kB view details)

Uploaded Python 3

File details

Details for the file aioboto3_assume-0.1.0rc1.tar.gz.

File metadata

  • Download URL: aioboto3_assume-0.1.0rc1.tar.gz
  • Upload date:
  • Size: 10.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for aioboto3_assume-0.1.0rc1.tar.gz
Algorithm Hash digest
SHA256 e21b0b98fe1b459812719675b3e10909914b7ba05bc224c33d7f75db3251f010
MD5 aad80fd9cb475c422e1be8a9c131cc22
BLAKE2b-256 0a4fcc2df2db4982728592db470d2b65eb52d649ea7f8c81598f8a3c59abaf55

See more details on using hashes here.

File details

Details for the file aioboto3_assume-0.1.0rc1-py3-none-any.whl.

File metadata

File hashes

Hashes for aioboto3_assume-0.1.0rc1-py3-none-any.whl
Algorithm Hash digest
SHA256 5278e54ebbde2169dbd6b369c4a4fbf1d6b43e23e37794ae8d83a45e7cdc4b10
MD5 75d0d6bbc72b7677d80cbf6880a59e71
BLAKE2b-256 fda51ddcd9b4e923ec7edd5484b781e1c4c1a0ee18e1e448e38b1fcfc425e5ba

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