I'm attempting to deploy a serverless MySQL 8.0 service using AWS Aurora V2 using Terraform.
Terraform details (not on latest version, but should be compatible with latest AWS provider version):
Terraform v0.15.4
on linux_amd64
+ provider registry.terraform.io/hashicorp/aws v4.12.0
+ provider registry.terraform.io/hashicorp/consul v2.15.1
+ provider registry.terraform.io/hashicorp/random v3.1.3
+ provider registry.terraform.io/hashicorp/template v2.2.0
+ provider registry.terraform.io/hashicorp/vault v3.5.0
Here's the relevant main.tf file:
resource "aws_rds_cluster" "database" {
cluster_identifier = var.cluster_identifier
db_subnet_group_name = aws_db_subnet_group.db_subnet_group.name
vpc_security_group_ids = var.vpc_security_group_ids
engine_mode = "serverless"
enable_http_endpoint = var.enable_http_endpoint
master_username = var.master_username
master_password = random_password.rng.result
database_name = var.name
backup_retention_period = var.backup_retention_period
skip_final_snapshot = var.skip_final_snapshot
deletion_protection = var.deletion_protection
engine = "aurora-mysql"
engine_version = "8.0.mysql_aurora.3.02.0"
serverlessv2_scaling_configuration {
max_capacity = var.max_capacity
min_capacity = var.min_capacity
}
lifecycle {
ignore_changes = [
engine_version,
availability_zones,
master_username,
master_password,
]
}
tags = {
Environment = var.env
Name = var.name
}
}
resource "aws_rds_cluster_instance" "cluster_instances" {
identifier = "${var.cluster_identifier}-serverless"
cluster_identifier = aws_rds_cluster.database.id
instance_class = "db.serverless"
engine = aws_rds_cluster.database.engine
engine_version = aws_rds_cluster.database.engine_version
}
resource "aws_db_subnet_group" "db_subnet_group" {
name = "${var.cluster_identifier}-subnet-group"
subnet_ids = var.subnet_ids
tags = {
Environment = var.env
}
}
resource "random_password" "rng" {
length = 16
special = false
keepers = {
cluster_identifier = var.cluster_identifier
}
}
The above file was originally a serverless MySQL 5.7 service using Aurora V1. I modified this existing main.tf file using these resources:
- GitHub issue: https://github.com/hashicorp/terraform-provider-aws/issues/24349
- Terraform docs for
aws_rds_cluster - Terraform docs for
aws_rds_cluster_instance
The terraform plan goes fine. When running terraform apply this error is present:
module.aurora.aws_rds_cluster.database: Creating...
╷
│ Error: error creating RDS cluster: InvalidParameterValue: The engine mode serverless you requested is currently unavailable.
│ status code: 400, request id: 060f8bce-4bc4-4462-9735-78495ecaf308
│
│ with module.aurora.aws_rds_cluster.database,
│ on modules/aws/rds/main.tf line 1, in resource "aws_rds_cluster" "database":
│ 1: resource "aws_rds_cluster" "database" {
│
╵
I can't infer much from this error, I'm guessing something isn't supporting this since the AWS provider v4.12.0 was released yesterday. I assume it could also be the version of Terraform itself, but again, I believe Terraform v0.15.4 is compatible with the v4.12.0 of the AWS provider.
My main goal is to switch the service from MySQL 5.7 serverless to MySQL 8.0 serverless.