youtype / awscliv2

Wrapper for dockerized AWS CLI v2
https://youtype.github.io/awscliv2/
MIT License
33 stars 5 forks source link
aws awscli docker

AWS CLI v2 for Python

PyPI - awscliv2 PyPI - Python Version PyPI - Downloads

Wrapper for AWS CLI v2.

Features

Before you start

Installation

python -m pip install awscliv2

You can add an alias to your ~/.bashrc or ~/.zshrc to use it as a regular AWS CLI v2

alias aws='awsv2'

Usage

From command line

Install AWS CLI v2:

# do not worry if this fails, you can still use awsv2 if you have docker installed
awsv2 --install

Configure default profile if needed:

AWS_ACCESS_KEY_ID='my-access-key'
AWS_SECRET_ACCESS_KEY='my-secret-key'

# --configure <profile_name> <aws_access_key_id> <aws_secret_access_key> [<aws_session_token>]
awsv2 --configure default ${AWS_ACCESS_KEY_ID} ${AWS_SECRET_ACCESS_KEY}
awsv2 configure set region us-west-1

Use AWS CLI as usual:

# alias for
# docker run --rm -i -v ~/.aws:/root/.aws -v $(pwd):/aws amazon/aws-cli $@
awsv2 s3 ls

# or as a python module
python -m awscliv2 s3 ls

Also, you can check scripts/example.sh

Docker fallback

Unless you run awsv2 --install once, application will use amazon/aws-cli Docker image. The image is not ideal, and it uses root user, so fix downloaded file permissions manually. Or just run awsv2 --install

Update it with docker pull amazon/aws-cli.

Container uses two volumes:

Extra commands

awscliv2 contains a few commands to make your life easier, especially in CI or any non-TTY environment.

As a Python module

Basic usage

from awscliv2.api import AWSAPI
from awscliv2.exceptions import AWSCLIError

aws_api = AWSAPI()

try:
    output = aws_api.execute(["s3", "ls"])
except AWSCLIError as e:
    print(f"Something went wrong: {e}")
else:
    print(output)

Install binaries for your OS from Python

from awscliv2.installers import install_multiplatform

install_multiplatform()

You can also set credentials or assume roles

from awscliv2.api import AWSAPI

aws_api = AWSAPI()

aws_api.set_credentials(
    profile_name="my_profile",
    aws_access_key_id="access_key",
    aws_secret_access_key="secret_key",
    region="us-east-1",
)
aws_api.assume_role(
    profile_name="my_profile",
    source_profile="source_profile",
    role_arn="role_arn",
)

Development

How to help

Versioning

awscliv2 version follows PEP 440.

Latest changes

Full changelog can be found in Releases.