awscliv2


Nameawscliv2 JSON
Version 2.3.0 PyPI version JSON
download
home_pagehttps://youtype.github.io/awscliv2/
SummaryWrapper for AWS CLI v2
upload_time2024-04-29 19:12:43
maintainerNone
docs_urlNone
authorVlad Emelianov
requires_python<4.0,>=3.7
licenseMIT
keywords awscli awscliv2 wrapper
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # AWS CLI v2 for Python

[![PyPI - awscliv2](https://img.shields.io/pypi/v/awscliv2.svg?color=blue&label=awscliv2)](https://pypi.org/project/awscliv2)
[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/awscliv2.svg?color=blue)](https://pypi.org/project/awscliv2)
[![PyPI - Downloads](https://static.pepy.tech/badge/awscliv2)](https://pepy.tech/project/awscliv2)

Wrapper for [AWS CLI v2](https://awscli.amazonaws.com/v2/documentation/api/latest/index.html).

- [AWS CLI v2 for Python](#aws-cli-v2-for-python)
  - [Features](#features)
  - [Before you start](#before-you-start)
  - [Installation](#installation)
  - [Usage](#usage)
    - [From command line](#from-command-line)
    - [Docker fallback](#docker-fallback)
    - [Extra commands](#extra-commands)
    - [As a Python module](#as-a-python-module)
  - [Development](#development)
  - [How to help](#how-to-help)
  - [Versioning](#versioning)
  - [Latest changes](#latest-changes)

## Features

- No dependency hell, like with original [awscli](https://pypi.org/project/awscli/)
- Can install and update `awscliv2` binaries
- Provides access to all AWS services
- Has Python interface `awscliv2.api.AWSAPI`

## Before you start

- This is not an official AWS CLI v2 application, [rant there](https://github.com/aws/aws-cli/issues/4947)
- Check the source code of this app, as you are working with sensitive data
- By default this app uses [amazon/aws-cli](https://hub.docker.com/r/amazon/aws-cli) Docker image
- To use [binaries for your OS](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html), run `awsv2 --install`
- Cross-check the source code again, probably I want to
  [steal your credentials](https://blog.sonatype.com/python-packages-upload-your-aws-keys-env-vars-secrets-to-web)!

## Installation

```bash
python -m pip install awscliv2
```

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

```bash
alias aws='awsv2'
```

## Usage

### From command line

Install `AWS CLI v2`:

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

Configure default profile if needed:

```bash
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:

```bash
# 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](https://github.com/youtype/awscliv2/blob/main/scripts/example.sh)

### Docker fallback

Unless you run `awsv2 --install` once, application will use [amazon/aws-cli](https://hub.docker.com/r/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:

- `$HOME/.aws` -> `/root/.aws` - credentials and config store
- `$(cwd)` -> `/aws` - Docker image workdir

### Extra commands

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

- `awsv2 -U/--update/--install` - Install `AWS CLI v2`
- `awsv2 --configure <profile_name> <aws_access_key_id> <aws_secret_access_key> [<aws_session_token>] [<region>]` - set profile in `~/.aws/credentials`
- `awsv2 --assume-role <profile_name> <source_profile> <role_arn>` - create a new profile with assume role credentials
- `awsv2 -V/--version` - Output `awscliv2` and `AWS CLI v2` versions

### As a Python module

Basic usage

```python
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

```python
from awscliv2.installers import install_multiplatform

install_multiplatform()
```

You can also set credentials or assume roles

```python
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

- Install [poetry](https://python-poetry.org/)
- Run `poetry install`
- Use `black` formatter in your IDE

## How to help

- Ping AWS team to release an official PyPI package
- Share your experience in issues

## Versioning

`awscliv2` version follows [PEP 440](https://www.python.org/dev/peps/pep-0440/).

## Latest changes

Full changelog can be found in [Releases](https://github.com/youtype/awscliv2/releases).


            

Raw data

            {
    "_id": null,
    "home_page": "https://youtype.github.io/awscliv2/",
    "name": "awscliv2",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4.0,>=3.7",
    "maintainer_email": null,
    "keywords": "awscli, awscliv2, wrapper",
    "author": "Vlad Emelianov",
    "author_email": "vlad.emelianov.nz@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/85/da/b41c7e0506de9b0260fb0b21cd3cc97a8e0b96200b41b306c65ff3569114/awscliv2-2.3.0.tar.gz",
    "platform": null,
    "description": "# AWS CLI v2 for Python\n\n[![PyPI - awscliv2](https://img.shields.io/pypi/v/awscliv2.svg?color=blue&label=awscliv2)](https://pypi.org/project/awscliv2)\n[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/awscliv2.svg?color=blue)](https://pypi.org/project/awscliv2)\n[![PyPI - Downloads](https://static.pepy.tech/badge/awscliv2)](https://pepy.tech/project/awscliv2)\n\nWrapper for [AWS CLI v2](https://awscli.amazonaws.com/v2/documentation/api/latest/index.html).\n\n- [AWS CLI v2 for Python](#aws-cli-v2-for-python)\n  - [Features](#features)\n  - [Before you start](#before-you-start)\n  - [Installation](#installation)\n  - [Usage](#usage)\n    - [From command line](#from-command-line)\n    - [Docker fallback](#docker-fallback)\n    - [Extra commands](#extra-commands)\n    - [As a Python module](#as-a-python-module)\n  - [Development](#development)\n  - [How to help](#how-to-help)\n  - [Versioning](#versioning)\n  - [Latest changes](#latest-changes)\n\n## Features\n\n- No dependency hell, like with original [awscli](https://pypi.org/project/awscli/)\n- Can install and update `awscliv2` binaries\n- Provides access to all AWS services\n- Has Python interface `awscliv2.api.AWSAPI`\n\n## Before you start\n\n- This is not an official AWS CLI v2 application, [rant there](https://github.com/aws/aws-cli/issues/4947)\n- Check the source code of this app, as you are working with sensitive data\n- By default this app uses [amazon/aws-cli](https://hub.docker.com/r/amazon/aws-cli) Docker image\n- To use [binaries for your OS](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html), run `awsv2 --install`\n- Cross-check the source code again, probably I want to\n  [steal your credentials](https://blog.sonatype.com/python-packages-upload-your-aws-keys-env-vars-secrets-to-web)!\n\n## Installation\n\n```bash\npython -m pip install awscliv2\n```\n\nYou can add an alias to your `~/.bashrc` or `~/.zshrc` to use it as a regular `AWS CLI v2`\n\n```bash\nalias aws='awsv2'\n```\n\n## Usage\n\n### From command line\n\nInstall `AWS CLI v2`:\n\n```bash\n# do not worry if this fails, you can still use awsv2 if you have docker installed\nawsv2 --install\n```\n\nConfigure default profile if needed:\n\n```bash\nAWS_ACCESS_KEY_ID='my-access-key'\nAWS_SECRET_ACCESS_KEY='my-secret-key'\n\n# --configure <profile_name> <aws_access_key_id> <aws_secret_access_key> [<aws_session_token>]\nawsv2 --configure default ${AWS_ACCESS_KEY_ID} ${AWS_SECRET_ACCESS_KEY}\nawsv2 configure set region us-west-1\n```\n\nUse `AWS CLI` as usual:\n\n```bash\n# alias for\n# docker run --rm -i -v ~/.aws:/root/.aws -v $(pwd):/aws amazon/aws-cli $@\nawsv2 s3 ls\n\n# or as a python module\npython -m awscliv2 s3 ls\n```\n\nAlso, you can check [scripts/example.sh](https://github.com/youtype/awscliv2/blob/main/scripts/example.sh)\n\n### Docker fallback\n\nUnless you run `awsv2 --install` once, application will use [amazon/aws-cli](https://hub.docker.com/r/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`\n\nUpdate it with `docker pull amazon/aws-cli`.\n\nContainer uses two volumes:\n\n- `$HOME/.aws` -> `/root/.aws` - credentials and config store\n- `$(cwd)` -> `/aws` - Docker image workdir\n\n### Extra commands\n\n`awscliv2` contains a few commands to make your life easier, especially in CI or any non-TTY environment.\n\n- `awsv2 -U/--update/--install` - Install `AWS CLI v2`\n- `awsv2 --configure <profile_name> <aws_access_key_id> <aws_secret_access_key> [<aws_session_token>] [<region>]` - set profile in `~/.aws/credentials`\n- `awsv2 --assume-role <profile_name> <source_profile> <role_arn>` - create a new profile with assume role credentials\n- `awsv2 -V/--version` - Output `awscliv2` and `AWS CLI v2` versions\n\n### As a Python module\n\nBasic usage\n\n```python\nfrom awscliv2.api import AWSAPI\nfrom awscliv2.exceptions import AWSCLIError\n\naws_api = AWSAPI()\n\ntry:\n    output = aws_api.execute([\"s3\", \"ls\"])\nexcept AWSCLIError as e:\n    print(f\"Something went wrong: {e}\")\nelse:\n    print(output)\n```\n\nInstall binaries for your OS from Python\n\n```python\nfrom awscliv2.installers import install_multiplatform\n\ninstall_multiplatform()\n```\n\nYou can also set credentials or assume roles\n\n```python\nfrom awscliv2.api import AWSAPI\n\naws_api = AWSAPI()\n\naws_api.set_credentials(\n    profile_name=\"my_profile\",\n    aws_access_key_id=\"access_key\",\n    aws_secret_access_key=\"secret_key\",\n    region=\"us-east-1\",\n)\naws_api.assume_role(\n    profile_name=\"my_profile\",\n    source_profile=\"source_profile\",\n    role_arn=\"role_arn\",\n)\n```\n\n## Development\n\n- Install [poetry](https://python-poetry.org/)\n- Run `poetry install`\n- Use `black` formatter in your IDE\n\n## How to help\n\n- Ping AWS team to release an official PyPI package\n- Share your experience in issues\n\n## Versioning\n\n`awscliv2` version follows [PEP 440](https://www.python.org/dev/peps/pep-0440/).\n\n## Latest changes\n\nFull changelog can be found in [Releases](https://github.com/youtype/awscliv2/releases).\n\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Wrapper for AWS CLI v2",
    "version": "2.3.0",
    "project_urls": {
        "Bug Tracker": "https://github.com/youtype/awscliv2/issues",
        "Documentation": "https://awscliv2.readthedocs.io/en/latest/",
        "Homepage": "https://youtype.github.io/awscliv2/",
        "Repository": "https://github.com/youtype/awscliv2",
        "Source": "https://github.com/youtype/awscliv2"
    },
    "split_keywords": [
        "awscli",
        " awscliv2",
        " wrapper"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d3aa2100a87ab276e79372246b3beb3dac3477047ef5ca2bd0305f6c45ba58f0",
                "md5": "72fabdea8615680c8cfc405048c29f89",
                "sha256": "75db306b83f4b01c098922b79bd82f97361aa8e96ccdc31c2952813c24fa62da"
            },
            "downloads": -1,
            "filename": "awscliv2-2.3.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "72fabdea8615680c8cfc405048c29f89",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0,>=3.7",
            "size": 13125,
            "upload_time": "2024-04-29T19:12:42",
            "upload_time_iso_8601": "2024-04-29T19:12:42.865835Z",
            "url": "https://files.pythonhosted.org/packages/d3/aa/2100a87ab276e79372246b3beb3dac3477047ef5ca2bd0305f6c45ba58f0/awscliv2-2.3.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "85dab41c7e0506de9b0260fb0b21cd3cc97a8e0b96200b41b306c65ff3569114",
                "md5": "01daf9055934ffc1b90aa1c2ead340d0",
                "sha256": "508617da0f9cd72ab2707ce9366bbd05c7cb2328f668a6f23ef1e73a06d423d7"
            },
            "downloads": -1,
            "filename": "awscliv2-2.3.0.tar.gz",
            "has_sig": false,
            "md5_digest": "01daf9055934ffc1b90aa1c2ead340d0",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.7",
            "size": 11740,
            "upload_time": "2024-04-29T19:12:43",
            "upload_time_iso_8601": "2024-04-29T19:12:43.955294Z",
            "url": "https://files.pythonhosted.org/packages/85/da/b41c7e0506de9b0260fb0b21cd3cc97a8e0b96200b41b306c65ff3569114/awscliv2-2.3.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-04-29 19:12:43",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "youtype",
    "github_project": "awscliv2",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "awscliv2"
}
        
Elapsed time: 0.37372s