https://github.com/neonwatty/aws_easy_mfa
aws_easy_mfa is a simple wrapper for AWS's boto3 that makes it much simpler to use with MFA.
https://github.com/neonwatty/aws_easy_mfa
aws boto3 devops-tools ec2 lambda-functions mlops python s3-bucket
Last synced: 3 months ago
JSON representation
aws_easy_mfa is a simple wrapper for AWS's boto3 that makes it much simpler to use with MFA.
- Host: GitHub
- URL: https://github.com/neonwatty/aws_easy_mfa
- Owner: neonwatty
- Created: 2023-05-24T20:13:24.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-05-24T20:49:17.000Z (over 2 years ago)
- Last Synced: 2025-03-09T05:46:21.984Z (7 months ago)
- Topics: aws, boto3, devops-tools, ec2, lambda-functions, mlops, python, s3-bucket
- Language: Python
- Homepage:
- Size: 31.3 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
[](https://github.com/jermwatt/aws_easy_mfa/actions/workflows/python-app.yml)
[](https://github.com/jermwatt/aws_easy_mfa/actions/workflows/python-publish.yml)# 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
```python
pip install aws-easy-mfa
```## A simple example
Using boto3 to list bucket names in s3 with the `aws_easy_mfa` decorator.
```python
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
```python
@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
```python
@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
```python
bucket_names = list_s3_buckets()
```enabling this flag returns your session as
```python
bucket_names, session = list_s3_buckets()
```## Direct session retrieval
You can also create an MFA session without usage of the decorator as shown below:
```python
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)
```