Skip to main content

A Harlequin adapter for Amazon Athena.

Project description

harlequin-athena

This repo provides the Harlequin adapter for Amazon Athena.

Installation

harlequin-athena depends on harlequin, so installing this package will also install Harlequin.

Using pip

To install this adapter into an activated virtual environment:

pip install harlequin-athena

Using poetry

poetry add harlequin-athena

Using pipx

If you do not already have Harlequin installed:

pip install harlequin-athena

If you would like to add the Athena adapter to an existing Harlequin installation:

pipx inject harlequin harlequin-athena

As an Extra

Alternatively, you can install Harlequin with the athena extra:

pip install harlequin[athena]
poetry add harlequin[athena]
pipx install harlequin[athena]

Usage and Configuration

For a minimum connection you are going to need:

  • s3_staging_dir (required): S3 bucket path for query results
  • region (optional, default: us-east-1): AWS region
harlequin -a athena -s s3://my-bucket/athena-results/ -r us-east-1

Environment Variables

Adapter-specific options can be configured via environment variables. Environment variables are used as fallbacks when CLI options are not provided. The environment variable names follow the pattern HARLEQUIN_ATHENA_<OPTION_NAME> (uppercase with underscores):

  • HARLEQUIN_ATHENA_S3_STAGING_DIR: S3 staging directory (required)
  • HARLEQUIN_ATHENA_WORK_GROUP: Athena work group
  • HARLEQUIN_ATHENA_SCHEMA: Default schema (database)
  • HARLEQUIN_ATHENA_CATALOG: Catalog name
  • HARLEQUIN_ATHENA_POLL_INTERVAL: Polling interval in seconds

Note: AWS credentials and region can be configured using standard AWS SDK environment variables (automatically handled by boto3/pyathena):

  • AWS_ACCESS_KEY_ID: AWS access key ID
  • AWS_SECRET_ACCESS_KEY: AWS secret access key
  • AWS_SESSION_TOKEN: AWS session token (for temporary credentials)
  • AWS_REGION or AWS_DEFAULT_REGION: AWS region
  • AWS_PROFILE: AWS profile name

Example using environment variables:

# Standard AWS SDK environment variables
export AWS_REGION="us-east-1"
export AWS_PROFILE="my-profile"

# Adapter-specific environment variables
export HARLEQUIN_ATHENA_S3_STAGING_DIR="s3://my-bucket/athena-results/"
export HARLEQUIN_ATHENA_WORK_GROUP="my-workgroup"

harlequin -a athena

AWS Credentials

The adapter supports multiple methods for AWS authentication:

  1. Default credentials (environment variables, ~/.aws/credentials, or IAM role):

    harlequin -a athena -s s3://my-bucket/athena-results/
    
  2. AWS Profile:

    harlequin -a athena -s s3://my-bucket/athena-results/ --profile my-profile
    
  3. Explicit credentials:

    harlequin -a athena -s s3://my-bucket/athena-results/ \
      --aws-access-key-id AKIA... \
      --aws-secret-access-key ...
    

Additional Options

  • --work-group or -w: Athena work group to use
  • --schema or -d or --database: Default schema (database) to use
  • --catalog or -c: Catalog name (default: AwsDataCatalog)
  • --poll-interval: Polling interval in seconds for checking query status (default: 0.5, lower = faster polling)

Example with all options:

harlequin -a athena \
  -s s3://my-bucket/athena-results/ \
  -r us-east-1 \
  -w my-workgroup \
  -d my_database \
  -c AwsDataCatalog

Many more options are available; to see the full list, run:

harlequin --help

For more information, see the Harlequin Docs.

Development

Setup

git clone https://github.com/yourusername/harlequin-athena.git
cd harlequin-athena
poetry install

Running Tests

poetry run pytest

Note: Tests require AWS credentials and an Athena setup. You may want to use mocking for CI/CD.

License

MIT

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

harlequin_athena-0.1.2.tar.gz (18.9 kB view details)

Uploaded Source

Built Distribution

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

harlequin_athena-0.1.2-py3-none-any.whl (19.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: harlequin_athena-0.1.2.tar.gz
  • Upload date:
  • Size: 18.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for harlequin_athena-0.1.2.tar.gz
Algorithm Hash digest
SHA256 6af30db9c5659b989b6d59141c48cac599287b9e2f90079f34f1b6998aa01208
MD5 61ac3690916159fc0c3cd75859b301ea
BLAKE2b-256 30e0ebbd2b99530a8e39945da55241a7c9e50507ae5085eb807a95836dd5ff02

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for harlequin_athena-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 2670f92ce402ae7a71d07c087835e5be8d309229f3cb39314aa6808a00e7c825
MD5 7cb44865eebf20b0eabb90ee3150d077
BLAKE2b-256 885878b5d0031e3e33d8a79814293fe49fc31e9f977c95ee4d2c4564dfb50358

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