71+ PostgreSQL Extensions on Amazon Aurora PostgreSQL

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.

Last reviewed: May 29, 2026
71
Supported extensions
1
Pre-enabled
7
Vendor-specific
Supported
Custom extensions
71 extensions
1
pgvector
21.5k+511 30d

vector data type and ivfflat and hnsw access methods

Vector & AI·PostgreSQL·C
2
pg_cron
3.8k+30 30d

Job scheduler for PostgreSQL

Time-series & Temporal·PostgreSQL·C
3
rdkit
3.4k+37 30d

Cheminformatics functionality for PostgreSQL.

Database Features·BSD-3-Clause·C++
4
pg_partman
2.7k+30 30d

Extension to manage partitioned tables by time or ID

Analytics & Columnar·PostgreSQL·C
5
pg_repack
2.2k+13 30d

Reorganize tables in PostgreSQL databases with minimal locks

Administration·BSD-3-Clause·C
6
plv8
2.0k+3 30d

PL/JavaScript (v8) trusted procedural language

Procedural Languages·PostgreSQL·C++
7
hypopg
1.7k+11 30d

Hypothetical indexes for PostgreSQL

Database Features·PostgreSQL·C
8
pgaudit
1.6k+17 30d

provides auditing functionality

Security & Audit·PostgreSQL·C
9
wal2json
1.5k+3 30d

Changing data capture in JSON format

Replication & ETL·BSD-3-Clause·C
10
pgrouting
1.4k+11 30d

pgRouting Extension

Geospatial·GPL-2.0·C++
11
pglogical
1.2k+6 30d

PostgreSQL Logical Replication

Replication & ETL·PostgreSQL·C
12
postgresql-hll
1.2k+4 30d

type for storing hyperloglog data

Database Features·Apache-2.0·C++
13
pgtap
1.1k+4 30d

Unit testing for PostgreSQL

Procedural Languages·PostgreSQL·C
14
pg_hint_plan
900+9 30d

Give PostgreSQL ability to manually force some decisions in execution plans.

Database Features·BSD-3-Clause·C
15
mysql_fdw
5960 30d

Foreign data wrapper for querying a MySQL server

Foreign Data Wrappers·BSD-3-Clause·C
16
oracle_fdw
541+2 30d

foreign data wrapper for Oracle access

Foreign Data Wrappers·PostgreSQL·C
17
orafce
5350 30d

Functions and operators that emulate a subset of functions and packages from the Oracle RDBMS

Compatibility (Oracle/MSSQL)·BSD 0-Clause·C
18
tds_fdw
426+1 30d

Foreign data wrapper for querying a TDS database (Sybase or Microsoft SQL Server)

Foreign Data Wrappers·PostgreSQL·C
19
pg_tle
4050 30d

Trusted Language Extensions for PostgreSQL

Procedural Languages·Apache-2.0·C
20

support similarity queries

Vector & AI·BSD-3-Clause·C
21

aws_s3 postgres extension to import/export data from/to s3

Foreign Data Wrappers·Apache-2.0·SQL
22
ip4r
166+1 30d

IPv4/v6 and IPv4/v6 range index type for PostgreSQL

Data Types·PostgreSQL·C
23
pg_bigm
148+4 30d

create 2-gram (bigram) index for faster full text search.

Full-text Search·PostgreSQL·C
24
plprofiler
1010 30d

server-side support for profiling PL/pgSQL functions

Procedural Languages·Artistic·C
25
pg_proctab
290 30d

Exposes the Linux operating-system process table through SQL so load, memory, CPU, and I/O stats can be queried from PostgreSQL.

Monitoring & Stats·PostgreSQL·C
26

foreign-data wrapper for Postgres log file access

Foreign Data Wrappers·Apache-2.0·C
27
chkpass
20 30d

data type for auto-encrypted passwords

Data Types·PostgreSQL·C
28

functions for verifying relation integrity

Administration·PostgreSQL·C
29

Provides a means for logging execution plans of slow statements automatically

Monitoring & Stats·PostgreSQL·C
30

functions for autoincrementing fields

Functions·PostgreSQL·C
31

bloom access method - signature file based index

Database Features·PostgreSQL·C
32

support for indexing common datatypes in GIN

Functions·PostgreSQL·C
33

support for indexing common datatypes in GiST

Functions·PostgreSQL·C
34

data type for case-insensitive character strings

Data Types·PostgreSQL·C
35

data type for multidimensional cubes

Data Types·PostgreSQL·C
36

connect to other PostgreSQL databases from within a database

Foreign Data Wrappers·PostgreSQL·C
37

text search dictionary template for integers

Functions·PostgreSQL·C
38

text search dictionary template for extended synonym processing

Functions·PostgreSQL·C
39

calculate great-circle distances on the surface of the Earth

Geospatial·PostgreSQL·C
40

determine similarities and distance between strings

Full-text Search·PostgreSQL·C
41

data type for storing sets of (key, value) pairs

Data Types·PostgreSQL·C
42

functions for tracking who changed a table

Functions·PostgreSQL·C
43

integer aggregator and enumerator (obsolete)

Functions·PostgreSQL·C
44

functions, operators, and index support for 1-D arrays of integers

Functions·PostgreSQL·C
45

data types for international product numbering standards

Data Types·PostgreSQL·C
46

Large Object maintenance

Administration·PostgreSQL·C
47

data type for hierarchical tree-like structures

Data Types·PostgreSQL·C
48

functions for tracking last modification time

Functions·PostgreSQL·C
49

examine the shared buffer cache

Monitoring & Stats·PostgreSQL·C
50

examine the free space map (FSM)

Monitoring & Stats·PostgreSQL·C
51

prewarm relation data

Administration·PostgreSQL·C
52

track planning and execution statistics of all SQL statements executed

Monitoring & Stats·PostgreSQL·C
53

text similarity measurement and index searching based on trigrams

Full-text Search·PostgreSQL·C
54

examine the visibility map (VM) and page-level visibility info

Monitoring & Stats·PostgreSQL·C
55

cryptographic functions

Security & Audit·PostgreSQL·C
56

show row-level locking information

Monitoring & Stats·PostgreSQL·C
57

show tuple-level statistics

Monitoring & Stats·PostgreSQL·C
58

PL/Perl procedural language

Procedural Languages·PostgreSQL·C
59
Pre-enabled

PL/pgSQL procedural language

Procedural Languages·PostgreSQL·C
60

PL/Tcl procedural language

Procedural Languages·PostgreSQL·C
61

PostGIS geometry and geography spatial types and functions

Geospatial·GPL-2.0·C
62

foreign-data wrapper for remote PostgreSQL servers

Foreign Data Wrappers·PostgreSQL·C
63

functions for implementing referential integrity (obsolete)

Functions·PostgreSQL·C
64

data type for representing line segments or floating-point intervals

Data Types·PostgreSQL·C
65

information about SSL certificates

Monitoring & Stats·PostgreSQL·C
66

functions that manipulate whole tables, including crosstab

Analytics & Columnar·PostgreSQL·C
67

Triggered change notifications

Functions·PostgreSQL·C
68

TABLESAMPLE method which accepts number of rows as a limit

Functions·PostgreSQL·C
69

TABLESAMPLE method which accepts time in milliseconds as a limit

Functions·PostgreSQL·C
70

text search dictionary that removes accents

Functions·PostgreSQL·C
71

generate universally unique identifiers (UUIDs)

Functions·PostgreSQL·C

How to enable extensions on Amazon Aurora PostgreSQL

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.

SQL

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;

CLI

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 parameter

Infrastructure as Code

Terraform 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;

Pre-enabled on Amazon Aurora PostgreSQL

These extensions ship enabled by default — no CREATE EXTENSION needed.

Amazon Aurora PostgreSQL-specific extensions

Proprietary extensions that exist only on Amazon Aurora PostgreSQL, not part of the open-source PostgreSQL ecosystem.

apg_plan_mgmt

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.

Docs
aurora_stat_utils

Aurora-only functions exposing additional cluster and instance statistics beyond core Postgres views. Aurora-specific, not on plain RDS.

Docs
pg_columnmask

Aurora-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.

Docs
aws_ml

Call Amazon SageMaker, Amazon Comprehend, and Amazon Bedrock models directly from SQL for inference, sentiment analysis, and generative AI. Shared with plain RDS.

Docs
aws_s3

Import data from and export query results to Amazon S3 directly from SQL (pulls in aws_commons via CASCADE). Shared with plain RDS.

Docs
aws_lambda

Invoke AWS Lambda functions from SQL — fan out to event-driven workflows or external services from triggers and stored procedures. Shared with plain RDS.

Docs
pg_tle

Trusted Language Extensions framework for installing customer-authored extensions in trusted languages without superuser or native C. Shared with plain RDS.

Docs

Notable absences

Extensions you might expect that aren't available on Amazon Aurora PostgreSQL, with workarounds where they exist.

timescaledb

Why 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.

citus

Why 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.

Can you install custom extensions on Amazon Aurora PostgreSQL?

Yes, with caveats

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.

Learn more

Frequently Asked Questions

How is extension support different on Aurora vs RDS?
Aurora PostgreSQL maintains its own extension allow-list and release notes, separate from plain Amazon RDS for PostgreSQL — they overlap heavily but are not identical. Aurora adds Aurora-only extensions such as apg_plan_mgmt, aurora_stat_utils, pg_columnmask, and pg_ad_mapping, while sharing aws_s3, aws_lambda, aws_ml, and pg_tle with RDS. The other key difference: library-backed extensions are enabled through a DB *cluster* parameter group on Aurora, versus an instance-level parameter group on RDS.
How do I enable pg_cron on Aurora?
pg_cron is library-backed, so a plain CREATE EXTENSION isn't enough. Create a custom DB cluster parameter group, add pg_cron to shared_preload_libraries (the default group preloads only pg_stat_statements), attach the group to your cluster, and reboot the writer instance. After the reboot, connect to the cluster and run CREATE EXTENSION pg_cron;, then schedule jobs with cron.schedule().
Does Aurora support timescaledb and pgvector?
pgvector is supported on Aurora PostgreSQL (Aurora often ships newer versions ahead of plain RDS) — enable it with CREATE EXTENSION vector;. timescaledb is NOT supported on Aurora and can't be installed. For time-series workloads, use native partitioning with pg_partman, or run TimescaleDB on Timescale Cloud or a self-managed instance.
Can I install custom extensions on Aurora?
Yes, through pg_tle (Trusted Language Extensions), available since Aurora PostgreSQL 14.5. You can author and install your own extensions in trusted languages — JavaScript, Perl, Tcl, PL/pgSQL, and SQL — without superuser access, running in a sandbox that protects the cluster. Native compiled C extensions cannot be installed, and the rds.allowed_extensions parameter can further restrict which extensions are installable.
What is apg_plan_mgmt on Aurora?
apg_plan_mgmt is Aurora's query plan management extension, available only on Aurora PostgreSQL (not plain RDS). It lets you capture execution plans, mark approved plans, and force the planner to use only those approved plans — guarding against plan regressions after data growth, statistics changes, or engine upgrades. You manage captured plans through functions in the apg_plan_mgmt schema.

Manage your Amazon Aurora PostgreSQL database with 1bench

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