Skip to main content

httpAWS: a command line HTTP tool for AWS Services

httpAWS is a command line HTTP client for AWS services. Its goal is to make CLI interaction with AWS web services as human-friendly as possible. It provides a simple httpaws command that allows for sending HTTP requests to AWS services using a simple and natural syntax, and displays colorized output. httpAWS can be used for testing, debugging, and generally interacting direly with AWS services with HTTP requests.

httpAWS directly makes HTTP calls to AWS service endpoints using the requests and aws-requests-auth modules.

This is a low-level command-line tool intended for use by developers so that they can easily make direct HTTP calls to AWS services. It is effectively a command-line programmatic replacement for using a graphical tool like Postman and was inspired by tools like HTTPie but is specific to AWS services.

Latest Version

Main features

  • Expressive and intuitive syntax
  • Formatted and colorized terminal output
  • Built-in XML support
  • Python 2.7 and 3.x support
  • Linux, macOS and Windows support

Installation

A universal installation method (that works on Windows, Mac OS X, Linux, …, and always provides the latest version) is to use pip:

# Make sure we have an up-to-date version of pip and setuptools:
$ pip install --upgrade pip setuptools

$ pip install --upgrade httpaws

(If pip installation fails for some reason, you can try easy_install httpaws as a fallback.)

Python version

Although Python 2.7 is supported as well, it is strongly recommended to install httpAWS against the latest Python 3.x whenever possible. That will ensure that some of the newer HTTP features, such as SNI (Server Name Indication), work out of the box. Python 3 is the default for Homebrew installations starting with version 0.9.4.

Unstable version

You can also install the latest unreleased development version directly from the master branch on GitHub. It is a work-in-progress of a future stable release so the experience might be not as smooth.

$ pip install -U https://github.com/http-aws/http-aws/archive/master.tar.gz

Usage

Hello World:

$ httpaws -s ec2 DescribeVpcs

Synopsis:

$ httpaws [flags] <API>

See also httpaws -h for detailed help:

$ httpaws -h
usage: httpaws [-h] [-r REGION] [-s SERVICE] [-e ENDPOINT] [-c CREDS]
               [-v VERSION] [-p] [-w]
               api

httpaws v0.0.2: A CLI HTTP client for AWS services with syntax highlighting

positional arguments:
  api                   name of the API to call - e.g. "DescribeVpcs"

optional arguments:
  -h, --help            show this help message and exit
  -r REGION, --region REGION
                        AWS region. Overrides config/env - e.g. us-east-1
  -s SERVICE, --service SERVICE
                        AWS service - e.g. ec2, s3, etc.
  -e ENDPOINT, --endpoint ENDPOINT
                        override command's default URL with the given URL -
                        e.g. ec2.us-east-1.amazonaws.com
  -c CREDS, --creds CREDS
                        override AWS Access Key Id and AWS Secret Access Key -
                        i.e. <Access_Key>:<Secret_Key>
  -v VERSION, --version VERSION
                        API version to use for the service
  -p, --paginate        paginate long output
  -w, --wrap            wrap long lines in paginated output (instead of chop)

See the AWS Documentation for API references for each service:
https://docs.aws.amazon.com

Authentication

The currently supported authentication scheme is provided by the aws-requests-auth Python module. The two modes are are Automatic and Manual. There is one flag that controls authentication:

Flag Description
-c/--creds Pass a <AWS_Access_Key_Id>:<AWS_Secret_Access_Key> pair as the argument

Automatic auth

If the -c flag is not provided, then httpAWS will attempt to automatically gather your AWS credentials using botocore.

$ httpaws DescribeVpcs

Manual auth

$ http -c <Access_Key>:<Secret_Key> DescribeVpcs

HTTP redirects

HTTP redirects are not followed and only the first esponse is shown.

Output options

At this time, httpAWS only outputs the final response and the whole response message is printed (headers as well as the body).

Terminal output

httpAWS does several things by default in order to make its terminal output easy to read.

Colors and formatting

Syntax highlighting is applied to HTTP headers bodies (where it makes sense).

Also, the following formatting is applied:

  • XML data is indented and unicode escapes are converted to the characters they represent.

Redirected output

By default, httpAWS sends all output to stdout.

The reason is to make piping httpAWS's output to other programs work with no extra flags. Most of the time, only the raw response body is of an interest when the output is redirected.

Force colorizing and formatting, and show both the request and the response in less pager:

$ httpaws -p DescribeVpcs

The -p flag tells httpAWS to pipe the output to less and to interpret color escape sequences included httpAWS`s output.

Piping output

You can also redirect the response body to another program:

$ httpaws -s s3 List |  grep "MagnumOpus.txt"

Responses

Responses are downloaded synchronously and printed when the download is complete which is convenient for formatting and coloring moderate sized responses. However, if you want to download large files without using too much memory, this isn't the tool you are looking for.

Sessions

At this time every request httpAWS makes is completely independent of any previous ones to the same host and httpAWS does not support persistent sessions.

Config

httpAWS uses the same config files as used by the aws cli.

Config file location

The default location of the configuration files are ~/.aws/config and ~/.aws/credentials.

Configurable options

The default AWS region is read from the config file, while the default AWS access and secret keys are read from the credentials file.

Best practices

The -p option for paginating long output is excellent when a human is reading this output, but is not typically desirable during non-interactive invocations. You most likely do not want to use use the -p option when httpAWS is invoke from example form a cron job. Also, if you wnat to redirect or pipe the output of httpAWS, the -p flag should also be avoided.

Meta

User support

Please use the following support channels:

Dependencies

Under the hood, httpAWS uses these amazing libraries:

  • Requests
    • Python HTTP library for humans
  • aws-requests-auth
    • AWS signature version 4 signing process for the Python requests module
  • botocore
    • The low-level, core functionality of boto 3 (the official AWS Python SDK)
  • Pygments
    • Python syntax highlighter
  • Colorama
    • Simple cross-platform colored terminal text in Python
  • lxml
    • XML with Python

Alternatives

  • HTTPie
    • an awesome and much more feature rich HTTP CLI that isn't specific to AWS
  • curl
    • a "Swiss army knife" command line tool and library for transferring data with URLs

Warning

This tool is intended for development and educational purposes. It is NOT intended for robust and reliable administration of AWS services. For interaction with production AWS services, it is highly recommended that you use an officially supported tool specifically designed for that purpose such as any of the following:

Contributing

See CONTRIBUTING.md

Change log

See CHANGELOG.md

Licence

Apache 2.0: LICENSE

Authors

Todd Leonhardt created httpaws and these fine people have contributed.

Metadata

Release files for httpaws 0.0.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for httpaws 0.0.4
File Size Uploaded Provenance
httpaws-0.0.4.tar.gz 26.9 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for httpaws 0.0.4
File Interpreter ABI Platform
httpaws-0.0.4-py3-none-any.whl Python 3 none any Details

Total release size: 40.7 kB

Release files / httpaws-0.0.4.tar.gz

Download URL httpaws-0.0.4.tar.gz
Size 26.9 kB
Tags Source
SHA-256 checksum
How to use checksums
5e4c554d7c740a8fecee154c45856fc4f498ef02a92296257785f0f779560f67
BLAKE2b-256 checksum
How to use checksums
af235d55b407075999765e1b862670fde8bc4846f39d6d49d900924796ae130d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.4.2 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/3.7.2

Release files / httpaws-0.0.4-py3-none-any.whl

Download URL httpaws-0.0.4-py3-none-any.whl
Size 13.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
aff58e69c2f6e9b6219d9228dabc60125c97941c4b12ffe256e62fd95d8b79c6
BLAKE2b-256 checksum
How to use checksums
2d01c864a14481f3faadd188b8de737181cbd4984a0c301ee8cc006b6d59630d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.4.2 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/3.7.2

Security for httpaws 0.0.4

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page