- 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.
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.
| Major version | RDS release date | RDS end of standard support | End of Extended Support |
|---|---|---|---|
| PostgreSQL 18 | 14 November 2025 | 28 February 2031 | 28 February 2034 |
| PostgreSQL 17 | 14 November 2024 | 28 February 2030 | 28 February 2033 |
| PostgreSQL 16 | 20 November 2023 | 28 February 2029 | 29 February 2032 |
| PostgreSQL 15 | 27 February 2023 | 29 February 2028 | 28 February 2031 |
| PostgreSQL 14 | 3 February 2022 | 28 February 2027 | 28 February 2030 |
| PostgreSQL 13 | 24 February 2021 | 28 February 2026 (now in Extended Support) | 28 February 2029 |
| PostgreSQL 12 | 31 March 2020 | 28 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:
- Open the RDS console, choose Create database and select PostgreSQL and an engine version.
- 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.
- 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. - 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.
- Under Connectivity, choose the VPC, DB subnet group, public access (No by default) and the VPC security group.
- 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
ReadIOPSmetric 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.
| Item | Rate (USD) | Note |
|---|---|---|
| T4g and T3 CPU credits (Unlimited mode) | 0.075 per vCPU-hour | Charged only when average CPU exceeds the baseline over 24 hours; same in all Regions |
| io1 storage, Single-AZ | 0.125 per GiB-month | From AWS's US East (N. Virginia) Dedicated Log Volume example |
| io1 Provisioned IOPS, Single-AZ | 0.10 per IOPS-month | Same example |
| io1 storage and IOPS, Multi-AZ (one standby) | 0.25 per GiB-month and 0.20 per IOPS-month | Same 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.
| Item | Basis | Estimated per month |
|---|---|---|
| io1 storage | 200 GiB x 0.125 USD | 25.00 USD |
| Provisioned IOPS | 3,000 IOPS x 0.10 USD | 300.00 USD |
| Estimated total | 325.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
- Amazon RDS User Guide: Amazon RDS for PostgreSQL
- RDS for PostgreSQL release calendar
- Amazon RDS User Guide: Creating an Amazon RDS DB instance
- Amazon RDS User Guide: Connecting to a PostgreSQL DB instance
- Amazon RDS User Guide: Using psql to connect
- Amazon RDS User Guide: SSL/TLS with RDS for PostgreSQL
- Amazon RDS User Guide: Supported PostgreSQL extension versions
- Amazon RDS User Guide: Parameter groups
- Amazon RDS User Guide: Upgrades of the RDS for PostgreSQL DB engine
- Amazon RDS User Guide: Storage
- Amazon RDS User Guide: Best practices
- Amazon RDS User Guide: CloudWatch Database Insights
- AWS CLI reference: create-db-instance
- Aurora User Guide: Migrating data to Aurora PostgreSQL
- Amazon RDS for PostgreSQL pricing
- Amazon RDS for SQL Server pricing (Free Tier plans note)
Checked 8 October 2026.
How we research cloud database guides: our editorial method. CodeWithSQL earns nothing from the providers mentioned.