Amazon Aurora PostgreSQL is AWS's cloud-native, distributed Postgres — it supports pgvector, postgis, pg_cron and more, with most extensions enabled through a DB cluster parameter group plus CREATE EXTENSION.
vector data type and ivfflat and hnsw access methods
Job scheduler for PostgreSQL
Cheminformatics functionality for PostgreSQL.
Extension to manage partitioned tables by time or ID
Extension to manage partitioned tables by time or ID
Reorganize tables in PostgreSQL databases with minimal locks
Reorganize tables in PostgreSQL databases with minimal locks
PL/JavaScript (v8) trusted procedural language
Hypothetical indexes for PostgreSQL
provides auditing functionality
Changing data capture in JSON format
PostgreSQL Logical Replication
type for storing hyperloglog data
Give PostgreSQL ability to manually force some decisions in execution plans.
Give PostgreSQL ability to manually force some decisions in execution plans.
Foreign data wrapper for querying a MySQL server
Foreign data wrapper for querying a MySQL server
foreign data wrapper for Oracle access
Functions and operators that emulate a subset of functions and packages from the Oracle RDBMS
Functions and operators that emulate a subset of functions and packages from the Oracle RDBMS
Foreign data wrapper for querying a TDS database (Sybase or Microsoft SQL Server)
Foreign data wrapper for querying a TDS database (Sybase or Microsoft SQL Server)
Trusted Language Extensions for PostgreSQL
aws_s3 postgres extension to import/export data from/to s3
aws_s3 postgres extension to import/export data from/to s3
IPv4/v6 and IPv4/v6 range index type for PostgreSQL
create 2-gram (bigram) index for faster full text search.
create 2-gram (bigram) index for faster full text search.
server-side support for profiling PL/pgSQL functions
server-side support for profiling PL/pgSQL functions
Exposes the Linux operating-system process table through SQL so load, memory, CPU, and I/O stats can be queried from PostgreSQL.
Exposes the Linux operating-system process table through SQL so load, memory, CPU, and I/O stats can be queried from PostgreSQL.
foreign-data wrapper for Postgres log file access
foreign-data wrapper for Postgres log file access
Provides a means for logging execution plans of slow statements automatically
Provides a means for logging execution plans of slow statements automatically
bloom access method - signature file based index
support for indexing common datatypes in GIN
support for indexing common datatypes in GiST
data type for case-insensitive character strings
connect to other PostgreSQL databases from within a database
connect to other PostgreSQL databases from within a database
text search dictionary template for integers
text search dictionary template for extended synonym processing
calculate great-circle distances on the surface of the Earth
determine similarities and distance between strings
data type for storing sets of (key, value) pairs
functions for tracking who changed a table
functions, operators, and index support for 1-D arrays of integers
data types for international product numbering standards
data type for hierarchical tree-like structures
functions for tracking last modification time
examine the free space map (FSM)
track planning and execution statistics of all SQL statements executed
track planning and execution statistics of all SQL statements executed
text similarity measurement and index searching based on trigrams
text similarity measurement and index searching based on trigrams
examine the visibility map (VM) and page-level visibility info
examine the visibility map (VM) and page-level visibility info
PL/pgSQL procedural language
PostGIS geometry and geography spatial types and functions
foreign-data wrapper for remote PostgreSQL servers
functions for implementing referential integrity (obsolete)
data type for representing line segments or floating-point intervals
functions that manipulate whole tables, including crosstab
functions that manipulate whole tables, including crosstab
TABLESAMPLE method which accepts number of rows as a limit
TABLESAMPLE method which accepts time in milliseconds as a limit
TABLESAMPLE method which accepts time in milliseconds as a limit
text search dictionary that removes accents
generate universally unique identifiers (UUIDs)
Aurora has no dashboard toggle for extensions. Pure-SQL extensions just need CREATE EXTENSION, but anything that ships as a shared library (pg_cron, pg_partman's background worker, pg_stat_statements) must first be added to shared_preload_libraries in a custom DB *cluster* parameter group — note this is a cluster-level group, distinct from the instance-level parameter groups used by plain RDS. Aurora's default cluster parameter group preloads only pg_stat_statements, so you usually need a custom group, a writer reboot, then CREATE EXTENSION.
Run as the cluster's master user. Pure-SQL extensions need no preload; aws_s3 pulls in aws_commons via CASCADE.
-- Pure-SQL extension (no preload required)
CREATE EXTENSION IF NOT EXISTS vector;
-- aws_s3 depends on aws_commons — CASCADE installs both
CREATE EXTENSION aws_s3 CASCADE;
-- Library-backed extensions (e.g. pg_cron) require the library to be in
-- shared_preload_libraries first (see the cluster-parameter-group steps below)
CREATE EXTENSION pg_cron;
-- Verify
SELECT extname, extversion FROM pg_extension;Library-backed extensions need a custom DB CLUSTER parameter group. Create one, set shared_preload_libraries, attach it to the cluster, then reboot the writer instance. (AWS does not publish a verbatim copy-paste recipe; this is the cluster-parameter mechanism — adjust names/family to your cluster.)
# 1. Create a custom DB CLUSTER parameter group (cluster-level, not instance-level)
aws rds create-db-cluster-parameter-group \
--db-cluster-parameter-group-name aurora-pg-ext \
--db-parameter-group-family aurora-postgresql17 \
--description "Aurora PG with preloaded extension libraries"
# 2. Set shared_preload_libraries (the default group preloads only pg_stat_statements)
aws rds modify-db-cluster-parameter-group \
--db-cluster-parameter-group-name aurora-pg-ext \
--parameters "ParameterName=shared_preload_libraries,ParameterValue='pg_stat_statements,pg_cron',ApplyMethod=pending-reboot"
# 3. Attach the group to the cluster
aws rds modify-db-cluster \
--db-cluster-identifier my-aurora-cluster \
--db-cluster-parameter-group-name aurora-pg-ext \
--apply-immediately
# 4. Reboot the WRITER instance to load the libraries, then connect and run CREATE EXTENSION
aws rds reboot-db-instance --db-instance-identifier my-aurora-writer
# Optional: restrict the installable set with the rds.allowed_extensions allow-list parameterTerraform uses aws_rds_cluster_parameter_group (the cluster-level group). Set shared_preload_libraries, attach it to the cluster, reboot the writer, then run CREATE EXTENSION in a migration.
resource "aws_rds_cluster_parameter_group" "aurora_pg_ext" {
name = "aurora-pg-ext"
family = "aurora-postgresql17"
description = "Aurora PG with preloaded extension libraries"
# Default cluster group preloads only pg_stat_statements — add libraries here
parameter {
name = "shared_preload_libraries"
value = "pg_stat_statements,pg_cron"
apply_method = "pending-reboot"
}
# Optionally restrict which extensions can be created
parameter {
name = "rds.allowed_extensions"
value = "pg_cron,vector,postgis,aws_s3,aws_commons"
}
}
resource "aws_rds_cluster" "this" {
cluster_identifier = "my-aurora-cluster"
engine = "aurora-postgresql"
db_cluster_parameter_group_name = aws_rds_cluster_parameter_group.aurora_pg_ext.name
# ...other cluster config...
}
# After apply, reboot the writer instance, then run CREATE EXTENSION pg_cron;These extensions ship enabled by default — no CREATE EXTENSION needed.
Proprietary extensions that exist only on Amazon Aurora PostgreSQL, not part of the open-source PostgreSQL ecosystem.
Aurora-only query plan management — capture, evaluate, and lock the execution plans the planner is allowed to use, to prevent plan regressions. Not available on plain RDS.
DocsAurora-only functions exposing additional cluster and instance statistics beyond core Postgres views. Aurora-specific, not on plain RDS.
DocsAurora-only dynamic data masking (launched November 2025) — define masking policies on columns so sensitive values are redacted at query time based on role. Not available on plain RDS.
DocsCall Amazon SageMaker, Amazon Comprehend, and Amazon Bedrock models directly from SQL for inference, sentiment analysis, and generative AI. Shared with plain RDS.
DocsImport data from and export query results to Amazon S3 directly from SQL (pulls in aws_commons via CASCADE). Shared with plain RDS.
DocsInvoke AWS Lambda functions from SQL — fan out to event-driven workflows or external services from triggers and stored procedures. Shared with plain RDS.
DocsTrusted Language Extensions framework for installing customer-authored extensions in trusted languages without superuser or native C. Shared with plain RDS.
DocsExtensions you might expect that aren't available on Amazon Aurora PostgreSQL, with workarounds where they exist.
timescaledbWhy missing: timescaledb is not on Aurora PostgreSQL's allow-list — AWS has never shipped it on Aurora, and it can't be installed via CREATE EXTENSION.
Alternative: Use native Postgres partitioning with pg_partman (supported on Aurora) for time-series workloads, or run TimescaleDB on Timescale Cloud or a self-managed instance.
citusWhy missing: citus (distributed/sharded Postgres) is not supported on Aurora. Aurora has its own storage-layer scaling model and does not expose the Citus coordinator/worker topology.
Alternative: For horizontal sharding, run Citus self-managed or use Azure Cosmos DB for PostgreSQL (managed Citus). For read scaling, Aurora's read replicas often suffice.
Aurora PostgreSQL supports customer-authored extensions through pg_tle (Trusted Language Extensions), available since Aurora PostgreSQL 14.5. You can write extensions in trusted procedural languages — JavaScript (PL/v8), Perl, Tcl, PL/pgSQL, and SQL — package them, and install them without superuser access; the runtime is sandboxed, so a faulty extension can't crash or compromise the cluster. Native C extensions are NOT installable by customers, and the set of installable extensions can be further restricted by the rds.allowed_extensions cluster parameter.
1bench is a modern GUI client for PostgreSQL — connect to your Amazon Aurora PostgreSQL instance, install extensions, write queries, and inspect schemas without leaving the IDE.
Try 1bench for PostgreSQL