Easy, managed deployments
Amazon RDS for PostgreSQL is designed for developers or businesses who require the full features and capabilities of a PostgreSQL database, or who wish to migrate existing applications and tools that utilize a PostgreSQL database. Since Amazon RDS for PostgreSQL provides you direct access to familiar PostgreSQL database software running on your own Amazon RDS DB Instance, your applications should work seamlessly.
- Pre-configured Parameters – Amazon RDS for PostgreSQL deployments are pre-configured with a sensible set of parameters and settings appropriate for the DB Instance class you have selected. You can simply launch a PostgreSQL Instance and connect your application within minutes without additional configuration. If you desire additional control, you can achieve it via DB Parameter Groups.
- Monitoring and Metrics – Amazon RDS provides Amazon CloudWatch metrics for you DB Instance deployments at no additional charge. You can use the AWS Management Console to view key operational metrics for your DB Instance deployments, including compute/memory/storage capacity utilization, I/O activity, and DB Instance connections.
- DB Event Notifications – Amazon RDS provides Amazon SNS notifications via email or SMS for your DB Instance deployments. You can use the AWS Management Console or the Amazon RDS APIs to subscribe to over 40 different DB events associated with your Amazon RDS deployments.
- Automatic Software Patching – Amazon RDS will make sure that the PostgreSQL software powering your deployment stays up-to-date with the latest patches. You can exert optional control over when and if your DB Instance is patched via DB Engine Version Management.
Fast, predictable storage
- General Purpose (SSD) – Amazon RDS General Purpose (SSD) storage delivers a consistent baseline of 3 IOPS per provisioned GB and provides the ability to burst up to 3,000 IOPS.
You can convert from Magnetic Storage to General Purpose (SSD) storage; you will encounter a short availability impact when doing so.
To learn more and get started with Amazon RDS General Purpose (SSD) Storage, please refer to the General Purpose (SSD) Storage section of the Amazon RDS User Guide.
- Provisioned IOPS (SSD) – You can provision up to 64TB storage and 80,000 IOPS per database instance. Your actual realized IOPS may vary from the amount you provisioned based on your database workload, instance type, and database engine choice. Refer to the Factors That Affect Realized IOPS section of the Amazon RDS User Guide.
You can convert from standard storage to Provisioned IOPS storage and get consistent throughput and low I/O latencies. You will encounter a short availability impact when doing so. You can independently scale IOPS (in increments of 1000) and storage on-the-fly with zero downtime. You can scale the IOPS up or down depending on factors such as seasonal variability of traffic to your applications.
To learn more and get started with Amazon RDS Provisioned IOPS, please refer to the Provisioned IOPS Storage section of the Amazon RDS User Guide.
Backup and recovery
- Automated Backups – Turned on by default, the automated backup feature of Amazon RDS enables point-in-time recovery for your DB Instance. Amazon RDS will backup your database and transaction logs and store both for a user-specified retention period. This allows you to restore your DB Instance to any second during your retention period, up to the last five minutes. Your automatic backup retention period can be configured to up to thirty five days.
- DB Snapshots – DB Snapshots are user-initiated backups of your DB Instance. These full database backups will be stored by Amazon RDS until you explicitly delete them. You can create a new DB Instance from a DB Snapshot whenever you desire. You can also copy DB Snapshots across AWS Regions for geographical migration or disaster recovery use cases.
- DB Instance Class – Using the Amazon RDS APIs or a few clicks of the AWS Management Console, you can scale the compute and memory resources powering your deployment up or down. Scaling operations typically complete within a handful of minutes.
- Storage and IOPS – As your storage requirements grow you can provision additional storage on-the-fly with zero downtime. If you are using RDS Provisioned IOPS, you can also scale the throughput of your DB Instance by specifying the IOPS rate from 1,000 IOPS to 80,000 IOPS in 1,000 IOPS increments and storage from 100 GB and 64TB.
- Multi-AZ Deployments – This deployment option for your production DB Instances enhances database availability while protecting your latest database updates against unplanned outages. When you create or modify your DB Instance to run as a Multi-AZ deployment, Amazon RDS will automatically provision and manage a “standby” replica in a different Availability Zone (independent infrastructure in a physically separate location). Database updates are made concurrently on the primary and standby resources to prevent replication lag. In the event of planned database maintenance, DB Instance failure, or an Availability Zone failure, Amazon RDS will automatically failover to the up-to-date standby so that database operations can resume quickly without administrative intervention. Prior to failover you cannot directly access the standby, and it cannot be used to serve read traffic. Learn more »
- Read Replicas – This replication feature makes it easy to elastically scale out beyond the capacity constraints of a single DB Instance for read-heavy database workloads. You can create one or more replicas of a given source DB Instance within an AWS Region and serve high-volume application read traffic from multiple copies of your data, thereby increasing aggregate read throughput. Amazon RDS uses PostgreSQL’s native replication to propagate changes made to a source DB Instance to any associated Read Replicas. Note that since Read Replicas leverage standard PostgreSQL replication, they may fall behind their source database instances. Learn more »
Isolation and Security
Amazon RDS allows you to encrypt your PostgreSQL databases using keys you manage through AWS Key Management Service (KMS) On a database instance running with Amazon RDS encryption, data stored at rest in the underlying storage is encrypted, as are its automated backups, read replicas, and snapshots.
Using Amazon Virtual Private Cloud (VPC), you can isolate your DB Instances in your own virtual network, and connect to your existing IT infrastructure using industry-standard encrypted IPSec VPN. To learn more about Amazon RDS in VPC, refer to the Amazon RDS User Guide. In addition, using Amazon RDS, you can configure firewall settings and control network access to your DB Instances.
Supported PostgreSQL features
- Full Text Search Dictionaries – PostgreSQL supports Full Text Searching that provides the capability to identify natural-language documents that satisfy a query, and optionally to sort them by relevance to the query. Dictionaries, besides improving search quality, normalization and removal of stop words also improve performance of queries.
- HStore, JSON Data Types – PostgreSQL includes support for ‘JSON’ data type and two JSON functions. These allow return of JSON directly from the database server. PostgreSQL has an extension that implements the ‘hstore’ data type for storing sets of key/value pairs within a single PostgreSQL value.
- pg_stat_statements – The pg_stat_statements extension lets you track execution statistics for all SQL statements executed on the instance, such as userid, exact queries executed, and total time consumed.
- Foreign data wrappers – The postgres_fdw extension lets you access and modify data stored in other PostgreSQL servers as if they were tables within the Amazon RDS for PostgreSQL DB Instance.
- Core PostgreSQL engine features – For a detailed list of PostgreSQL core engine features, please refer here.
Working with Amazon RDS for PostgreSQL
Amazon RDS allows you to use the AWS Management Console or a simple set of web services APIs to create, delete and modify relational database instances (DB Instances). You can also control access and security for your instance(s) and manage your database backups and snapshots. For a full list of the available Amazon RDS APIs, please see the Amazon RDS API Guide. Some of the most commonly used APIs and their functionality are listed below:
- CreateDBInstance — Provision a new DB Instance, specifying DB Engine as PostgreSQL, DB Instance class, storage capacity, DB Engine version (optional), the backup retention policy you wish to use, and whether you want to run the DB Instance as a Multi-AZ deployment. This one API call is all that’s needed to give you access to a running PostgreSQL database, with the software pre-installed and the available resource capacity you request.
- ModifyDBInstance — Modify settings for a running DB Instance. This lets you use a single API call to scale the resources available to your DB Instance in response to the load on your database, or change how it is automatically backed up and maintained on your behalf, or convert your DB Instance to or from a Multi-AZ deployment. You can also use this API to gain optional control over PostgreSQL Version upgrades for your DB Instance – maintain compatibility with specific PostgreSQL versions, test new versions with your application before deploying in production, and perform version upgrades on your own terms and timelines.
- DeleteDBInstance — Delete a running DB Instance. With Amazon RDS, you can terminate your DB Instance at any time and pay only for the resources you used.
- CreateDBSnapshot — Generate a snapshot of your DB Instance. You can restore your DB Instance to these user-created snapshots at any point, even to reinstate a previously deleted DB Instance.
- RestoreDBInstanceToPointInTime — Create a new DB Instance from a point-in-time backup. You can restore to any point within the retention period you specified, usually up to the last five minutes of your database’s usage.
- CreateDBInstanceReadReplica — Create a DB Instance that acts as a read replica of a source DB instance.
Migrating to Amazon RDS for PostgreSQL
If your application already relies on a PostgreSQL database, importing data to Amazon RDS is simple. In general, to migrate your data to Amazon RDS you simply:
- Create a DB Instance with the compute, storage capacity and access controls required.
- Create a dump of the data to be imported using pg_dump.
- Use psql to create a database on the DB Instance and load the dump.
- Update the database connection string in your application config file.
Amazon RDS for PostgreSQL DB Instances running PostgreSQL 9.3.5 and later support the session replication role. You can also import data into your Amazon RDS for PostgreSQL DB Instance with minimal downtime by leveraging this role and using open-source trigger-based replication tools such as Londiste.
For more information on importing data into Amazon RDS, see the Amazon RDS documentation's Importing Data into PostgreSQL section.
Paying for What You Use
You will be charged at the end of each month for the Amazon RDS resources you actually consume. Once a DB Instance you have created is available for connection, you will be charged for each hour your DB Instance is running. Each DB Instance will run until termination, which occurs when you issue an API call to delete the DB Instance, or in the event of an instance failure. Partial DB Instance hours consumed are billed as full hours. In addition to DB Instance hours, you are also billed for your monthly storage, I/O requests, and backups. If you scale your storage capacity within the billing period, your bill will be pro-rated accordingly.
Intended Usage and Restrictions
Your use of this service is subject to the Amazon Web Services Customer Agreement.
Amazon RDS is free to try. Pay only for what you use. There is no minimum fee.
Instantly get access to the AWS Free Tier.
Get started with Amazon RDS for PostgreSQL in the AWS Console.