dyn-cli 0.1.0
Dyn CLI - DynamoDB Command Line Interface
License: Apache License 2.0

# dyn-cli

Command Line Interface for Dynamo DB

Content:

* [Installation](#installation)
* [Usage](#usage)
* [Commands](#commands)
  + [List tables](#list-tables)
  + [Create table](#create-table)
  + [Update table](#update-table)
  + [Delete table](#delete-table)
* [Examples](#examples)

## Installation

The easiest way to install dyn-cli is to use [pip](https://pip.pypa.io//en/latest/):

```bash
$ pip install dyncli
```

## Usage

Synopsis:

```bash
$ dyn [OPTIONS] COMMAND [ARGS]...
```

List of commands:

* [List tables](#list-tables)
* [Create table](#create-table)
* [Update table](#update-table)
* [Delete table](#delete-table)

### Options

You can configure your AWS credentials via options. The following table shows these options.

| Option                              | Description                                                                  |
|-------------------------------------|------------------------------------------------------------------------------|
| `-a`, `--access-key AWS_ACCESS_KEY` | AWS Access Key ID. (default: local)                                          |
| `-s`, `--secret-key AWS_SECRET_KEY` | AWS Secret Key. (default: local)                                             |
| `-r`, `--region AWS_REGION`         | AWS Region. (default: us-east-1)                                             |
| `-n`, `--no-local`                  | Disable local endpoint_url set up to http://localhost:8000. (default: false) |
| `-h`, `--help`                      | Show help message.                                                           |

## Commands

### List tables

List all tables of DynamoDB.

```bash
$ dyn list_tables
```

### Create table

Creates a DynamoDB table with `TABLE` name and attributes defined in `ATTRIBUTE`.

```bash
$ dyn create_table [OPTIONS] TABLE ATTRIBUTE [ATTRIBUTE]...
```

#### Options

| Option                              | Description                                                                  |
|-------------------------------------|------------------------------------------------------------------------------|
| `-r`, `--read-units INTEGER`        | Read capacity units. (default: 1)                                            |
| `-w`, `--write-units INTEGER`       | Write capacity units. (default: 1)                                           |

#### Atrributes

The `ATTRIBUTE` argument can be defined like: `name:type[:pk][:sk]`

* _name_ - name of attribute.
* _type_ - type of attribute that can be:
  + `s` - string
  + `n` - number
  + `b` - binary
* `pk` - first attribute of primary key (partition key - HASH)
* `sk` - second attribute of primary key (sort key - RANGE)

### Update table

Modifies a DynamoDB table with TABLE name.

```bash
$ dyn update_table [OPTIONS] TABLE
```

#### Options

| Option                              | Description                                                                  |
|-------------------------------------|------------------------------------------------------------------------------|
| `-r`, `--read-units INTEGER`        | Read capacity units. (default: 1)                                            |
| `-w`, `--write-units INTEGER`       | Write capacity units. (default: 1)                                           |

### Delete table

Deletes a table of DynamoDB.

```bash
$ dyn delete_table TABLE
```

## Examples

Listing all tables:

```bash
$ dyn list_tables
```

```json
{
    "TableNames": [
        "Movies",
        "Music"
    ]
}
```

Creating Music table:

```bash
$ dyn create_table Music Artist:s:pk SongTitle:s:sk
```

```json
{
    "TableDescription": {
        "AttributeDefinitions": [
            {
                "AttributeName": "Artist",
                "AttributeType": "S"
            },
            {
                "AttributeName": "SongTitle",
                "AttributeType": "S"
            }
        ],
        "CreationDateTime": "2017-07-02T23:19:52.932000-03:00",
        "ItemCount": 0,
        "KeySchema": [
            {
                "AttributeName": "Artist",
                "KeyType": "HASH"
            },
            {
                "AttributeName": "SongTitle",
                "KeyType": "RANGE"
            }
        ],
        "ProvisionedThroughput": {
            "LastDecreaseDateTime": "1969-12-31T21:00:00-03:00",
            "LastIncreaseDateTime": "1969-12-31T21:00:00-03:00",
            "NumberOfDecreasesToday": 0,
            "ReadCapacityUnits": 1,
            "WriteCapacityUnits": 1
        },
        "TableArn": "arn:aws:dynamodb:ddblocal:000000000000:table/Music",
        "TableName": "Music",
        "TableSizeBytes": 0,
        "TableStatus": "ACTIVE"
    }
}
```

Updating Music table:

```bash
$ dyn update_table Music -r 10 -w 10
```

```javascript
{
    "TableDescription": {
        "AttributeDefinitions": [
            {
                "AttributeName": "Artist",
                "AttributeType": "S"
            },
            {
                "AttributeName": "SongTitle",
                "AttributeType": "S"
            }
        ],
        "CreationDateTime": "2017-07-02T23:19:52.932000-03:00",
        "ItemCount": 0,
        "KeySchema": [
            {
                "AttributeName": "Artist",
                "KeyType": "HASH"
            },
            {
                "AttributeName": "SongTitle",
                "KeyType": "RANGE"
            }
        ],
        "ProvisionedThroughput": {
            "LastDecreaseDateTime": "1969-12-31T21:00:00-03:00",
            "LastIncreaseDateTime": "1969-12-31T21:00:00-03:00",
            "NumberOfDecreasesToday": 0,
            "ReadCapacityUnits": 10,
            "WriteCapacityUnits": 10
        },
        "TableArn": "arn:aws:dynamodb:ddblocal:000000000000:table/Music",
        "TableName": "Music",
        "TableSizeBytes": 0,
        "TableStatus": "ACTIVE"
    }
}
```

Deleting Music table:

```bash
$ dyn delete_table Music
```

```json
{
    "TableDescription": {
        "ItemCount": 0,
        "ProvisionedThroughput": {
            "LastDecreaseDateTime": "1969-12-31T21:00:00-03:00",
            "LastIncreaseDateTime": "1969-12-31T21:00:00-03:00",
            "NumberOfDecreasesToday": 0,
            "ReadCapacityUnits": 10,
            "WriteCapacityUnits": 10
        },
        "TableArn": "arn:aws:dynamodb:ddblocal:000000000000:table/Music",
        "TableName": "Music",
        "TableSizeBytes": 0,
        "TableStatus": "DELETING"
    }
}
```