Metadata-Version: 2.1
Name: balcony
Version: 0.0.65
Summary: AWS API for humans
License: GPL-3.0-or-later
Author: Oguzhan Yilmaz
Author-email: oguzhanylmz271@gmail.com
Requires-Python: >=3.7,<4.0
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Requires-Dist: boto3 (>=1.24.80,<2.0.0)
Requires-Dist: inflect (>=6.0.0,<7.0.0)
Requires-Dist: jmespath (>=1.0.1,<2.0.0)
Requires-Dist: mkdocs-autorefs (>=0.4.1,<0.5.0)
Requires-Dist: mkdocs-material (>=8.5.7,<9.0.0)
Requires-Dist: mkdocstrings[python] (>=0.19.0,<0.20.0)
Requires-Dist: rich (>=12.5.1,<13.0.0)
Requires-Dist: typer (>=0.6.1,<0.7.0)
Description-Content-Type: text/markdown

# balcony

AWS API for us humans.

Balcony helps to lift the undifferentiated heavy lifting that is reading from AWS SDK & API.

Balcony fills out the **required parameters** for any operation, automatically. 


## Installation

```bash
pip3 install balcony

python3 -m pip install balcony
```


## Basic Usage
#### List all available AWS Services

```bash
balcony aws
```
#### List all Resource Nodes of a Service
```bash
balcony aws iam

balcony aws ec2
```
#### See the documentation of a Resource Node and its Operations
```bash
balcony aws iam Policy -l
# or
balcony aws iam Policy --list
```


#### Read a Resource Node


```bash
balcony aws iam Policy

# if you are curious to see what's going on 
# under the hood, enable the debug messages 
balcony aws iam Policy -d
# or
balcony aws iam Policy --debug
```
#### Read a Resource Nodes specific operation

```bash
balcony aws iam Policy get

balcony aws iam Policy list
```

#### Filter generated parameters with UNIX style pattern matching
```bash
balcony aws iam Policy get  -p "*service-role/*"

# supports multiple patterns 
balcony aws iam Policy -p "*service-role/*" -p "*prod-*"

```

#### Use queries for the json data -- like `jq`
```bash
balcony aws iam Policy \
    --jmespath-selector "GetPolicy[*].Policy"
# or
balcony aws iam Policy \
    -js "GetPolicy[*].Policy"
```

#### Use `--format` option for customized output

```bash
# create stop-instances script for running instances
balcony aws ec2 Instances \
    -js "DescribeInstances[*].Reservations[*].Instances[?State.Name=='running'][][]" \
    --format "aws ec2 stop-instances --instance-ids {InstanceId} # {Tags}"

# create delete-policy script
balcony aws iam Policy \
    --jmespath-selector "GetPolicy[*].Policy" \
    --format "aws iam delete-policy --policy-arn {Arn}"
```
