Skip to main content

balcony

Build and publish a Docker image to ghcr.io

Build and Deploy Documentation website

balcony is a modern CLI tool that with some killer features:

  • Auto-fill the required parameters for AWS API calls
  • Read the JSON data of any AWS resource in your account
  • Generate Terraform Import Blocks
  • Generate actual .tf Terraform Resource code

balcony uses read-only operations, it does not take any action on the used AWS account.

Visit the Documentation Website

Installation

Visit Installation & QuickStart Page to get started using balcony

pip3 install balcony

You can also use uv to get balcony.

brew install uv

uvx balcony info
# see options
balcony

# list available resources of ec2
balcony aws ec2 

# read a resource
balcony aws s3 Buckets

# show documentation
balcony aws iam Policy --list

# generate terraform import blocks for a resource
balcony terraform-import s3 Buckets

Features

Read any AWS Resource

balcony aws <service> <resource-name> --paginate command reads all resources of a given type in your AWS account.

Related Docs: QuickStart


Filter and Exclude by Tags

  • aws-jmespath-utils dependency is used to enable JMESPath expressions to filter and exclude resources by tags
  • Following expressions are used to select anything: (=, *=, =*, *=*)
    • You can leave one side empty or put a * there to discard that sides value

Filter tags

  • Select everything

    balcony aws ec2 Instances -js 'DescribeInstances[].Reservations[].Instances[].filter_tags(`["="]`, @).Tags'
    balcony aws ec2 Instances -js 'DescribeInstances[].Reservations[].Instances[].filter_tags(`["*="]`, @).Tags'
    balcony aws ec2 Instances -js 'DescribeInstances[].Reservations[].Instances[].filter_tags(`["=*"]`, @).Tags'
    balcony aws ec2 Instances -js 'DescribeInstances[].Reservations[].Instances[].filter_tags(`["*=*"]`, @).Tags'
    
  • Find named EC2 Instances

    balcony aws ec2 Instances -js 'DescribeInstances[].Reservations[].Instances[].filter_tags(`["Name="]`, @)'
    
  • Find AWS MAP migration tagged EC2 Instances

    balcony aws ec2 Instances -js 'DescribeInstances[].Reservations[].Instances[].filter_tags(`["map-migrated="]`, @)'
    

Exclude tags

  • Exclude everything

    balcony aws ec2 Instances -js 'DescribeInstances[].Reservations[].Instances[].exclude_tags(`["="]`, @).Tags'
    balcony aws ec2 Instances -js 'DescribeInstances[].Reservations[].Instances[].exclude_tags(`["*="]`, @).Tags'
    balcony aws ec2 Instances -js 'DescribeInstances[].Reservations[].Instances[].exclude_tags(`["=*"]`, @).Tags'
    balcony aws ec2 Instances -js 'DescribeInstances[].Reservations[].Instances[].exclude_tags(`["*=*"]`, @).Tags'  
    
  • Find un-named EC2 Instances

    balcony aws ec2 Instances -js 'DescribeInstances[].Reservations[].Instances[].exclude_tags(`["Name="]`, @)'
    
  • Find AWS MAP migration un-tagged EC2 Instances

    balcony aws ec2 Instances -js 'DescribeInstances[].Reservations[].Instances[].exclude_tags(`["map-migrated="]`, @)'
    

Generate Terraform Import Blocks

Terraform v1.5 introduced import blocks that allows users to define their imports as code.

balcony terraform-import <service> <resource-name> command generates these import blocks for you.

balcony terraform-import --list to see the list of supported resources.

Related Docs: Generate Terraform Import Blocks Related Docs: Balcony Terraform Import Support Matrix


Generate actual Terraform Resource Code

If you have:

  • initialized terraform project
  • import_blocks.tf file that's generated with balcony terraform-import command

you can run terraform plan -generate-config-out=generated.tf to generate actual .tf resource code.

This feature is achieved with the balcony-terraform-import Docker Image.

Related Docs: Generate Terraform Code with Docker Image


Interactive Wizard to create balcony import configurations

Balcony doesn't know how to create terraform import blocks for all of the AWS resources.

It can be taught how to do it by creating import-configurations yaml files, but it's a manual process. This is where the interactive wizard comes in.

Interactive Wizards asks you required questions to automatically create the import-configurations yaml files.

Related Docs: Terraform Import Configuration Wizard

Metadata

Release files for balcony 0.3.10

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for balcony 0.3.10
File Size Uploaded
balcony-0.3.10.tar.gz 49.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for balcony 0.3.10
File Interpreter ABI Platform
balcony-0.3.10-py3-none-any.whl Python 3 none any Details

Total release size: 117.9 kB

Release files / balcony-0.3.10.tar.gz

Download URL balcony-0.3.10.tar.gz
Size 49.9 kB
Tags Source
SHA-256 checksum
How to use checksums
8e081d3f778a51e2cc1c6d586ed8c89a6fbdb872b25a1a2c2e4b9ab026d2f27b
BLAKE2b-256 checksum
How to use checksums
fd29753d0f3a4b381f6e31adfde996a460c5a81387db4bc5ec26959716d5433b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.13 {"installer":{"name":"uv","version":"0.9.13"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / balcony-0.3.10-py3-none-any.whl

Download URL balcony-0.3.10-py3-none-any.whl
Size 68.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
eebc0c4361dacfaba92472c4639b6d2516146acb5b7f03d82190dc2b7894d68e
BLAKE2b-256 checksum
How to use checksums
d82f995a8ad16590af960b0e3f0d7c1407f0251b73a58f245015d56d4a2c5881
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.13 {"installer":{"name":"uv","version":"0.9.13"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

0.3.10 This release

2 release files

0.3.9

2 release files

0.3.8

2 release files

0.3.7

2 release files

0.3.6

2 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.11

2 release files

0.1.10

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.93

2 release files

0.0.87

2 release files

0.0.86

2 release files

0.0.84

2 release files

0.0.83

2 release files

0.0.82

2 release files

0.0.81

2 release files

0.0.80

2 release files

0.0.78

2 release files

0.0.77

2 release files

0.0.76

2 release files

0.0.63

2 release files

0.0.62

2 release files

0.0.61

2 release files

0.0.60

2 release files

0.0.58

2 release files

0.0.57

2 release files

0.0.23

2 release files

0.0.22

2 release files

0.0.19

2 release files

0.0.18

2 release files

0.0.16

2 release files

0.0.15

2 release files

0.0.14

2 release files

0.0.13

2 release files

0.0.12

2 release files

0.0.11

2 release files

0.0.10

2 release files

0.0.9

2 release files

0.0.8

2 release files

0.0.7

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page