Skip to main content

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_account
    • aws_region
    • aws_s3_bucket
    • aws_ec2_instance
    • aws_vpc
    • aws_subnet
    • aws_security_group
  • Provides a SQL-first CLI with query, shell, tables, inspect, doctor, and cache 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 bundled awscrt dependency

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

  • awspipe stores its DuckDB cache under the platform cache directory unless AWSPIPE_HOME is set.
  • If that directory is not writable, awspipe falls back to .awspipe in the current working directory.
  • On Windows, setting AWSPIPE_HOME is the easiest way to isolate test runs:
$env:AWSPIPE_HOME = "$PWD\.awspipe-home"
  • AWS credentials are loaded in this order:
    • --profile
    • AWS_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:

  • quit or exit
  • .quit or .exit
  • .tables
  • .inspect <table>
  • .schema <table>
  • .connections
  • .refresh <table>

Project docs

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

awspipe-0.1.2.tar.gz (23.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

awspipe-0.1.2-py3-none-any.whl (15.8 kB view details)

Uploaded Python 3

File details

Details for the file awspipe-0.1.2.tar.gz.

File metadata

  • Download URL: awspipe-0.1.2.tar.gz
  • Upload date:
  • Size: 23.7 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

Hashes for awspipe-0.1.2.tar.gz
Algorithm Hash digest
SHA256 a0d9b45fe3a3f80ada45a7f0218916ab955f81001f7a8f7e63af3c25867ce002
MD5 e4f1ac0a8037805ae138a5f7b05a9da0
BLAKE2b-256 c959542605c007478ca0de921faff8c85dc07c33f71d670d8d1ef31c1f3e59b0

See more details on using hashes here.

File details

Details for the file awspipe-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: awspipe-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 15.8 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

Hashes for awspipe-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 dad73e4c6c7439f91ebed9203de3e2279b9df8a13a676435cc477fcbc057966c
MD5 ebcf6f77bd42da143a09d431552451fa
BLAKE2b-256 a38cf2c3e0da968eaebd4c4336d9421c8c45deeceb8882baaff02122d821e617

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page