Create it
- Console
- CLI and API
- Coding agent
- Open the environment, then New service › Blueprint.
- Find Amazon RDS for MySQL in the catalog and pick the major version.
- Fill in the variables. Required ones are marked; the others use their defaults.
- Create the service, and deploy it now or later.
Variables and outputs
Generated fromqbm.yml at AWS/mysql/8/3.5.1, the manifest the Console form is built from.
All 32 variables
All 32 variables
All 10 outputs
All 10 outputs
Reference
From the Blueprint’s README. Creates an AWS RDS MySQL 8.4 instance with configurable instance class, storage, backups, maintenance window, monitoring, and network settings. Storage is encrypted by default. A dedicated parameter group is attached withlog_bin_trust_function_creators = 1 so the master user can create triggers/stored procedures without superuser privileges.
The RDS identifier is derived from db_name by lowercasing and replacing underscores with hyphens (AWS requirement). The actual MySQL database name is kept as provided.
Variables
Required
Available instance classes: every RDS instance class Qovery offers for native managed PostgreSQL and MySQL — the
db.t3, db.t4g, db.m5–db.m8g, db.r5–db.r8g (including db.r5b), db.x2g, db.x2idn and db.x2iedn families, with their Graviton (g), Intel (i), local-storage (d) and network-optimized (n) variants. db.c6gd is left out because RDS offers it only for Multi-AZ DB clusters. The full list is in qbm.yml.
Credentials
Both are optional — omit them and Qovery supplies the values, the way native managed databases did. In the console, leaving the field blank omits it. Through the API or Terraform, omit the variable rather than sending an empty string: the platform rejects an empty variable value.
Changing
db_password rotates the live instance’s master password: the value is sent as a
write-only argument, triggered by a version derived from the password itself, so a change
reaches RDS and an unchanged password sends nothing.
An adopted instance does not take part until manage_db_password is set to true. That keeps
its import plan clean, and it has a consequence worth stating plainly: while the flag is
false, editing db_password changes what the blueprint publishes without changing anything on
the instance. Consumers pick up a credential RDS will reject. On an adopted instance, either
set the flag before touching the password, or do not touch the password at all.
Setting the flag is itself a write. Until then the version that triggers the send is null in
state, so switching it to true moves that value and applies db_password to the instance —
harmless when the two already agree, and an overwrite of the live password when they do not.
Confirm the stored password is the one the instance actually has before opting in.
A rotation also obeys apply_changes_now. Left false, RDS defers the password change to the
maintenance window while the new value is published immediately — consumers redeployed in
between cannot connect. Set apply_changes_now when you rotate.
Adoption (import_identifier set) requires both explicitly. username is ForceNew on
aws_db_instance, so a defaulted value would plan a replacement and destroy the live
database; and RDS never returns the master password, so a generated one would be published
as the credential without ever being applied.
Instance & storage
Network
By default the instance is attached to the Qovery cluster network: the DB subnet group created at cluster bootstrap (named after the cluster VPC id) and the cluster workers security group, so pods in the cluster can reach the database out of the box. On clusters deployed into an existing VPC (user-provided network), the
ClusterId tag lookup may not resolve; set db_subnet_group_name and security_group_ids explicitly in that case.
Maintenance & upgrades
Backups
Deleting the service keeps a final snapshot and the automated backups by default, and both keep
costing storage until deleted by hand: the snapshot indefinitely, the backups for
backup_retention_period days. For a throwaway or test instance, set both skip_final_snapshot and
delete_automated_backups to true. The final snapshot is named
<cluster name>-<db name>-<YYYYMMDDhhmmss>: db_name lowercased with _ turned into -, the
UTC time the name was stamped, and any character AWS rejects removed (prefixed snap- if the
result does not start with a letter). It is stamped once at creation, so successive
create/destroy cycles of the same name do not collide.
Monitoring
Misc
Outputs
Upgrading from an earlier blueprint version
Read this before repointing a deployment at this version.- An adopted instance now keeps running its exact live version (for example
8.0.x) instead of havingengine_versionignored. Nothing is sent to AWS for an instance whose version is unchanged. - Deleting now keeps a final snapshot and the automated backups for services created on this
version. An existing service does not change behaviour: Qovery stores every variable default when
the service is created, so repointing it here keeps
skip_final_snapshot = trueanddelete_automated_backups = true. To keep a snapshot and backups on delete, set both tofalseon the service. The upgrade itself addstime_static.createdand, with those set tofalse, updatesskip_final_snapshot,delete_automated_backupsandfinal_snapshot_identifierin place — Terraform-only arguments, nothing is sent to AWS and the instance is not rebooted. - For an instance this blueprint created, and for an adopted instance already opted in with
manage_db_password, the first apply writes the master password once. Old state carries no record of what was last sent, so the value Qovery holds is applied. An instance whose password was rotated outside Terraform — which earlier versions of this document told you to do — is reset to the Qovery-held value, and applications using the out-of-band password stop connecting. Make the two agree before you upgrade. An adopted instance left atmanage_db_password = falseis not touched: nothing is sent, and an out-of-band rotation survives. manage_db_passwordis one-way. Setting it back to false after an adopted instance has been handed over leaves Terraform with a change AWS rejects as “no modifications were requested”.- Terraform moves from 1.9.7 to 1.13.3, and
1.9.7is no longer an accepted override. State written by 1.13.3 cannot be read by 1.9.7, so a deployment cannot be repointed at an earlier blueprint version once it has applied.
Lifecycle ignore_changes
On the primary instance,engine_version is no longer ignored. Terraform requests the exact
version held in the internal engine_version variable, which Qovery sets on every deploy to the
live version, so an adopted 8.0.x instance stays on 8.0.x. With auto_minor_version_upgrade
enabled, AWS may still move the running minor forward; the next deploy then requests that newer
version, so Terraform never tries to go back. Read replicas inherit the primary’s version.
A bare "8.4" is never sent to a live instance, because AWS resolves it to the region’s default
minor, which upgrades an older minor and is refused on a newer one. Without the variable, an
existing instance keeps its live version (read through the aws_db_instance data source) and only
a new instance gets 8.4.
A few attributes remain ignored:
password— the master password moved to the write-onlypassword_wo; ignoring the plain attribute stops the value left in older state reading as a removal.enabled_cloudwatch_logs_exports— list type, not yet supported by the qbm.yml schema.max_allocated_storage— will turn into a managed input when the storage autoscale feature is added.
parameter_group_name is not ignored — the blueprint owns its parameter group.
Required AWS IAM permissions
The credentials used to deploy this blueprint must allow the actions below. The RDS actions target instances in any region you deploy to; EC2 read actions are needed so Terraform can look up the default VPC, subnets, and security groups when none are explicitly configured.monitoring_interval > 0, the supplied monitoring_role_arn must be assumable by RDS (monitoring.rds.amazonaws.com trust relationship) and grant the AmazonRDSEnhancedMonitoringRole managed policy.