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 meta commands:

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

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.1.tar.gz (21.8 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.1-py3-none-any.whl (14.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: awspipe-0.1.1.tar.gz
  • Upload date:
  • Size: 21.8 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.1.tar.gz
Algorithm Hash digest
SHA256 2a3ccb5891702f24376833108e103f610a113d8691ab074eb706b029366598c4
MD5 273e85a687956fe2175063b8bfd7f43c
BLAKE2b-256 0a1e4e9f132e627d2c2aa8d9bbfb1b28f60bdeedb381d56f80b39eb3f55e110f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: awspipe-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 14.9 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 77ac4f246f4113f4b0b171180fca831aa7a9a7e0e8d5b66942aaf65afcfc2398
MD5 e2c111d7b215cdacc833c5bdd3c17913
BLAKE2b-256 a53ee94566d20b729a86ec27103d988caca2daeaa6bc96504c28ba7622443cdc

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