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 query "select instance_id, region, state from aws_ec2_instance order by region, instance_id" --all
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 query "select instance_id, region from aws_ec2_instance" --profile awspipe-test --all
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 shell commands and meta commands:
quitorexit.quitor.exit.tables.inspect <table>.schema <table>.connections.refresh <table>
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.
Metadata
Release files for awspipe 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| awspipe-0.1.2.tar.gz | 23.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| awspipe-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 39.4 kB
Release files / awspipe-0.1.2.tar.gz
| Download URL | awspipe-0.1.2.tar.gz |
|---|---|
| Size | 23.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a0d9b45fe3a3f80ada45a7f0218916ab955f81001f7a8f7e63af3c25867ce002
|
|
BLAKE2b-256 checksum How to use checksums |
c959542605c007478ca0de921faff8c85dc07c33f71d670d8d1ef31c1f3e59b0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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}
|
Release files / awspipe-0.1.2-py3-none-any.whl
| Download URL | awspipe-0.1.2-py3-none-any.whl |
|---|---|
| Size | 15.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
dad73e4c6c7439f91ebed9203de3e2279b9df8a13a676435cc477fcbc057966c
|
|
BLAKE2b-256 checksum How to use checksums |
a38cf2c3e0da968eaebd4c4336d9421c8c45deeceb8882baaff02122d821e617
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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}
|