Metadata-Version: 2.1
Name: awscliv2
Version: 1.5.2
Summary: Wrapper for AWS CLI v2
Home-page: https://github.com/vemel/awscliv2
Author: Vlad Emelianov
Author-email: vlad.emelianov.nz@gmail.com
License: MIT
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Environment :: Console
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Typing :: Typed
Description-Content-Type: text/markdown

# 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)

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)
  - [Before you start](#before-you-start)
  - [Installation](#installation)
  - [Usage](#usage)
    - [Docker fallback](#docker-fallback)
    - [Extra commands](#extra-commands)
  - [How to help](#how-to-help)
  - [Versioning](#versioning)
  - [Latest changes](#latest-changes)

## 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

## 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

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 [example.sh](https://github.com/vemel/awscliv2/blob/master/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>]` - 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

## How to help

- Ping AWS team to release an official PyPI package
- Help me to test MacOS installer and add Windows installer
- 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 [Changelog](./CHANGELOG.md).
Release notes can be found in [Releases](https://github.com/vemel/awscliv2/releases).

# Change Log

All notable changes to this project are documented on [Releases](https://github.com/vemel/awscliv2/releases) page.

The format is based on [Keep a Changelog](http://keepachangelog.com/)
and this project adheres to [PEP 440](https://www.python.org/dev/peps/pep-0440/).

# [Released]

## [1.5.2] - 2020-11-23

CI fixes

## [1.5.0] - 2020-09-04

### Added

- `awsv2 --install` command to install `AWS CLI v2` (Linux and MacOS are supported)
- `awsv2` checks `~/.awscliv2/dist/aws` and `~/aws-cli/aws` paths before fallback to Docker image

### Changed

- `awsv2 --update` is now an alias for `awsv2 --install`
- `awsv2 --version` outputs path to current `AWS CLI v2` executable

### Fixed

- Subprocesses always wait for all output to be processed
- `awsv2 --assume-role` did not use JSON output correctly

## [1.4.1] - 2020-09-03

### Fixed

- `awsv2 --assume-role` command now sets `aws_session_token` in `~/.aws/credentials`
- `awsv2 configure` sometimes did not output to `stdout` correctly

## [1.4.0] - 2020-09-02

### Added

- `aws_session_token` support to `awsv2 --configure`

### Changed

- `awsv2 --configure` no longer runs docker, changes file locally instead

## [1.3.1] - 2020-09-02

### Fixed

- Error if `$HOME/.aws` path does not exist

## [1.3.0] - 2020-09-02

### Added

- `awsv2 --assume-role <name> <source_profile> <role_arn>` command

### Fixed

- Files in `.aws` folder belonged to `root` user if they were created by `awsv2`

## [1.2.0] - 2020-08-30

### Added

- Support for interactive commands like `awsv2 configure`

### Changed

- Instructions output how to install `docker` if it was not found

### Fixed

- Error while running in non-TTY environment
- Error caused by keyboard interrupt
- `-U`/`--update` command did not return correct exit code

## [1.1.0] - 2020-08-29

### Added

- `-U`/`--update` CLI argument to pull latest `amazon/aws-cli` image

### Changed

- `-V`/`--version` command shows underlying image version
- `region_name` removed from `--configure` command

## [1.0.0] - 2020-08-29

Initial release

