DuckDB AWS Extension

raw JSON →
1.5.1 verified Fri May 01 auth: no python

Pip-installable DuckDB AWS extension for Amazon S3 and AWS Glue integration. Version 1.5.1 is compatible with DuckDB 1.5.1. Released on a per-DuckDB-version cadence; versions are pinned to the DuckDB minor release.

pip install duckdb-extension-aws==1.5.1
error IO Error: Extension "aws" not found in registry
cause DuckDB auto-loading fails or extension version mismatch. The extension must be explicitly installed.
fix
Run con.install_extension('aws') before con.load_extension('aws'). Ensure duckdb and duckdb-extension-aws versions match.
error ImportError: No module named 'duckdb_extension_aws'
cause The extension is not a Python importable module; it must be loaded via DuckDB.
fix
Use duckdb.load_extension('aws') after connecting, not a Python import.
breaking The extension version must exactly match your DuckDB version (e.g., both 1.5.1). Mismatch causes load failure.
fix Install the exact same version for both duckdb and duckdb-extension-aws.
gotcha The extension must be installed AND loaded separately. install_extension downloads it, load_extension activates it.
fix Always call con.install_extension('aws') then con.load_extension('aws') after connecting.
deprecated Python 3.8 support was dropped in version 1.4.0.
fix Upgrade to Python 3.9+ or stay on duckdb-extension-aws==1.3.2.

Install and load the AWS extension, then query Parquet files on S3.

import duckdb
import os

# Load the AWS extension
con = duckdb.connect()
con.install_extension('aws')
con.load_extension('aws')

# Set AWS credentials (from environment or explicit)
con.execute("SET s3_region='us-east-1'")
# For production, use IAM roles or aws configure

# Query a file from S3
con.execute("SELECT count(*) FROM read_parquet('s3://my-bucket/data/*.parquet')").fetchone()