Skip to main content

aws_easy_mfa

aws_easy_mfa is a simple wrapper for AWS's boto3 that makes it much simpler to use with MFA.

Simply wrap any function invoking a boto3 session with the aws_easy_mfa decorator and you're off! aws_easy_mfa will take care of all the tedius MFA login steps.

Installation

You can install aws_easy_mfa via pip

pip install aws-easy-mfa

A simple example

Using boto3 to list bucket names in s3 with the aws_easy_mfa decorator.

from aws_easy_mfa import aws_easy_mfa

@aws_easy_mfa(mfa_device_arn='arn-of-the-mfa-device', 
              mfa_token_code='code-from-token')
def list_s3_buckets(session=None):
    # Create an S3 client using the session
    s3_client = session.client('s3')

    # List all S3 buckets
    response = s3_client.list_buckets()

    # Extract the bucket names from the response
    buckets = response['Buckets']
    bucket_names = [bucket['Name'] for bucket in buckets]
    return bucket_names

Optional arguments

You can control your MFA timeout by including duration_seconds as shown below

@aws_easy_mfa(mfa_device_arn='arn-of-the-mfa-device', 
              mfa_token_code='code-from-token',
              duration_seconds=3600)
def list_s3_buckets(session=None):
    ...

In addition, if you would like your MFA-authorized sesssion for further usage, you can add the return_session=True flag to your decorator, like this

@aws_easy_mfa(mfa_device_arn='arn-of-the-mfa-device', 
              mfa_token_code='code-from-token',
              duration_seconds=3600,
              return_session=True)
def list_s3_buckets(session=None):
    ...

The session is returned as a second argument. So for example instead of

bucket_names = list_s3_buckets()

enabling this flag returns your session as

bucket_names, session = list_s3_buckets()

Direct session retrieval

You can also create an MFA session without usage of the decorator as shown below:

from aws_easy_mfa.utilities import get_mfa_credentials, create_boto3_session

# get credentials 
credentials = get_mfa_credentials(mfa_device_arn='arn-of-the-mfa-device', 
                                  mfa_token_code='code-from-token',
                                  duration_seconds)

# generate mfa-authorized session
session = create_boto3_session(credentials)

Metadata

Release files for aws-easy-mfa 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for aws-easy-mfa 0.1.1
File Size Uploaded
aws_easy_mfa-0.1.1.tar.gz 2.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for aws-easy-mfa 0.1.1
File Interpreter ABI Platform
aws_easy_mfa-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 5.4 kB

Release files / aws_easy_mfa-0.1.1.tar.gz

Download URL aws_easy_mfa-0.1.1.tar.gz
Size 2.3 kB
Tags Source
SHA-256 checksum
How to use checksums
cd6f02394396f3e47100545797104ff923d8eb30232a26fcc3b1420871c9c3d9
BLAKE2b-256 checksum
How to use checksums
46b79df7dfb329535176e0f2b8bc60bd08fcc277766c9c3211d8f33055156e87
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.16

Release files / aws_easy_mfa-0.1.1-py3-none-any.whl

Download URL aws_easy_mfa-0.1.1-py3-none-any.whl
Size 3.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
01e0acac575a6d2692e3c46f9d0adbe72badf91c9b59585f8faf548a9e015e64
BLAKE2b-256 checksum
How to use checksums
b21fc5fcf18db77f9d8b13680643249723a1691d1763e43cd75a9157063246db
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.16

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page