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 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 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.0.tar.gz (20.6 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.0-py3-none-any.whl (14.2 kB view details)

Uploaded Python 3

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

Hashes for awspipe-0.1.0.tar.gz
Algorithm Hash digest
SHA256 a079d088d88c48171a803da2ccb05b0e4253dce8a63f0e8540795103c7a3a4f5
MD5 16291a04e4cca9008efcadbf83665741
BLAKE2b-256 76d50abe77393d87c9e8ad6ed131d7e12ecec9055fffc2745e1024063971e490

See more details on using hashes here.

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

Hashes for awspipe-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d4ca39a0214dcb4e0d875df7daa372e44d46cc532fe4269fdd6bc28041da76f4
MD5 b7d994353862ff23751e9d9fe0ef5a72
BLAKE2b-256 f502b47f72ec21b45b047feaa293d15d6a31c743faedfeb704d9d75f26c5765e

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