A Steampipe-style AWS SQL CLI powered by DuckDB.
Project description
awspipe
awspipe is a small Python CLI that mimics the Steampipe workflow for AWS queries: point it at AWS CLI credentials, expose AWS resources as SQL tables, and execute queries against a local DuckDB cache.
What it does today
- Uses AWS CLI-managed credentials through
boto3 - Exposes these tables:
aws_accountaws_regionaws_s3_bucketaws_ec2_instanceaws_vpcaws_subnetaws_security_group
- Provides a SQL-first CLI with
query,shell,tables,inspect,doctor, andcache clear - Stores fetched data in a local DuckDB database with a short TTL cache
- Works on Windows by default through normal Python and AWS CLI conventions
Requirements
- Python 3.13+
- AWS CLI configured with a working profile or default credentials
login_session-based AWS profiles are supported through the bundledawscrtdependency
Install
Install from PyPI:
pip install awspipe
Or with uv:
uv tool install awspipe
Quick start
Run the CLI directly after install:
$env:AWS_PROFILE = "awspipe-test"
$env:AWS_REGION = "eu-west-1"
awspipe tables
awspipe doctor
awspipe query "select account_id, arn from aws_account"
awspipe query "select name, region from aws_s3_bucket order by name"
awspipe query "select instance_id, state, vpc_id from aws_ec2_instance"
awspipe shell
Windows notes
awspipestores its DuckDB cache under the platform cache directory unlessAWSPIPE_HOMEis set.- If that directory is not writable,
awspipefalls back to.awspipein the current working directory. - On Windows, setting
AWSPIPE_HOMEis the easiest way to isolate test runs:
$env:AWSPIPE_HOME = "$PWD\.awspipe-home"
- AWS credentials are loaded in this order:
--profileAWS_PROFILE- default AWS SDK credential chain
Command reference
awspipe query "select * from aws_account" --profile awspipe-test --region eu-west-1
awspipe shell --profile awspipe-test --region eu-west-1
awspipe tables
awspipe inspect aws_vpc
awspipe doctor --profile awspipe-test --region eu-west-1
awspipe cache clear
The interactive shell supports these meta commands:
.tables.inspect <table>.schema <table>.connections.refresh <table>.quit
Project docs
- Brief contributor and agent entrypoint: AGENTS.md
- Architecture overview: docs/architecture.md
- Codebase map: docs/codebase-map.md
- Library and dependency notes: docs/libraries-and-dependencies.md
- Provider extension guide: docs/extending-awspipe.md
- Development workflow: docs/development-workflow.md
- Live AWS validation: docs/testing-live-aws.md
Development workflow
$env:UV_CACHE_DIR='.uv-cache'
uv sync --extra dev
uv run pytest
For detailed contributor guidance, use AGENTS.md and the docs under docs/.
Live AWS testing
Stage 1 stops before live AWS validation is considered complete. After the implementation and non-live tests are in place, provide a working AWS CLI profile and region and continue with the steps in docs/testing-live-aws.md.
Current limitations
- Authentication is AWS CLI credential-chain only; custom app config is deferred.
- Multi-account aggregators and assume-role configuration are not exposed yet.
- The backend is DuckDB-only in this first implementation.
- The initial table set is intentionally small and AWS-only.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file awspipe-0.1.0.tar.gz.
File metadata
- Download URL: awspipe-0.1.0.tar.gz
- Upload date:
- Size: 20.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.5 {"installer":{"name":"uv","version":"0.10.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a079d088d88c48171a803da2ccb05b0e4253dce8a63f0e8540795103c7a3a4f5
|
|
| MD5 |
16291a04e4cca9008efcadbf83665741
|
|
| BLAKE2b-256 |
76d50abe77393d87c9e8ad6ed131d7e12ecec9055fffc2745e1024063971e490
|
File details
Details for the file awspipe-0.1.0-py3-none-any.whl.
File metadata
- Download URL: awspipe-0.1.0-py3-none-any.whl
- Upload date:
- Size: 14.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.5 {"installer":{"name":"uv","version":"0.10.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d4ca39a0214dcb4e0d875df7daa372e44d46cc532fe4269fdd6bc28041da76f4
|
|
| MD5 |
b7d994353862ff23751e9d9fe0ef5a72
|
|
| BLAKE2b-256 |
f502b47f72ec21b45b047feaa293d15d6a31c743faedfeb704d9d75f26c5765e
|