![](/img/trans.png)
[英]ec2 instances created by a launch template in auto-scaling group are not being registered with the target group
[英]Specifying multiple metrics in EC2 Auto Scaling Group Target Tracking thru Terraform
我正在尝试在 Terraform 中的 AWS 文档中对 SQS 队列大小示例实施 EC2 缩放。使用来自 terraform-aws-modules 的自动缩放模块。 我已经在没有策略的情况下成功创建了 ASG(自动缩放组)。
我尝试添加示例中指定的三个指标:
scaling_policies = {
scale_on_sqs_queue_policy = {
policy_type = "TargetTrackingScaling"
target_tracking_configuration = {
target_value = 100
metric_data_queries = {
expression = "m1 / m2"
id = "e1"
label = "Calculate the backlog per instance"
return_data = true
}
customized_metric_specification = {
metric_dimension = {
name = "QueueName"
value = "my-sqs-queue"
}
metric_name = "ApproximateNumberOfMessagesVisible"
namespace = "AWS/SQS"
statistic = "Sum"
}
customized_metric_specification = {
metric_dimension = {
name = "AutoScalingGroupName"
value = "my_autoscaling_group_name"
}
metric_name = "GroupInServiceInstances"
namespace = "AWS/Autoscaling"
statistic = "Average"
}
}
}
}
但是,Terraform 仅添加了第一个customized_metric_specification
:
module.my_autoscaling_group.aws_autoscaling_policy.this["scale_on_sqs_queue_policy"] 将被创建
resource "aws_autoscaling_policy" "this" { arn = (known after apply) autoscaling_group_name = "my_autoscaling_group_name" enabled = true id = (known after apply) metric_aggregation_type = (known after apply) name = "scale_on_sqs_queue_policy" policy_type = "TargetTrackingScaling" target_tracking_configuration { disable_scale_in = false target_value = 100 customized_metric_specification { metric_name = "GroupInServiceInstances" namespace = "AWS/Autoscaling" statistic = "Average" metric_dimension { name = "AutoScalingGroupName" value = "my_autoscaling_group_name" } } } }
计划:1增加,0改变,0破坏。
度量数学查询也被完全忽略。 这也反映在 AWS 控制台中:
我的问题是,在 Terraform 中为 EC2 ASG 定义动态策略时如何使用多个指标? 它似乎在规范中作为多个 TargetTrackingMetricDataQuery 对象。
我还尝试将customized_metric_specification
设为数组或 object,这会导致如下错误:
// [...]
target_tracking_configuration = {
target_value = 100
customized_metric_specification = {
m1 = {
metric_dimension = {
name = "QueueName"
value = "my-sqs-queue"
}
metric_name = "ApproximateNumberOfMessagesVisible"
namespace = "AWS/SQS"
statistic = "Sum"
},
m2 = {
metric_dimension = {
name = "AutoScalingGroupName"
value = "my_autoscaling_group_name"
}
metric_name = "GroupInServiceInstances"
namespace = "AWS/Autoscaling"
statistic = "Average"
}
}
}
// [...]
错误:不支持的属性
on.terraform/modules/my_autoscaling_group/main.tf 第 723 行,在资源“aws_autoscaling_policy”“this”中:
723:
metric_name = customized_metric_specification.value。 指标名称
customized_metric_specification.value是 object,有 2 个属性
这个 object 没有名为“metric_name”的属性。
我在发布之前咨询了这些来源:
aws_autoscaling_policy
文档似乎允许这样做底层 Terraform 资源尚不支持此功能,这些资源是为应用程序自动缩放而不是 EC2 ASG 制作的。 但是,建议将其添加 到此 PR中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.