boto3-assume
Easily create boto3 assume role sessions with automatic credential refreshing.
NOTE - For
aioboto3support, see aioboto3-assume.
Installation
Install with pip:
$ pip install boto3-assume
Tutorial
A minimal example:
import boto3
from boto3_assume import assume_role
assume_session = assume_role(
source_session=boto3.Session(), # You must pass in a boto3 session that automatically refreshes!
assume_role_kwargs={
"RoleArn": "arn:aws:iam::123412341234:role/my_role",
"RoleSessionName": "my-role-session"
}
)
# Create clients, and their credentials will auto-refresh when expired!
sts_client = assume_session.client("sts", region_name="us-east-1")
print(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
# }
# }
Under the hood a boto3 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
RoleArnandRoleSessionNameas outlined in the boto3 docs.
- Must at least provide
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_nameor credentials here.
- By default only the service argument will be passed as
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_nameoraws_account_idor other variables that will not effect credentials or credential refreshing.
A more complex example:
import boto3
from boto3_assume import assume_role
from botocore.config import Config
assume_session = assume_role(
source_session=boto3.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 boto3-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.2.1] - 2026-01-14
Fixed
- type hints and docstrings on
assume_role - README formatting
Security
[0.2.0] - 2026-01-13
Added
assume_role- replaces
assume_role_session - Allowed to pass parameters for the created session
- simplifies assume role APIs
- replaces
Deprecated
assume_role_session- Deprecated in favor of the newassume_rolefunctionassume_role_aio_session- Deprecated and moved to a new python packageaioboto3-assumeto simplify dependencies and split boto3 and aioboto3 functionality.
[0.1.3] - 2025-11-28
Added
- Tags for support of python 3.13 and 3.14
Removed
- Support for python 3.7-3.9
[0.1.2] - 2024-05-18
Removed
- `boto3` and `aioboto3` package extras. They didn't work and weren't documented correctly.
Fixed
- `datetime.datetime.utcnow()` deprecation in tests for python 3.12
[0.1.1] - 2023-06-28
Fixed
- Formatting for Changelog, README
[0.1.0] - 2023-06-28
Initial Release.
Release files for boto3-assume 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| boto3_assume-0.2.1.tar.gz | 12.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| boto3_assume-0.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 24.6 kB
Release files / boto3_assume-0.2.1.tar.gz
| Download URL | boto3_assume-0.2.1.tar.gz |
|---|---|
| Size | 12.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ab15049c2fc071ecafae5de59894a6d6793d1a53527de14dbe4fbc7a6db90ba1
|
|
BLAKE2b-256 checksum How to use checksums |
24e89b5d4796c3dd4815fe8f9f93af0cc47013199f9adb28eff01c3ea3888dc0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.3
|
Release files / boto3_assume-0.2.1-py3-none-any.whl
| Download URL | boto3_assume-0.2.1-py3-none-any.whl |
|---|---|
| Size | 12.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c8fb57f4d0e2434a460e2cb020a9c73bc248fb21218df22196d46920c5f471c6
|
|
BLAKE2b-256 checksum How to use checksums |
111df3b8bc0e3e1dad481b16b133aaae73bb00ec316d2686bf9fe943ed6ee3c3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.3
|