如何在Terraform中调整AWS DynamoDB Auto Scaling读容量预置范围为1-10?
问题分析
你遇到的读容量预置范围显示为5-10的原因是:模块内的aws_appautoscaling_target.table_read资源,其min_capacity绑定的是你传入的read_capacity变量值(5),而非autoscaling_read配置块里的min_capacity(1)。
解决方案
有两种可行的修改方式,根据你的业务需求选择:
方式一:直接调整主配置的初始读容量(无需修改模块代码)
将主模块中的read_capacity从5改为1,这样自动扩缩容的最小容量会同步变为1,同时初始读容量也会设置为1。修改后的代码如下:
module "dynamodb_table" { source = "terraform-aws-modules/dynamodb-table/aws" version = "3.1.1" name = var.dbname hash_key = var.hash_key billing_mode = "PROVISIONED" read_capacity = 1 # 修改此处为1 write_capacity = 1 autoscaling_enabled = true autoscaling_read = { scale_in_cooldown = 50 scale_out_cooldown = 40 target_value = 70 min_capacity = 1 max_capacity = 10 } autoscaling_write = { scale_in_cooldown = 50 scale_out_cooldown = 40 target_value = 70 min_capacity = 1 max_capacity = 10 } attributes = [ { name = "user_id" type = "S" } ] tags = { Terraform = "true" Environment = var.environment } }
方式二:修改模块内的扩缩容目标配置(保留初始读容量5)
如果需要保留初始读容量为5,同时让自动扩缩容范围是1-10,需要修改模块内的aws_appautoscaling_target.table_read资源,将min_capacity改为从autoscaling_read配置块取值:
resource "aws_appautoscaling_target" "table_read" { count = var.create_table && var.autoscaling_enabled && length(var.autoscaling_read) > 0 ? 1 : 0 max_capacity = var.autoscaling_read["max_capacity"] min_capacity = var.autoscaling_read["min_capacity"] # 修改此处为从autoscaling_read取值 resource_id = "table/${aws_dynamodb_table.autoscaled[0].name}" scalable_dimension = "dynamodb:table:ReadCapacityUnits" service_namespace = "dynamodb" }
注意:这种方式需要你自定义模块(比如fork原模块后修改),无法直接使用官方模块的3.1.1版本。
内容的提问来源于stack exchange,提问作者user20208419
相关产品推荐
相关产品推荐

