This module creates an Amazon Relational Database Service (RDS) cluster that can run MySQL, Postgres, MariaDB, Oracle,
or SQL Server. The cluster is managed by AWS and automatically handles standby failover, read replicas, backups,
patching, and encryption.
About RDS
Amazon Relational Database Service (Amazon RDS) is a web service that makes it easier to set up, operate, and scale a
relational database in the AWS Cloud. It provides cost-efficient, resizable capacity for an industry-standard relational
database and manages common database administration tasks. Refer to
the What is Amazon RDS page for more information.
Common Gotcha's
All RDS upgrades (version upgrades, instance type upgrades, etc.) require a few minutes of scheduled downtime.
If an RDS instance that uses Multi-AZ fails, Amazon will automatically kick off a fail-over, but you will still
experience about 3 - 5 minutes of downtime.
Based on the above, make sure you've written your app to gracefully handle database downtime.
An RDS instance that runs out of disk space will stop working, so be sure to monitor and set an alert on the
FreeStorageSpace CloudWatch Metric. Consider monitoring other RDS CloudWatch Metrics as well.
How do you scale this database?
Storage: Use the allocated_storage variable.
Vertical scaling: To scale vertically (i.e. bigger DB instances with more CPU and RAM), use the instance_type,
storage_type, and iops input variables. For a list of AWS RDS server types, see DB Instance
Class
Horizontal scaling: To scale horizontally, you can add more replicas using the num_read_replicas input variable,
and RDS will automatically deploy the new instances, begin asynchronous replication, and make them available as read
replicas. For more info, see Working with PostgreSQL, MySQL, and MariaDB Read
Replicas.
Storage performance: N.B: only available when var.storage_type is set to gp3. When you are using gp3, you
can
optionally fine-tune storage performance characteristics via the storage_throughput variable. See
the RDS User Guide for
more information.
Primary endpoint: The endpoint for the primary DB. You should always use this URL for writes, as it points to
the primary.
Read replica endpoints: A comma-separated list of read replica URLs.
Port: The port to use to connect to the endpoints above.
You can programmatically extract these variables in your Terraform templates and pass them to other resources (e.g.
pass them to User Data in your EC2 instances). You'll also see the variables at the end of each terraform apply call
or if you run terraform output.
Note that the database is likely behind a Bastion Host, so you may need to first connect to the Bastion Host (or use SSH
Tunneling) before you can connect to the database.
How do you use this module?
See the root README for instructions on using Terraform modules.
See the variables.tf for all the variables you can set on this module.
See the examples folder for different types of relational database usages:
Before making any deployment for the RDS database, start by backing up the database and taking a snapshot of the infrastructure state. Review the release notes for any breaking changes and new features. Update the infrastructure code by modifying the Terraform configurations and testing them in a non-production environment. Conduct post-upgrade testing to ensure application functionality and performance, while monitoring the database health. Communicate the potential downtime to relevant stakeholders and involve them in the process.
Minor version upgrades
RDS supports automatically installing minor version upgrades. For example, it can automatically update a MySQL database from version 5.7.10 to 5.7.11. To enable this functionality, follow these steps:
Set the auto_minor_version_upgrade parameter to true.
Set the engine_version parameter to MAJOR.MINOR and omit the PATCH number.
Major Version Upgrade
RDS supports automatically installing major version upgrades. To enable this functionality, follow these steps:
Set the allow_major_version_upgrade parameter to true.
Set the engine_version parameter to MAJOR.MINOR and omit the PATCH number.
Note: consider temporarily setting parameter and option group variables to engine defaults during the major version upgrade process. This step is important to prevent upgrade failures that might occur due to custom configurations not being compatible with the new version. By reverting these configurations to default settings temporarily, you minimize the risk of incompatibility issues during the upgrade process. After the upgrade is successfully completed, these configurations can be reverted back to their custom values, ensuring that your database operates with the desired settings while being compatible with the upgraded version.
Note: A minimal downtime is expected during a major version upgrade. Make sure to communicate the potential downtime to relevant stakeholders in advance.
Blue/Green Deployment for Low-Downtime Updates
By default, RDS updates DB Instances in-place, which can cause service interruptions. Low-downtime updates minimize interruptions by using an RDS Blue/Green deployment. To enable this, set the enable_blue_green_update variable to true.
Note that low-downtime updates are only supported for MySQL, MariaDB, and Postgresql, and backups must be enabled. When using terraform, the Blue/Green Deployment won't finish until the Green instances become the new instance and the Blue instance is deleted. Therefore, Blue/Green Deployment cannot be used for scenarios outside of terraform's resource update, such as manual testing of the Green deployment or reverting back to the Blue deployment.
Standby Deployment
Set multi_az=true. When setting up a multi-AZ (Availability Zone) RDS deployment in AWS, both the primary and standby RDS instances are created in different Availability Zones for high availability. However, this doesn't mean they will have different endpoints. Both instances will have the same DNS endpoint, and AWS's internal infrastructure will handle the failover process transparently for you. AWS RDS provides automatic failover support for DB instances using Multi-AZ deployments for the supported database engines. Failover is automatically handled by RDS without any manual intervention.
Questions? Ask away.
We're here to talk about our services, answer any questions, give advice, or just to chat.
{"treedata":{"name":"root","toggled":true,"children":[{"name":".circleci","children":[{"name":"config.yml","path":".circleci/config.yml","sha":"586f9df70ec336f7d23b9b44948311d8a715acf1"},{"name":"post-upgrade-test-results.sh","path":".circleci/post-upgrade-test-results.sh","sha":"a4867e8fbdc334b7a90259568ee41ea577fbe764"},{"name":"set-upgrade-test-vars.sh","path":".circleci/set-upgrade-test-vars.sh","sha":"565ffc314a6c523d3d57dc5f36781bd53b0027c8"}]},{"name":".github","children":[{"name":"ISSUE_TEMPLATE","children":[{"name":"bug_report.md","path":".github/ISSUE_TEMPLATE/bug_report.md","sha":"d2e87e27c601e423865ed660ec697082470ca60f"},{"name":"feature_request.md","path":".github/ISSUE_TEMPLATE/feature_request.md","sha":"023a33099be2336476930c96e17ff1ba5dc55348"}]},{"name":"pull_request_template.md","path":".github/pull_request_template.md","sha":"6b100e40e323b5b07f40ed30616277c51c9f4b9e"}]},{"name":".gitignore","path":".gitignore","sha":"b647d70b39746f8ebc58bdb81766f30296fa1297"},{"name":".pre-commit-config.yaml","path":".pre-commit-config.yaml","sha":"d7a7dd3d641e0c3fabb4ab45a0976c0fa0b93fc0"},{"name":"CODEOWNERS","path":"CODEOWNERS","sha":"8bb8d5fb2b9820e3c86d6680ba717bb889255ab7"},{"name":"LICENSE.txt","path":"LICENSE.txt","sha":"b64f3d12153e88d892a7471c2c0254db4a072e34"},{"name":"README.adoc","path":"README.adoc","sha":"1737652cf1b9c4bee32f790eb2bcb28e8f221123"},{"name":"_docs","children":[{"name":"aurora-serverless.png","path":"_docs/aurora-serverless.png","sha":"5a53145be56705c76f7f7aa6a25aa0ddee78e4a3"},{"name":"aurora.png","path":"_docs/aurora.png","sha":"fc218831bfa34097a56f1b0e47fe05521bdb4a8a"},{"name":"backup-architecture.png","path":"_docs/backup-architecture.png","sha":"61b138cd6ad58c7a37fa1b37fef43c44a371a97c"},{"name":"data-backup-architecture.png","path":"_docs/data-backup-architecture.png","sha":"fcc7ce8753e28c19af87ea5cea96e6ded648d429"},{"name":"data-backup.png","path":"_docs/data-backup.png","sha":"116b10f231073f8c52255ca98e48cc228c48a2c3"},{"name":"mariadb.png","path":"_docs/mariadb.png","sha":"d540d3d3ff8797c4a4c3a62c65e7d3f63621568f"},{"name":"mysql.png","path":"_docs/mysql.png","sha":"73b55bd0d517dcba53c878712544abf96be3a66e"},{"name":"oracle.png","path":"_docs/oracle.png","sha":"b5f1ca801f5af4a30f1b812eea17cec516c1fe6c"},{"name":"postgresql.png","path":"_docs/postgresql.png","sha":"fd9c7ec282aef38a5813e8542d92227b96bd5be8"},{"name":"rds-architecture.png","path":"_docs/rds-architecture.png","sha":"8f2b1b5b4015a5777032c6aa64627ceee24330fc"},{"name":"redshift-architecture.png","path":"_docs/redshift-architecture.png","sha":"0ebffc1b1fbecdb0335a09c6bf7fe7c5f073d16e"},{"name":"redshift-icon.png","path":"_docs/redshift-icon.png","sha":"add0f05edb29726e62c784edf428eef60aed4d5f"},{"name":"sqlserver.png","path":"_docs/sqlserver.png","sha":"a800d188398262593f4f89f27c8f3ce2ce1e76a4"}]},{"name":"examples","children":[{"name":"aurora-global-cluster","children":[{"name":"README.md","path":"examples/aurora-global-cluster/README.md","sha":"5dcc5d206605d4e4a55bd1eed3137d589e1e025c"},{"name":"main.tf","path":"examples/aurora-global-cluster/main.tf","sha":"1ff9e9f72c42354d14e5afc167ce8a1e118b8bb6"},{"name":"outputs.tf","path":"examples/aurora-global-cluster/outputs.tf","sha":"ad1a6164878d086b7aba2e2d6dcece92b57db2e6"},{"name":"variables.tf","path":"examples/aurora-global-cluster/variables.tf","sha":"cbcd024d653ff7c04d1984209dd3114799d21b9a"}]},{"name":"aurora-managed-password","children":[{"name":"README.md","path":"examples/aurora-managed-password/README.md","sha":"73e4467497f792bfed61ffad3b0620fddabf6f18"},{"name":"main.tf","path":"examples/aurora-managed-password/main.tf","sha":"71d6954ab5ed568b23887224f833c964ca4a9ca5"},{"name":"outputs.tf","path":"examples/aurora-managed-password/outputs.tf","sha":"bfd599b111da577b696ef038c80466290644b890"},{"name":"variables.tf","path":"examples/aurora-managed-password/variables.tf","sha":"e0b6ba39f7d9b5c655da018564b3071d266722b1"}]},{"name":"aurora-serverless-v2","children":[{"name":"README.md","path":"examples/aurora-serverless-v2/README.md","sha":"dfe32720e88f7f30a54ef676b00806caabb8bf6d"},{"name":"main.tf","path":"examples/aurora-serverless-v2/main.tf","sha":"a7363978137c870d6b7642a76264db547a9e9c9c"},{"name":"outputs.tf","path":"examples/aurora-serverless-v2/outputs.tf","sha":"6a1d215eb6ada03646e810f7ef68802fad057bad"},{"name":"variables.tf","path":"examples/aurora-serverless-v2/variables.tf","sha":"88ef2e9f1c7bfcc77de324e1c426e6003d20f7a0"}]},{"name":"aurora-serverless","children":[{"name":"README.md","path":"examples/aurora-serverless/README.md","sha":"24a714baec84945056b7d3280952c446f5bd4506"},{"name":"main.tf","path":"examples/aurora-serverless/main.tf","sha":"661fddbd50f9c0fddb5e12cc0c2b1b606a13cba6"},{"name":"outputs.tf","path":"examples/aurora-serverless/outputs.tf","sha":"7da44a91e9ac6e14a5c7c144c60c5ad0ceb5ce1b"},{"name":"variables.tf","path":"examples/aurora-serverless/variables.tf","sha":"dfc3278b1b6dadc9a223bd22c21aca590ad025c0"}]},{"name":"aurora-with-cross-region-replica","children":[{"name":"README.md","path":"examples/aurora-with-cross-region-replica/README.md","sha":"fc875ed3aae9bdfb2eb361e6d6ea11d10373f22a"},{"name":"main.tf","path":"examples/aurora-with-cross-region-replica/main.tf","sha":"a0e10371e24432ae033c732b42404aff5b9651c1"},{"name":"outputs.tf","path":"examples/aurora-with-cross-region-replica/outputs.tf","sha":"58a3862180d107c3d0501ec9b289b08ed09af3a8"},{"name":"variables.tf","path":"examples/aurora-with-cross-region-replica/variables.tf","sha":"a398fd9c476c4fdf761c89cccc10cc5241576365"}]},{"name":"aurora","children":[{"name":"README.md","path":"examples/aurora/README.md","sha":"2074c75377de7708369a003aa74ba9cd78fcf56f"},{"name":"main.tf","path":"examples/aurora/main.tf","sha":"c02839ae8053039a9691ed00d72d1c3e0fa5fc48"},{"name":"outputs.tf","path":"examples/aurora/outputs.tf","sha":"14ed19ce89fa6a6fd9037ed745ee9f43a47ca92e"},{"name":"variables.tf","path":"examples/aurora/variables.tf","sha":"0653be491dbe2132fb18fd0828c68167b340d237"}]},{"name":"default-vault-plan-and-selection","children":[{"name":"README.md","path":"examples/default-vault-plan-and-selection/README.md","sha":"654dff28a302481e32e4a9985afd6fced0d55d7e"},{"name":"main.tf","path":"examples/default-vault-plan-and-selection/main.tf","sha":"1171e2dff7612c2620ce481b5d3880a42adcb662"},{"name":"variables.tf","path":"examples/default-vault-plan-and-selection/variables.tf","sha":"b41526930c798d19c4dd3d744a3ffcce4538535d"}]},{"name":"dms-aurora","children":[{"name":"README.md","path":"examples/dms-aurora/README.md","sha":"469673f6ff48881e6f30b88ac45b29918850f10d"},{"name":"main.tf","path":"examples/dms-aurora/main.tf","sha":"347c35dbb8a12b92440744a41335d670a9121b26"},{"name":"table_mappings.json","path":"examples/dms-aurora/table_mappings.json","sha":"88de06ceaafd455575e588a16d63e6a905e3de5d"},{"name":"variables.tf","path":"examples/dms-aurora/variables.tf","sha":"a480c00ce098f1a7658776fdc61fb829c0f1aca9"}]},{"name":"dms-mysql","children":[{"name":"README.md","path":"examples/dms-mysql/README.md","sha":"42056c990402a1b0ffcf0c2c332b16ddccc95606"},{"name":"main.tf","path":"examples/dms-mysql/main.tf","sha":"7e756fb7336e2520aaa2c7b33682b3f2d54c21fd"},{"name":"table_mappings.json","path":"examples/dms-mysql/table_mappings.json","sha":"88de06ceaafd455575e588a16d63e6a905e3de5d"},{"name":"variables.tf","path":"examples/dms-mysql/variables.tf","sha":"a89a88a7f20eb0d565444868c8d23fdb401e2dee"}]},{"name":"efs","children":[{"name":"README.md","path":"examples/efs/README.md","sha":"a0fb53395cdf99f122cea46e8174b2684fb0a363"},{"name":"main.tf","path":"examples/efs/main.tf","sha":"5685a799c4c3e1d5f84d3442a872eb0e8a023262"},{"name":"outputs.tf","path":"examples/efs/outputs.tf","sha":"d724c2d6aadba89c8de9f07ca9a9696d32322c49"},{"name":"variables.tf","path":"examples/efs/variables.tf","sha":"7638182eab5037aff894b0b123beeb7033eac121"}]},{"name":"lambda-rds-snapshot-copy-shared-snapshot","children":[{"name":"README.md","path":"examples/lambda-rds-snapshot-copy-shared-snapshot/README.md","sha":"961e281f1fba921d5c3da95cc711375f42b8f227"},{"name":"main.tf","path":"examples/lambda-rds-snapshot-copy-shared-snapshot/main.tf","sha":"453af468d6e2a1030d335f806935d324f7aec874"},{"name":"outputs.tf","path":"examples/lambda-rds-snapshot-copy-shared-snapshot/outputs.tf","sha":"df649a61494bf66d985517f1ef620833619400e3"},{"name":"variables.tf","path":"examples/lambda-rds-snapshot-copy-shared-snapshot/variables.tf","sha":"886d7ba54db417aa553a40a64b3fe7494039a761"}]},{"name":"lambda-rds-snapshot-multiple-schedules","children":[{"name":"README.md","path":"examples/lambda-rds-snapshot-multiple-schedules/README.md","sha":"63be84a5d148b9de4c27a20c533177bcccc55f5d"},{"name":"main.tf","path":"examples/lambda-rds-snapshot-multiple-schedules/main.tf","sha":"220dab4fb24f821c2626e0c3e980496f86766dca"},{"name":"outputs.tf","path":"examples/lambda-rds-snapshot-multiple-schedules/outputs.tf","sha":"7a8f966782c659d1568f35684197f232939ea9ec"},{"name":"variables.tf","path":"examples/lambda-rds-snapshot-multiple-schedules/variables.tf","sha":"f6ae16692c02a1ae6ed95d58e16bd3e02b98f703"}]},{"name":"lambda-rds-snapshot","children":[{"name":"README.md","path":"examples/lambda-rds-snapshot/README.md","sha":"74f8c4e97a22520769224a914da858687a3a7cee"},{"name":"main.tf","path":"examples/lambda-rds-snapshot/main.tf","sha":"26243435d430f43179488ad501c4643f66f1badd"},{"name":"outputs.tf","path":"examples/lambda-rds-snapshot/outputs.tf","sha":"443e3ba61050e5c35d29e2ee267775b273139dbf"},{"name":"variables.tf","path":"examples/lambda-rds-snapshot/variables.tf","sha":"b777711ea9860aa43f766a5e5edf8b817e994885"}]},{"name":"org-backup-policy","children":[{"name":"README.md","path":"examples/org-backup-policy/README.md","sha":"1f31b02e065c4acfe405b7b8189736d80b8b75f5"},{"name":"main.tf","path":"examples/org-backup-policy/main.tf","sha":"e157055032f13eade448b8433bb7789f85f4bb24"},{"name":"output.tf","path":"examples/org-backup-policy/output.tf","sha":"c5da6967aeec94a01603795a030cb1d37594ddf1"},{"name":"variables.tf","path":"examples/org-backup-policy/variables.tf","sha":"fafd394313117c41c7a9f7ca8d8b329753895849"}]},{"name":"rds-bastion-host","children":[{"name":"README.md","path":"examples/rds-bastion-host/README.md","sha":"b578a092a3d357832bfb696400048bf58aac1c6a"},{"name":"main.tf","path":"examples/rds-bastion-host/main.tf","sha":"2ac56ba510d484a9fa7fb9de1d0a8035e3f36767"},{"name":"mysql-cli-install.sh","path":"examples/rds-bastion-host/mysql-cli-install.sh","sha":"b8761648380fb4e2411604cda72ec27119247d4c"},{"name":"outputs.tf","path":"examples/rds-bastion-host/outputs.tf","sha":"ed63b2572f3813bd183dc5c48d21ce606ac6392e"},{"name":"variables.tf","path":"examples/rds-bastion-host/variables.tf","sha":"36546c11360061ab040267c03b8dde9f6f44b6bb"}]},{"name":"rds-custom-sqlserver","children":[{"name":"README.md","path":"examples/rds-custom-sqlserver/README.md","sha":"d9ebd0d40040035966776d8af5f1f7d424100b61"},{"name":"main.tf","path":"examples/rds-custom-sqlserver/main.tf","sha":"2e7930ff4ac46eea5dd0e15635424cfe5ef9a4b7"},{"name":"outputs.tf","path":"examples/rds-custom-sqlserver/outputs.tf","sha":"b7b881ebaeb91ca590d964b6acdaf3282fb49bce"},{"name":"variables.tf","path":"examples/rds-custom-sqlserver/variables.tf","sha":"9ff2a0507f714d75048cac8ab0d8513c18023961"}]},{"name":"rds-managed-password","children":[{"name":"README.md","path":"examples/rds-managed-password/README.md","sha":"528b187e88957a9c23c0e56627b08146359de968"},{"name":"main.tf","path":"examples/rds-managed-password/main.tf","sha":"65a9e5b9f5730c01b2b28ab6f699195e4fabfe7d"},{"name":"outputs.tf","path":"examples/rds-managed-password/outputs.tf","sha":"f4db34a971ad78b28f83666bf30985d698059e97"},{"name":"variables.tf","path":"examples/rds-managed-password/variables.tf","sha":"d827b3cbad10deb5269493405aea9aeaca2719ed"}]},{"name":"rds-mariadb","children":[{"name":"README.md","path":"examples/rds-mariadb/README.md","sha":"049bd92e67b2b6405ef9bc5c0d9926ca207e7dbb"},{"name":"main.tf","path":"examples/rds-mariadb/main.tf","sha":"ebca6c8929d7d191493f6a4a3341805d8de4c492"},{"name":"outputs.tf","path":"examples/rds-mariadb/outputs.tf","sha":"d373f3c1f773a1e8d579c3294488e2c7ccfed805"},{"name":"variables.tf","path":"examples/rds-mariadb/variables.tf","sha":"c796e857cbeafc00398cb8d0955f93f14d46642f"}]},{"name":"rds-mysql-with-cross-region-replica-same-kms","children":[{"name":"README.md","path":"examples/rds-mysql-with-cross-region-replica-same-kms/README.md","sha":"c6266352746188a690d3a3c34b8d1876c9ff8ee3"},{"name":"main.tf","path":"examples/rds-mysql-with-cross-region-replica-same-kms/main.tf","sha":"66b16ef2ba122ff0ba9b4d74c87b04d1c055de64"},{"name":"outputs.tf","path":"examples/rds-mysql-with-cross-region-replica-same-kms/outputs.tf","sha":"acbae00ee749a1539ea50f529f14657226fa3cc2"},{"name":"variables.tf","path":"examples/rds-mysql-with-cross-region-replica-same-kms/variables.tf","sha":"48ef2cd460112df8170e81b0742801844bd6e609"}]},{"name":"rds-mysql-with-cross-region-replica","children":[{"name":"README.md","path":"examples/rds-mysql-with-cross-region-replica/README.md","sha":"3df99ed94f0560ca426dec107f3c80e599d90b9d"},{"name":"main.tf","path":"examples/rds-mysql-with-cross-region-replica/main.tf","sha":"a8155b3f3c29a1752327b4396a5acf808286b909"},{"name":"outputs.tf","path":"examples/rds-mysql-with-cross-region-replica/outputs.tf","sha":"acbae00ee749a1539ea50f529f14657226fa3cc2"},{"name":"variables.tf","path":"examples/rds-mysql-with-cross-region-replica/variables.tf","sha":"47c4278ee322a345e0739d63c9928e2a5432281e"}]},{"name":"rds-mysql","children":[{"name":"README.md","path":"examples/rds-mysql/README.md","sha":"1c79d544ac1711ba0edc3ef1435ae14ed9584e4c"},{"name":"main.tf","path":"examples/rds-mysql/main.tf","sha":"820987837d0e3b16aca29fb1f7d60e349d5e6fd0"},{"name":"outputs.tf","path":"examples/rds-mysql/outputs.tf","sha":"f4db34a971ad78b28f83666bf30985d698059e97"},{"name":"variables.tf","path":"examples/rds-mysql/variables.tf","sha":"63fa3d3f06fd0ff9c9dfc456cddbeb0d0f9b7b12"}]},{"name":"rds-oracle","children":[{"name":"README.md","path":"examples/rds-oracle/README.md","sha":"2e2645f9078a7a13f74081d03f9bcc20b77d9f46"},{"name":"main.tf","path":"examples/rds-oracle/main.tf","sha":"1289b9303cdb150e206ccfe59bc2d129a55eab75"},{"name":"outputs.tf","path":"examples/rds-oracle/outputs.tf","sha":"c0f452528a4ac04d9f3fb842fb20a2c56fa698ab"},{"name":"variables.tf","path":"examples/rds-oracle/variables.tf","sha":"b06aef75cee60f170153fc31fadeaf2f3352cf7e"}]},{"name":"rds-postgres","children":[{"name":"README.md","path":"examples/rds-postgres/README.md","sha":"15af33be939aee1629228ab8cad166c799f85068"},{"name":"main.tf","path":"examples/rds-postgres/main.tf","sha":"8f85049a80d9943d87a1938840d4893de0be498f"},{"name":"outputs.tf","path":"examples/rds-postgres/outputs.tf","sha":"905ba674ef6e4944bcdc21e6e789ac63f0cdc8ed"},{"name":"variables.tf","path":"examples/rds-postgres/variables.tf","sha":"2856ec6348ea0ef58b06446ffbd84733b8ea8200"}]},{"name":"rds-proxy-aurora","children":[{"name":"README.md","path":"examples/rds-proxy-aurora/README.md","sha":"3f4470186278880034d0aa16a4988d659adb80f7"},{"name":"main.tf","path":"examples/rds-proxy-aurora/main.tf","sha":"980d0b6deb8ce232b84204cf5071a593b19caf7b"},{"name":"outputs.tf","path":"examples/rds-proxy-aurora/outputs.tf","sha":"d51c890006cbe203921ef9b85b8ca78d18d9874d"},{"name":"variables.tf","path":"examples/rds-proxy-aurora/variables.tf","sha":"06ef8ff8674e8b7b58b1bff26a904ecdfec38d4d"}]},{"name":"rds-proxy","children":[{"name":"README.md","path":"examples/rds-proxy/README.md","sha":"fb74051fa749cad1ffeee72a0a06ea83d6a61097"},{"name":"main.tf","path":"examples/rds-proxy/main.tf","sha":"c0d06f6bbe6ab44c02493d6d7556ec204a1bb855"},{"name":"outputs.tf","path":"examples/rds-proxy/outputs.tf","sha":"2ed4f4e43f43f1bf7e46dd37dd7a2dd76bb72af2"},{"name":"variables.tf","path":"examples/rds-proxy/variables.tf","sha":"fd6ffcebc005752de70f17a42b3db31909f0b8f0"}]},{"name":"rds-sqlserver","children":[{"name":"README.md","path":"examples/rds-sqlserver/README.md","sha":"3b2919cc48b03ad5ec113e25767d431f202026f9"},{"name":"main.tf","path":"examples/rds-sqlserver/main.tf","sha":"28e225dfe3683f267d8dd97488e3a880138f3c01"},{"name":"outputs.tf","path":"examples/rds-sqlserver/outputs.tf","sha":"070fea4677bad6fb5be0200a05360da70d171c2f"},{"name":"variables.tf","path":"examples/rds-sqlserver/variables.tf","sha":"2f4984b85bca5bc469defd60040859aa5be0436d"}]},{"name":"rds-with-replicas-blue-green","children":[{"name":"README.md","path":"examples/rds-with-replicas-blue-green/README.md","sha":"9c507d16b0c6cc84108e1c52f935f8106bd2ffca"},{"name":"main.tf","path":"examples/rds-with-replicas-blue-green/main.tf","sha":"da992d12673fcc3bc62be97a2eee46d57b030c17"},{"name":"outputs.tf","path":"examples/rds-with-replicas-blue-green/outputs.tf","sha":"991d5436a635194fec1ad1476eb7be6616032c7a"},{"name":"variables.tf","path":"examples/rds-with-replicas-blue-green/variables.tf","sha":"b65b8722ec4f3201e121c1240627ab31f98c7535"}]},{"name":"rds-with-replicas","children":[{"name":"README.md","path":"examples/rds-with-replicas/README.md","sha":"b92f42c362ed4d25c0144378b7acaa0600e30a12"},{"name":"main.tf","path":"examples/rds-with-replicas/main.tf","sha":"d497fe788cababd515d5af2e40a1efee8f96c07c"},{"name":"outputs.tf","path":"examples/rds-with-replicas/outputs.tf","sha":"991d5436a635194fec1ad1476eb7be6616032c7a"},{"name":"variables.tf","path":"examples/rds-with-replicas/variables.tf","sha":"f0fdd433b715a2d6258d0451695702722b516ea2"}]},{"name":"redshift-serverless","children":[{"name":"README.md","path":"examples/redshift-serverless/README.md","sha":"743e0fec9c6d6109a74ac024d5eb84be2ee671e3"},{"name":"main.tf","path":"examples/redshift-serverless/main.tf","sha":"f2da10ff94d07114fb9d83733ba5445442aeb9a2"},{"name":"outputs.tf","path":"examples/redshift-serverless/outputs.tf","sha":"fc94fb51c8c1a060c4fdf0f446f0954fca641a78"},{"name":"variables.tf","path":"examples/redshift-serverless/variables.tf","sha":"b23c3381dda8c52c9443a1978d26670ae22b8dee"}]},{"name":"redshift-with-snapshot","children":[{"name":"README.md","path":"examples/redshift-with-snapshot/README.md","sha":"2de1c02f397d63da47656a029b8177d4432a63b1"},{"name":"main.tf","path":"examples/redshift-with-snapshot/main.tf","sha":"f3c3b6d989802216c6bf0173306dae1e9d569579"},{"name":"outputs.tf","path":"examples/redshift-with-snapshot/outputs.tf","sha":"779c37290dc1c986bfd8d629cc9b2ba1d98c68aa"},{"name":"variables.tf","path":"examples/redshift-with-snapshot/variables.tf","sha":"1051714dd3560aaf4665ae7efa77b94d59d9f0c2"}]},{"name":"redshift","children":[{"name":"README.md","path":"examples/redshift/README.md","sha":"d10ff00e5c64f98d5600f88f1cf8e5c9d5dfdb21"},{"name":"main.tf","path":"examples/redshift/main.tf","sha":"6419e402c158603f63f86b6ef71baec041424e9e"},{"name":"outputs.tf","path":"examples/redshift/outputs.tf","sha":"779c37290dc1c986bfd8d629cc9b2ba1d98c68aa"},{"name":"variables.tf","path":"examples/redshift/variables.tf","sha":"523ff2e8dc7d5ee09c63733729f4044c01d0ea40"}]},{"name":"vault-locks","children":[{"name":"README.md","path":"examples/vault-locks/README.md","sha":"7a49496e40c5bc5c8d2f1cacc23573e2d50ccc94"},{"name":"main.tf","path":"examples/vault-locks/main.tf","sha":"460b542931c83dd784847360e2911e913ed5cd5f"},{"name":"outputs.tf","path":"examples/vault-locks/outputs.tf","sha":"dd9af28381868df768797dad02f01224c08bc0a1"},{"name":"variables.tf","path":"examples/vault-locks/variables.tf","sha":"c10e2df32d32c72fcd591b75bb9cc4d1ae7a0eb0"}]},{"name":"vault-notifications","children":[{"name":"README.md","path":"examples/vault-notifications/README.md","sha":"0cb4cfa60f1f9da100d2e9c3320deb1bae4ace6f"},{"name":"main.tf","path":"examples/vault-notifications/main.tf","sha":"901d87fa0519ec675637c110c276a6bc20849d74"},{"name":"outputs.tf","path":"examples/vault-notifications/outputs.tf","sha":"dd9af28381868df768797dad02f01224c08bc0a1"},{"name":"variables.tf","path":"examples/vault-notifications/variables.tf","sha":"c10e2df32d32c72fcd591b75bb9cc4d1ae7a0eb0"}]},{"name":"vault-plan-and-selection","children":[{"name":"README.md","path":"examples/vault-plan-and-selection/README.md","sha":"fe4c265fd82bc2159aa713b31eb7eefe9c43803b"},{"name":"main.tf","path":"examples/vault-plan-and-selection/main.tf","sha":"3cdf336506de7b7ac120e5681ca06ab1e385f44d"},{"name":"outputs.tf","path":"examples/vault-plan-and-selection/outputs.tf","sha":"dd9af28381868df768797dad02f01224c08bc0a1"},{"name":"variables.tf","path":"examples/vault-plan-and-selection/variables.tf","sha":"c10e2df32d32c72fcd591b75bb9cc4d1ae7a0eb0"}]},{"name":"vault-recovery-points","children":[{"name":"README.md","path":"examples/vault-recovery-points/README.md","sha":"175e9a8c304f9e04a0735289c0c9abfaa4c1a595"},{"name":"main.tf","path":"examples/vault-recovery-points/main.tf","sha":"9d6b5940435626205ecb6a8040b41bded7b9e1ec"},{"name":"outputs.tf","path":"examples/vault-recovery-points/outputs.tf","sha":"b39a216ef2dfa3a71a2aca8d34a78843d459a4bd"},{"name":"variables.tf","path":"examples/vault-recovery-points/variables.tf","sha":"c10e2df32d32c72fcd591b75bb9cc4d1ae7a0eb0"}]},{"name":"vault-with-custom-policy","children":[{"name":"README.md","path":"examples/vault-with-custom-policy/README.md","sha":"4d18ebcfb7c7f6e9f1f80c39569f731bcca376b9"},{"name":"main.tf","path":"examples/vault-with-custom-policy/main.tf","sha":"19d135a8421b4ea2be08d231be10b242caf99b0b"},{"name":"outputs.tf","path":"examples/vault-with-custom-policy/outputs.tf","sha":"dd9af28381868df768797dad02f01224c08bc0a1"},{"name":"variables.tf","path":"examples/vault-with-custom-policy/variables.tf","sha":"6c5bab480dd2fd4cb575f0387cc70038660255d1"}]}]},{"name":"modules","children":[{"name":"aurora","children":[{"name":"CHANGELOG.md","path":"modules/aurora/CHANGELOG.md","sha":"edb61e795e7a06a86ef050003b1ec5e15bbe1573"},{"name":"README.md","path":"modules/aurora/README.md","sha":"f6f7d1ea0827f47f218d76d28e29c7a166c3b92d"},{"name":"main.tf","path":"modules/aurora/main.tf","sha":"bdbb7c58d039b149d1f907fede5c7014bf8097cd"},{"name":"outputs.tf","path":"modules/aurora/outputs.tf","sha":"2d724c91a9ee9f2b6ee5651fc480290c85cfa361"},{"name":"variables.tf","path":"modules/aurora/variables.tf","sha":"497bf42a0a5202a28d8445ce2831ffb1729c95fa"}]},{"name":"backup-plan","children":[{"name":"CHANGELOG.md","path":"modules/backup-plan/CHANGELOG.md","sha":"6621cc172ff50a2d87c9329cbedd005e14c4e8b6"},{"name":"README.md","path":"modules/backup-plan/README.md","sha":"bbfdb5f91ff5c469e755ba5dacac21b80e01c175"},{"name":"core-concepts.md","path":"modules/backup-plan/core-concepts.md","sha":"f72addac44723e0037bdb5d4f4c4f253454fa0dc"},{"name":"main.tf","path":"modules/backup-plan/main.tf","sha":"36d20738686cd61757c566d263b5520af009f63e"},{"name":"outputs.tf","path":"modules/backup-plan/outputs.tf","sha":"7baaa43ded4ab3597ce120c202611ca7d1379a0b"},{"name":"variables.tf","path":"modules/backup-plan/variables.tf","sha":"a5bb4d9e5177649f5c041c2ba9cb88925176e713"}]},{"name":"backup-vault","children":[{"name":"CHANGELOG.md","path":"modules/backup-vault/CHANGELOG.md","sha":"02932598418284ac50b8beee7fa517df9e021e98"},{"name":"README.md","path":"modules/backup-vault/README.md","sha":"9b4fb120d06fb5008825052f9263cd85814bc9ab"},{"name":"core-concepts.md","path":"modules/backup-vault/core-concepts.md","sha":"f72addac44723e0037bdb5d4f4c4f253454fa0dc"},{"name":"main.tf","path":"modules/backup-vault/main.tf","sha":"828b33250746df591e30000bb697def282e3a8b0"},{"name":"outputs.tf","path":"modules/backup-vault/outputs.tf","sha":"6f9126dc37e7ffabb067ecc02fd9614d32be8c03"},{"name":"variables.tf","path":"modules/backup-vault/variables.tf","sha":"140ac8320c4ab12128d5adcc9d5b4828414d191d"}]},{"name":"dms","children":[{"name":"README.md","path":"modules/dms/README.md","sha":"b213baaedcb916f390949d9d2badd92aad52aeaa"},{"name":"main.tf","path":"modules/dms/main.tf","sha":"033317f3f3be6fec94300c7ba3b6838f1b09faf6"},{"name":"outputs.tf","path":"modules/dms/outputs.tf","sha":"a0d468f8430daa383d2305435a34996e01dc7dad"},{"name":"variables.tf","path":"modules/dms/variables.tf","sha":"bb7521eebbc1c8bebcdb5f65bc288dfcc2704efd"},{"name":"versions.tf","path":"modules/dms/versions.tf","sha":"59d850549cb5376155b0e1a6180cdeae5a82c4dc"}]},{"name":"efs","children":[{"name":"CHANGELOG.md","path":"modules/efs/CHANGELOG.md","sha":"d7e35c2c120bc59a25aa2eb76463592a3e266dfd"},{"name":"README.adoc","path":"modules/efs/README.adoc","sha":"1b13e1f238d444728b6b81a67e4b38c78d33a1ba"},{"name":"main.tf","path":"modules/efs/main.tf","sha":"e4d5f5f0f27530a6c4c3c649ac7977c6f111311e"},{"name":"outputs.tf","path":"modules/efs/outputs.tf","sha":"b505b3d3c4ade32e06286ebea60be1a5f67ce77a"},{"name":"variables.tf","path":"modules/efs/variables.tf","sha":"e1dd6763f8bdef641838044990c21f20f1982e7f"}]},{"name":"lambda-cleanup-snapshots","children":[{"name":"CHANGELOG.md","path":"modules/lambda-cleanup-snapshots/CHANGELOG.md","sha":"e8f52ab10e0d2b87a0af852b7854e26bd7090cb2"},{"name":"README.md","path":"modules/lambda-cleanup-snapshots/README.md","sha":"0117ca051d45f2b9f1e21263b7d44b4814b16b76"},{"name":"cleanup-rds-snapshots","children":[{"name":"index.py","path":"modules/lambda-cleanup-snapshots/cleanup-rds-snapshots/index.py","sha":"9e651d2d57310054e21d891aec481d02c9d79489"}]},{"name":"main.tf","path":"modules/lambda-cleanup-snapshots/main.tf","sha":"af7373439d1b407bcdd2ce1afeeda4870329ea6a"},{"name":"outputs.tf","path":"modules/lambda-cleanup-snapshots/outputs.tf","sha":"a99c0265d859dd0c87a6eba62aaf2b013e224873"},{"name":"variables.tf","path":"modules/lambda-cleanup-snapshots/variables.tf","sha":"6a8d68f55cf51d75ec84caed75ebcb2ea25a5dab"}]},{"name":"lambda-copy-shared-snapshot","children":[{"name":"CHANGELOG.md","path":"modules/lambda-copy-shared-snapshot/CHANGELOG.md","sha":"c945d0ac200367c96e05b3b8e896430ed9c1bd42"},{"name":"README.md","path":"modules/lambda-copy-shared-snapshot/README.md","sha":"6fc6ed6b551a35d7f0cb49667c1087eeea22a9b9"},{"name":"copy-shared-rds-snapshot","children":[{"name":"index.py","path":"modules/lambda-copy-shared-snapshot/copy-shared-rds-snapshot/index.py","sha":"6b1a0331ee9ffc57c95e0923a4b1db46dec0b2c5"}]},{"name":"main.tf","path":"modules/lambda-copy-shared-snapshot/main.tf","sha":"52812a41bb78f44794167e75c9354fc0ca1eda74"},{"name":"outputs.tf","path":"modules/lambda-copy-shared-snapshot/outputs.tf","sha":"f4833d96fa6d47190b9d2c3af243142aefc59d59"},{"name":"variables.tf","path":"modules/lambda-copy-shared-snapshot/variables.tf","sha":"d2256cb15149dbbcfc3593312e532e1a3323b22d"}]},{"name":"lambda-create-snapshot","children":[{"name":"CHANGELOG.md","path":"modules/lambda-create-snapshot/CHANGELOG.md","sha":"f5fc10292bd8fc57a57106c6dfd449aea484077c"},{"name":"README.adoc","path":"modules/lambda-create-snapshot/README.adoc","sha":"948a98442905f8b05c9c85a5b996990da05dce2b"},{"name":"core-concepts.md","path":"modules/lambda-create-snapshot/core-concepts.md","sha":"61bd0892c5597716e19cc5ed7d7a2b5533cbe1a4"},{"name":"create-rds-snapshot","children":[{"name":"index.py","path":"modules/lambda-create-snapshot/create-rds-snapshot/index.py","sha":"00c5f4db1c472eeee42a683a952722449f3d4ade"}]},{"name":"main.tf","path":"modules/lambda-create-snapshot/main.tf","sha":"3e00fdc13f3a59dc899b44061fc30335f0757d11"},{"name":"outputs.tf","path":"modules/lambda-create-snapshot/outputs.tf","sha":"a0f5ffafa8ef11d00b72f1858b81e182ab2471dd"},{"name":"variables.tf","path":"modules/lambda-create-snapshot/variables.tf","sha":"01e2b4d4b1170f9e937ad8204a3982f5a77c5f0d"}]},{"name":"lambda-share-snapshot","children":[{"name":"CHANGELOG.md","path":"modules/lambda-share-snapshot/CHANGELOG.md","sha":"19c11b32649f128566b5656c3e21fbb921fc5ee1"},{"name":"README.md","path":"modules/lambda-share-snapshot/README.md","sha":"9006e578e4c850804ddccdc2de9fbc733fb46e29"},{"name":"main.tf","path":"modules/lambda-share-snapshot/main.tf","sha":"1ab11e6a494bedde5813f644d1d49cfa11c6452f"},{"name":"outputs.tf","path":"modules/lambda-share-snapshot/outputs.tf","sha":"c0d2854f967a6c963662c660d6ae96d8cabe471a"},{"name":"share-rds-snapshot","children":[{"name":"index.py","path":"modules/lambda-share-snapshot/share-rds-snapshot/index.py","sha":"b4e784ff72172d1f3e84f0f97a48fdf60405ed27"}]},{"name":"variables.tf","path":"modules/lambda-share-snapshot/variables.tf","sha":"683571dbf98c2fb4f8077e7adadcb4df4241b9b4"}]},{"name":"org-backup-policy","children":[{"name":"README.md","path":"modules/org-backup-policy/README.md","sha":"ee90c86efd8ca36b8d36f8be53487ed0a25f0db7"},{"name":"main.tf","path":"modules/org-backup-policy/main.tf","sha":"7b3686e6975ba60d666ddc008c85a063bacffae3"},{"name":"outputs.tf","path":"modules/org-backup-policy/outputs.tf","sha":"07ca16cd6749511c0065527f84697eb6c4cc85ab"},{"name":"variables.tf","path":"modules/org-backup-policy/variables.tf","sha":"eee36a167476c5a826d8627e5648ca354f542a68"}]},{"name":"rds-proxy","children":[{"name":"README.md","path":"modules/rds-proxy/README.md","sha":"1dbac46a93efff289be003097290842fab06e22a"},{"name":"main.tf","path":"modules/rds-proxy/main.tf","sha":"c0907170a41572ca74235c31943e4227683c3d75"},{"name":"outputs.tf","path":"modules/rds-proxy/outputs.tf","sha":"9c14328f5b45bac433b58262a3e4311e651c3fec"},{"name":"variables.tf","path":"modules/rds-proxy/variables.tf","sha":"ef2fe59004d79366692522b74bd7c090213e1c13"}]},{"name":"rds-replicas","children":[{"name":"README.md","path":"modules/rds-replicas/README.md","sha":"29800af570eedf9c0240f01342a5fdd1ac706fef"},{"name":"main.tf","path":"modules/rds-replicas/main.tf","sha":"ea8bc89bb2f41a1dbae1ae803192a3192b2d31b8"},{"name":"outputs.tf","path":"modules/rds-replicas/outputs.tf","sha":"30703bf2512308c29289a912ef93f51b7887e299"},{"name":"variables.tf","path":"modules/rds-replicas/variables.tf","sha":"149c3b2c548b7a152525e45e4474bd525626d38b"}]},{"name":"rds","children":[{"name":"CHANGELOG.md","path":"modules/rds/CHANGELOG.md","sha":"2b56736f5478e2056d04aad4a9e520d757f1405a"},{"name":"README.md","path":"modules/rds/README.md","sha":"301b394d7fa908e7d24a1a2ed84018b06fafd86f","toggled":true},{"name":"main.tf","path":"modules/rds/main.tf","sha":"ce611477a780ac6d2e3a069e1f5f33ec7d90af30"},{"name":"outputs.tf","path":"modules/rds/outputs.tf","sha":"3cf359f44b2fc3d968a457f7057f77b70a9a1b91"},{"name":"variables.tf","path":"modules/rds/variables.tf","sha":"f57459c3b65be7d2bac4a311ded4fbcfab16cf7b"}],"toggled":true},{"name":"redshift","children":[{"name":"CHANGELOG.md","path":"modules/redshift/CHANGELOG.md","sha":"474edd1fabb97de31f22e241624232a52033f136"},{"name":"README.md","path":"modules/redshift/README.md","sha":"1e402c83e07b25944d163443df5ecb61a4061f2f"},{"name":"main.tf","path":"modules/redshift/main.tf","sha":"f8b1c7c93a96c0853dd31c6593ea471a83072078"},{"name":"outputs.tf","path":"modules/redshift/outputs.tf","sha":"8503fdcfb8e92f535148b9be6ffe3567be38e170"},{"name":"variables.tf","path":"modules/redshift/variables.tf","sha":"68f1c355799f4ab4080234214199c9cec7c8c78e"}]}],"toggled":true},{"name":"terraform-cloud-enterprise-private-module-registry-placeholder.tf","path":"terraform-cloud-enterprise-private-module-registry-placeholder.tf","sha":"ae586c0fe830819580e1009d41a9074f16e65bed"},{"name":"test","children":[{"name":"README.md","path":"test/README.md","sha":"49b99a6e7e9dcad288036b6bf8bd6ed8c3e0e112"},{"name":"backup_test_helpers.go","path":"test/backup_test_helpers.go","sha":"51bdc48c508abbae30da4079e7a4e58318afa268"},{"name":"db_util.go","path":"test/db_util.go","sha":"9f9c382889abd05400afea8a4c958005d9f3a75a"},{"name":"example_aurora_global_test.go","path":"test/example_aurora_global_test.go","sha":"32c4bee2f902cf790ed332e45fde5eff4339f5fd"},{"name":"example_aurora_test.go","path":"test/example_aurora_test.go","sha":"d4a789a352557c190ce07748971e9a46f60cdf4b"},{"name":"example_aurora_with_cross_region_replica_test.go","path":"test/example_aurora_with_cross_region_replica_test.go","sha":"9f995742232fdb0e8d9db851e2461148e5004d42"},{"name":"example_backup_default_vault_and_plan_test.go","path":"test/example_backup_default_vault_and_plan_test.go","sha":"9087e372b53c9dff14c03b5334dae7237e77ed69"},{"name":"example_backup_recovery_point_test.go","path":"test/example_backup_recovery_point_test.go","sha":"944035130d5cc776f5a2c6846684fc286fef62ab"},{"name":"example_backup_vault_and_plan_test.go","path":"test/example_backup_vault_and_plan_test.go","sha":"95a7d67ebd962cc7ac85e5fce1e2a119373a48b3"},{"name":"example_backup_vault_notifications_test.go","path":"test/example_backup_vault_notifications_test.go","sha":"742b1a01da35a48cacf0dcc448428d811c520e62"},{"name":"example_backup_vault_with_custom_policy_test.go","path":"test/example_backup_vault_with_custom_policy_test.go","sha":"6568822143bc0b99c0dcfc1af50fae8bfdbd9a56"},{"name":"example_efs_test.go","path":"test/example_efs_test.go","sha":"c721f5e694ccddefb9debf245cd6bbca0e36b2a7"},{"name":"example_lambda_rds_snapshot_create_resources_test.go","path":"test/example_lambda_rds_snapshot_create_resources_test.go","sha":"ae9fc4040c6547f384da0cb67c68d2acd610ddee"},{"name":"example_lambda_rds_snapshot_multiple_schedules_test.go","path":"test/example_lambda_rds_snapshot_multiple_schedules_test.go","sha":"0962d6149bdcf92151f1257fbb96217f1e8d0d60"},{"name":"example_lambda_rds_snapshot_test.go","path":"test/example_lambda_rds_snapshot_test.go","sha":"8df8dcaf23bc4d48c2fabc8f804d10632fc708f4"},{"name":"example_org_backup_policy_test.go","path":"test/example_org_backup_policy_test.go","sha":"bd5951eac786d4366fc36832b095b76b17071046"},{"name":"example_rds_bastion_test.go","path":"test/example_rds_bastion_test.go","sha":"095c09edbecf08ff5c17d6be0c446341b9add0ab"},{"name":"example_rds_mariadb_test.go","path":"test/example_rds_mariadb_test.go","sha":"fe7ceb37e9245079fc542d56fcfc3b8312d6defc"},{"name":"example_rds_mysql_test.go","path":"test/example_rds_mysql_test.go","sha":"8d46be89dbc9f4d1dab9d5cf3d4bc822997873b1"},{"name":"example_rds_mysql_with_cross_region_replica_test.go","path":"test/example_rds_mysql_with_cross_region_replica_test.go","sha":"f914f685246de865c6d8439d903786393b87c282"},{"name":"example_rds_oracle_test.go","path":"test/example_rds_oracle_test.go","sha":"84d7eb02ac49c18909fb1e0384c0ee9f8ef6453d"},{"name":"example_rds_postgres_test.go","path":"test/example_rds_postgres_test.go","sha":"08e26166f9ec48e2f0a1d1acf8069005e0855e8e"},{"name":"example_rds_proxy_security_group_networking_test.go","path":"test/example_rds_proxy_security_group_networking_test.go","sha":"23c08a128f989906cc82defc2f1274b3fb3fb8bc"},{"name":"example_rds_proxy_test.go","path":"test/example_rds_proxy_test.go","sha":"48aa4ce58bf0b52accbd2a9958f0d0d8afdb9f14"},{"name":"example_rds_sqlserver_test.go","path":"test/example_rds_sqlserver_test.go","sha":"6e7b6c9df8e866c7e25c3ce452294e5019dfa3db"},{"name":"example_rds_with_replicas_test.go","path":"test/example_rds_with_replicas_test.go","sha":"a0f7435363a4198eb7f3e40fcdf6a7868e1cea25"},{"name":"example_redshift_test.go","path":"test/example_redshift_test.go","sha":"156c76a7cfc1b85cc14acfcf70d9ca13046e12e3"},{"name":"go.mod","path":"test/go.mod","sha":"00b8318c5b56608852e9d995f5f933967729cd19"},{"name":"go.sum","path":"test/go.sum","sha":"a993c5c2268b9ab316ebd60c0e588490989a2e23"},{"name":"rds_connection.go","path":"test/rds_connection.go","sha":"9e7991134dc67b4799bdf1996bfbf6567d7e325b"},{"name":"rds_proxy_connection.go","path":"test/rds_proxy_connection.go","sha":"eca8ca7e3c0efa5db466b2d76a5ee4f67fe3e04f"},{"name":"scripts","children":[{"name":"create-db-parameter-group","children":[{"name":"README.md","path":"test/scripts/create-db-parameter-group/README.md","sha":"bb0a1f85afa2c971ab4c9bcb68d498fdf9da8708"},{"name":"dbclusterparametergroup.go","path":"test/scripts/create-db-parameter-group/dbclusterparametergroup.go","sha":"1e0d02031710c57a91f5112f79e32f0790694916"},{"name":"dbparametergroup.go","path":"test/scripts/create-db-parameter-group/dbparametergroup.go","sha":"ea1afd946dfdf72d0f27e4e3aa5a3655e5050bdb"},{"name":"main.go","path":"test/scripts/create-db-parameter-group/main.go","sha":"f2d470500ff05b6d47c8bce3cbc06af2285c9e89"}]},{"name":"create-db-subnet-group","children":[{"name":"README.md","path":"test/scripts/create-db-subnet-group/README.md","sha":"36e0704c7ebe047196fc47ac0457fe1bcc9443b3"},{"name":"dbsubnetgroup.go","path":"test/scripts/create-db-subnet-group/dbsubnetgroup.go","sha":"df6550c8eab73f4cf75a582ed2e4b2fddacb4a5c"},{"name":"main.go","path":"test/scripts/create-db-subnet-group/main.go","sha":"4456ac3a46601faedb47d523645ebb478767b7ae"}]}]},{"name":"upgrades","children":[{"name":"upgrade_test.go","path":"test/upgrades/upgrade_test.go","sha":"6db1e947ac470e48dbc5f137454d7a470cd7a68e"}]},{"name":"util.go","path":"test/util.go","sha":"10791215b62782aca1e500f11ccf1f931ccf7342"},{"name":"validation","children":[{"name":"validate_all_modules_and_examples_test.go","path":"test/validation/validate_all_modules_and_examples_test.go","sha":"74c928d0cbc2914e5cd708277bd857cb2375b660"}]}]}]},"detailsContent":"<h1 class=\"preview__body--title\" id=\"rds-module\">RDS Module</h1><div class=\"preview__body--border\"></div><p>This module creates an Amazon Relational Database Service (RDS) cluster that can run MySQL, Postgres, MariaDB, Oracle,\nor SQL Server. The cluster is managed by AWS and automatically handles standby failover, read replicas, backups,\npatching, and encryption.</p>\n<p><img src=\"/repos/images/v0.34/module-data-storage/_docs/rds-architecture.png\" alt=\"img\" class=\"preview__body--diagram\"></p>\n<h2 class=\"preview__body--subtitle\" id=\"about-rds\">About RDS</h2>\n<p>Amazon Relational Database Service (Amazon RDS) is a web service that makes it easier to set up, operate, and scale a\nrelational database in the AWS Cloud. It provides cost-efficient, resizable capacity for an industry-standard relational\ndatabase and manages common database administration tasks. Refer to\nthe <a href=\"https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html\" class=\"preview__body--description--blue\" target=\"_blank\">What is Amazon RDS</a> page for more information.</p>\n<h2 class=\"preview__body--subtitle\" id=\"common-gotchas\">Common Gotcha's</h2>\n<ul>\n<li>All RDS upgrades (version upgrades, instance type upgrades, etc.) require a few minutes of scheduled downtime.</li>\n<li>If an RDS instance that uses Multi-AZ fails, Amazon will automatically kick off a fail-over, but you will still\nexperience about 3 - 5 minutes of downtime.</li>\n<li>Based on the above, make sure you've written your app to gracefully handle database downtime.</li>\n<li>An RDS instance that runs out of disk space will stop working, so be sure to monitor and set an alert on the\nFreeStorageSpace CloudWatch Metric. Consider monitoring other RDS CloudWatch Metrics as well.</li>\n</ul>\n<h2 class=\"preview__body--subtitle\" id=\"how-do-you-scale-this-database\">How do you scale this database?</h2>\n<ul>\n<li><strong>Storage</strong>: Use the <code>allocated_storage</code> variable.</li>\n<li><strong>Vertical scaling</strong>: To scale vertically (i.e. bigger DB instances with more CPU and RAM), use the <code>instance_type</code>,\n<code>storage_type</code>, and <code>iops</code> input variables. For a list of AWS RDS server types, see <a href=\"http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.DBInstanceClass.html\" class=\"preview__body--description--blue\" target=\"_blank\">DB Instance\nClass</a></li>\n<li><strong>Horizontal scaling</strong>: To scale horizontally, you can add more replicas using the <code>num_read_replicas</code> input variable,\nand RDS will automatically deploy the new instances, begin asynchronous replication, and make them available as read\nreplicas. For more info, see <a href=\"https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ReadRepl.html#USER_ReadRepl.Overview\" class=\"preview__body--description--blue\" target=\"_blank\">Working with PostgreSQL, MySQL, and MariaDB Read\nReplicas</a>.</li>\n<li><strong>Storage performance</strong>: <strong>N.B: only available when <code>var.storage_type</code> is set to <code>gp3</code>.</strong> When you are using gp3, you\ncan\noptionally fine-tune storage performance characteristics via the <code>storage_throughput</code> variable. See\nthe <a href=\"https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html#gp3-storage\" class=\"preview__body--description--blue\" target=\"_blank\">RDS User Guide</a> for\nmore information.</li>\n</ul>\n<h2 class=\"preview__body--subtitle\" id=\"how-do-you-connect-to-the-database\">How do you connect to the database?</h2>\n<p>This module provides the connection details as <a href=\"https://www.terraform.io/intro/getting-started/outputs.html\" class=\"preview__body--description--blue\" target=\"_blank\">Terraform output\nvariables</a>:</p>\n<ol>\n<li><strong>Primary endpoint</strong>: The endpoint for the primary DB. You should always use this URL for writes, as it points to\nthe primary.</li>\n<li><strong>Read replica endpoints</strong>: A comma-separated list of read replica URLs.</li>\n<li><strong>Port</strong>: The port to use to connect to the endpoints above.</li>\n</ol>\n<p>You can programmatically extract these variables in your Terraform templates and pass them to other resources (e.g.\npass them to User Data in your EC2 instances). You'll also see the variables at the end of each <code>terraform apply</code> call\nor if you run <code>terraform output</code>.</p>\n<p>Note that the database is likely behind a Bastion Host, so you may need to first connect to the Bastion Host (or use SSH\nTunneling) before you can connect to the database.</p>\n<h2 class=\"preview__body--subtitle\" id=\"how-do-you-use-this-module\">How do you use this module?</h2>\n<ul>\n<li>See the <a href=\"/repos/v0.34/module-data-storage/README.adoc\" class=\"preview__body--description--blue\">root README</a> for instructions on using Terraform modules.</li>\n<li>See the <a href=\"/repos/v0.34/module-data-storage/modules/rds/variables.tf\" class=\"preview__body--description--blue\">variables.tf</a> for all the variables you can set on this module.</li>\n<li>See the <a href=\"/repos/v0.34/module-data-storage/examples\" class=\"preview__body--description--blue\">examples</a> folder for different types of relational database usages:\n<ul>\n<li><a href=\"/repos/v0.34/module-data-storage/examples/rds-mariadb\" class=\"preview__body--description--blue\">rds-mariadb</a></li>\n<li><a href=\"/repos/v0.34/module-data-storage/examples/rds-mysql\" class=\"preview__body--description--blue\">rds-mysql</a></li>\n<li><a href=\"/repos/v0.34/module-data-storage/examples/rds-oracle\" class=\"preview__body--description--blue\">rds-oracle</a></li>\n<li><a href=\"/repos/v0.34/module-data-storage/examples/rds-postgres\" class=\"preview__body--description--blue\">rds-postgres</a></li>\n<li><a href=\"/repos/v0.34/module-data-storage/examples/rds-sqlserver\" class=\"preview__body--description--blue\">rds-sqlserver</a></li>\n<li><a href=\"/repos/v0.34/module-data-storage/examples/rds-mysql-with-cross-region-replica\" class=\"preview__body--description--blue\">RDS Cross Region Replica Example</a></li>\n<li><a href=\"/repos/v0.34/module-data-storage/examples/rds-with-replicas\" class=\"preview__body--description--blue\">RDS Same Region Replica Example</a></li>\n</ul>\n</li>\n</ul>\n<h2 class=\"preview__body--subtitle\" id=\"deployment\">Deployment</h2>\n<p>Before making any deployment for the RDS database, start by backing up the database and taking a snapshot of the infrastructure state. Review the release notes for any breaking changes and new features. Update the infrastructure code by modifying the Terraform configurations and testing them in a non-production environment. Conduct post-upgrade testing to ensure application functionality and performance, while monitoring the database health. Communicate the potential downtime to relevant stakeholders and involve them in the process.</p>\n<h3 class=\"preview__body--subtitle\" id=\"minor-version-upgrades\">Minor version upgrades</h3>\n<p>RDS supports automatically installing minor version upgrades. For example, it can automatically update a MySQL database from version 5.7.10 to 5.7.11. To enable this functionality, follow these steps:</p>\n<ol>\n<li>Set the <code>auto_minor_version_upgrade</code> parameter to <code>true</code>.</li>\n<li>Set the <code>engine_version</code> parameter to <code>MAJOR.MINOR</code> and omit the <code>PATCH</code> number.</li>\n</ol>\n<h3 class=\"preview__body--subtitle\" id=\"major-version-upgrade\">Major Version Upgrade</h3>\n<p>RDS supports automatically installing major version upgrades. To enable this functionality, follow these steps:</p>\n<ol>\n<li>Set the <code>allow_major_version_upgrade</code> parameter to <code>true</code>.</li>\n<li>Set the <code>engine_version</code> parameter to <code>MAJOR.MINOR</code> and omit the <code>PATCH</code> number.</li>\n</ol>\n<p><strong>Note</strong>: consider temporarily setting parameter and option group variables to engine defaults during the major version upgrade process. This step is important to prevent upgrade failures that might occur due to custom configurations not being compatible with the new version. By reverting these configurations to default settings temporarily, you minimize the risk of incompatibility issues during the upgrade process. After the upgrade is successfully completed, these configurations can be reverted back to their custom values, ensuring that your database operates with the desired settings while being compatible with the upgraded version.</p>\n<p><strong>Note</strong>: A minimal downtime is expected during a major version upgrade. Make sure to communicate the potential downtime to relevant stakeholders in advance.</p>\n<h3 class=\"preview__body--subtitle\" id=\"blue-green-deployment-for-low-downtime-updates\">Blue/Green Deployment for Low-Downtime Updates</h3>\n<p>By default, RDS updates DB Instances in-place, which can cause service interruptions. Low-downtime updates minimize interruptions by using an RDS Blue/Green deployment. To enable this, set the <code>enable_blue_green_update</code> variable to <code>true</code>.</p>\n<p>Note that low-downtime updates are only supported for MySQL, MariaDB, and Postgresql, and backups must be enabled. When using terraform, the Blue/Green Deployment won't finish until the Green instances become the new instance and the Blue instance is deleted. Therefore, Blue/Green Deployment cannot be used for scenarios outside of terraform's resource update, such as manual testing of the Green deployment or reverting back to the Blue deployment.</p>\n<h3 class=\"preview__body--subtitle\" id=\"standby-deployment\">Standby Deployment</h3>\n<p>Set <code>multi_az=true</code>. When setting up a multi-AZ (Availability Zone) RDS deployment in AWS, both the primary and standby RDS instances are created in different Availability Zones for high availability. However, this doesn't mean they will have different endpoints. Both instances will have the same DNS endpoint, and AWS's internal infrastructure will handle the failover process transparently for you. AWS RDS provides automatic failover support for DB instances using Multi-AZ deployments for the supported database engines. Failover is automatically handled by RDS without any manual intervention.</p>\n","repoName":"module-data-storage","repoRef":"v0.36.0","serviceDescriptor":{"serviceName":"RDS","serviceRepoName":"module-data-storage","serviceRepoOrg":"gruntwork-io","serviceMainReadmePath":"/modules/rds/foo","cloudProviders":["aws"],"description":"Terraform code and scripts for deploying data-storage resources (e.g. databases, cache) in AWS","imageUrl":"amazon_rds.png","licenseType":"subscriber","technologies":["Terraform","Bash"],"compliance":[],"tags":[""],"noDisplayInUI":true},"serviceCategoryName":"Database","fileName":"README.md","filePath":"/modules/rds","title":"Repo Browser: RDS","description":"Browse the repos in the Gruntwork Infrastructure as Code Library."}