Skip to content
Guide · AWS

AWS RDS for PostgreSQL: Setup, Pricing & Best Practices

Amazon RDS for PostgreSQL runs community PostgreSQL as a managed service: AWS handles the host, patching, backups and failover, and you work through the console, the CLI and any standard Postgres client. This guide covers the documented setup steps, supported versions, how billing works, and the practices AWS recommends.

Facts checked 8 October 2026 against the providers' official documentation and pricing pages. Next review due January 2027. Cloud services, regions and prices change often; confirm on the provider's site before you buy.
Short answer
  • AWS RDS Postgres is managed community PostgreSQL: AWS's release calendar covers majors 11 to 18, and versions past their end of standard support date (currently 11, 12 and 13) run only under paid RDS Extended Support.
  • You get no SSH or host access; you connect on port 5432 with psql, pgAdmin, DBeaver or any driver, and the instance stays private unless you choose public access.
  • You pay for instance-hours, storage, provisioned IOPS, backups beyond the free allowance and data transfer; old majors also attract RDS Extended Support charges.
  • Major version upgrades are always manual; minor upgrades can be applied automatically during the maintenance window.
  • Choose Aurora PostgreSQL instead when you want shared cluster storage, up to 15 replicas or Serverless v2; AWS documents two migration paths from RDS.
How we know: Research-based: versions, setup options, connection details, defaults and prices were checked against the Amazon RDS User Guide, the RDS for PostgreSQL release calendar, the AWS CLI reference and the Amazon RDS for PostgreSQL pricing page on 8 October 2026. We have not run RDS instances for this guide, so no performance claims are made and the setup steps below are AWS's documented procedure, not a record of our own deployment.

What AWS RDS for PostgreSQL is

AWS RDS for PostgreSQL (often shortened to RDS Postgres or Postgres RDS) is Amazon's managed service for the community PostgreSQL engine. The RDS User Guide says DB instances running PostgreSQL support Multi-AZ deployments, read replicas, Provisioned IOPS, snapshots and point-in-time restore, and run inside a virtual private cloud (VPC).

The trade-off is control. AWS gives no host, Telnet or SSH access and restricts some system procedures and tables. Instead of a true superuser you get the rds_superuser role, and server settings live in parameter groups rather than postgresql.conf.

Supported PostgreSQL versions and support dates

AWS publishes a release calendar with support dates for each major version. After the end of standard support, RDS keeps running a major under RDS Extended Support, charged per vCPU-hour, so plan upgrades before that date.

RDS for PostgreSQL major versions (AWS release calendar, checked 8 October 2026)
Major versionRDS release dateRDS end of standard supportEnd of Extended Support
PostgreSQL 1814 November 202528 February 203128 February 2034
PostgreSQL 1714 November 202428 February 203028 February 2033
PostgreSQL 1620 November 202328 February 202929 February 2032
PostgreSQL 1527 February 202329 February 202828 February 2031
PostgreSQL 143 February 202228 February 202728 February 2030
PostgreSQL 1324 February 202128 February 2026 (now in Extended Support)28 February 2029
PostgreSQL 1231 March 202028 February 2025 (now in Extended Support)29 February 2028

How to set up Amazon RDS for PostgreSQL

AWS documents two console paths. With Easy create you choose only the engine, instance size and DB instance identifier, and RDS applies defaults for everything else. With Easy create turned off you set every option yourself. The documented sequence for a standard create is:

  1. Open the RDS console, choose Create database and select PostgreSQL and an engine version.
  2. Pick the template that matches your use case. AWS notes that the Production template preselects Multi-AZ failover, Provisioned IOPS SSD (io1) storage and deletion protection, which raises the cost of a first test instance.
  3. Set the DB instance identifier and the master username (the default is postgres). AWS lets you have the master password managed in AWS Secrets Manager instead of typing one.
  4. Choose an instance class and storage. AWS documents a gp3 baseline of 3,000 IOPS and 125 MiB/s, rising to 12,000 IOPS and 500 MiB/s from 400 GiB.
  5. Under Connectivity, choose the VPC, DB subnet group, public access (No by default) and the VPC security group.
  6. Optionally attach a custom DB parameter group, set the backup retention and maintenance window, and choose Create database.

The same settings exist in the AWS CLI. A minimal private instance using options from the create-db-instance reference looks like this (identifiers and the security group ID are placeholders):

aws rds create-db-instance --db-instance-identifier app-pg --engine postgres --db-instance-class db.t4g.micro --allocated-storage 20 --storage-type gp3 --master-username postgres --manage-master-user-password --no-publicly-accessible --vpc-security-group-ids sg-0123example

Networking and security groups

AWS calls keeping the database private a best practice, and Easy create sets public access to No, so the instance is reachable only from inside the VPC (an EC2 instance, a container or a VPN). In the instance's VPC security group, add an inbound rule for TCP 5432 whose source is your application's security group or a specific IP range, not 0.0.0.0/0.

In our view, a client that times out (rather than being refused) usually points to networking: a missing inbound rule, a private instance reached from outside the VPC, or a firewall in between. Check those before you look at credentials.

Connecting with psql, pgAdmin or DBeaver

To connect you need the instance endpoint (on the Connectivity & security tab), the port (5432 by default for PostgreSQL), the master username and password, and a database name. If you did not create a database at launch, AWS says you can connect to the default postgres database. The documented psql form is:

psql --host=<DB instance endpoint> --port=5432 --username=<master username> --password --dbname=<database name>

For PostgreSQL 15 and later, the rds.force_ssl parameter defaults to 1, so connections that do not use SSL/TLS are rejected; on 14 and older it defaults to 0. Use the AWS certificate bundle with sslmode=verify-full to verify the server. pgAdmin (used in AWS's walkthrough), DBeaver and DataGrip connect with the same endpoint, port and credentials; see the best PostgreSQL GUI tools.

Parameter groups, extensions and upgrades

Parameter groups. RDS defines default parameter groups, and you create your own custom group to change settings such as rds.force_ssl, work_mem or logging. AWS notes that if you attach a custom group to an instance that is already running, you must reboot it before the instance uses the new group, so create the group before launch.

Extensions. RDS supports a fixed list of extensions per version; run SHOW rds.extensions; in psql to see it. Installing most extensions needs rds_superuser, but since PostgreSQL 13 trusted extensions can be installed by users with the CREATE privilege on the database. An rds_superuser can also restrict what may be installed with the rds.allowed_extensions parameter.

Upgrades. Major version upgrades can break compatibility, so AWS requires you to start them yourself; minor versions can be applied automatically with Auto minor version upgrade. On a Multi-AZ DB instance RDS upgrades primary and standby together, and the database can be unavailable for several minutes during a major upgrade.

RDS Postgres best practices from AWS

From AWS's RDS best-practices page, the guidelines that matter most for PostgreSQL:

  • Monitor memory, CPU, replica lag and storage with CloudWatch alarms, and scale up before you hit capacity limits.
  • Keep the working set in memory. AWS suggests watching the ReadIOPS metric under load; if it drops sharply after moving to a class with more RAM, the working set did not fit before.
  • Enable automatic backups and schedule the backup window for the daily low in write IOPS.
  • Test failover so you know how long it takes, and do not cache DNS for long, because the instance IP changes after failover.
  • Tune the most expensive queries first. CloudWatch Database Insights shows load by wait event, SQL statement, host and user. See our lesson on SQL indexes for the basics.

RDS Postgres or Aurora PostgreSQL?

Aurora PostgreSQL replaces the storage layer with a shared cluster volume, supports up to 15 replicas and offers Serverless v2; RDS for PostgreSQL keeps one instance with its own storage. AWS documents two ways to migrate RDS Postgres to Aurora: restore an RDS snapshot into an Aurora cluster, or create an Aurora read replica of the RDS instance and promote it once replica lag reaches zero.

For a full comparison see Aurora PostgreSQL vs RDS PostgreSQL; for engine choice on RDS see RDS for MySQL vs RDS for PostgreSQL.

Pricing

Prices from the provider's official pricing pages, checked 8 October 2026, region US East (N. Virginia), in USD, excluding tax. List prices only; discounts, commitments and your actual usage change the bill.

The RDS for PostgreSQL pricing page lists these billing dimensions: DB instance-hours by instance class (billed per second with a 10-minute minimum after a billable change), storage per GB-month, Provisioned IOPS per month, backup storage beyond the free allowance, and data transfer. There is no engine licence fee. A stopped instance is billed for its storage and backups but not for instance-hours.

Instance-hour rates differ by class and deployment (Single-AZ, or Multi-AZ with one or two standbys); look up your class on the AWS pricing page or in the AWS Pricing Calculator. Below are the rates AWS states in the page text.

Rates stated on the RDS for PostgreSQL pricing page
ItemRate (USD)Note
T4g and T3 CPU credits (Unlimited mode)0.075 per vCPU-hourCharged only when average CPU exceeds the baseline over 24 hours; same in all Regions
io1 storage, Single-AZ0.125 per GiB-monthFrom AWS's US East (N. Virginia) Dedicated Log Volume example
io1 Provisioned IOPS, Single-AZ0.10 per IOPS-monthSame example
io1 storage and IOPS, Multi-AZ (one standby)0.25 per GiB-month and 0.20 per IOPS-monthSame example; Multi-AZ doubles the storage rates

Estimate: io1 storage for a Single-AZ instance

  • 200 GiB of Provisioned IOPS (io1) storage with 3,000 provisioned IOPS, Single-AZ, US East (N. Virginia).
  • Excludes the instance-hours, backups beyond the free allowance, data transfer and tax.
ItemBasisEstimated per month
io1 storage200 GiB x 0.125 USD25.00 USD
Provisioned IOPS3,000 IOPS x 0.10 USD300.00 USD
Estimated total325.00 USD per month (storage only)

Worked examples are estimates calculated from the list prices above; they are not quotes or measured bills.

Frequently asked questions

What is the default port and user for Amazon RDS Postgres?

AWS documents port 5432 and a default master username of postgres. Both can be changed when you create the instance.

Does AWS upgrade my Postgres RDS major version automatically?

Not during standard support: AWS says major upgrades must be started manually because they can break compatibility. Minor upgrades can be automatic. When a major reaches end of standard support, instances keep running under RDS Extended Support, which is billed per vCPU-hour, unless you upgrade.

How do I migrate RDS Postgres to Aurora Serverless?

AWS documents restoring an RDS for PostgreSQL snapshot into an Aurora PostgreSQL cluster, or creating an Aurora read replica of the RDS instance and promoting it. Once the data is in an Aurora cluster you can add Serverless v2 instances to it. Check that your extensions and version are supported on Aurora first.

Is RDS for PostgreSQL included in the AWS Free Tier?

AWS's pricing page describes a Free Tier offer for new customers that covers 750 hours a month on selected Single-AZ instance classes, 20 GB of General Purpose storage and 20 GB of backup storage. Accounts created after 15 July 2025 instead choose a Free or Paid Plan funded by credits; see the related RDS Free Tier guide.

Sources

Checked 8 October 2026.

How we research cloud database guides: our editorial method. CodeWithSQL earns nothing from the providers mentioned.

Choosing where to run your database?

Start with the section overview, or compare providers side by side.