首页 > 解决方案 > 使用 for_each 与资源的 Terraform 相关性

问题描述

我正在使用以下代码将默认子网分配给 ASG

resource "aws_autoscaling_group" "ecs_spot_asg" {
  for_each = data.aws_subnet_ids.all_subnets.ids
.... etc...

子网通过

data "aws_subnet_ids" "all_subnets" {
  vpc_id = data.aws_vpc.default.id
}

下面我有 aws_autoscaling_policy 并且我被困在如何将一个与另一个相关联

resource "aws_autoscaling_policy" "ecs_cluster_scale_policy" {
  autoscaling_group_name = aws_autoscaling_group.ecs_spot_asg.name

得到错误:

由于 aws_autoscaling_group.ecs_spot_asg 设置了“for_each”,因此必须在特定实例上访问其属性。

例如,要与引用资源的索引相关联,请使用:aws_autoscaling_group.ecs_spot_asg[each.key]

这应该如何修改?

标签: amazon-web-servicesterraformterraform-provider-aws

解决方案


我的错误是将 [] 添加到 vpc_zone_identifier = data.aws_subnet_ids.all_subnets.ids

因此,应该是 vpc_zone_identifier = data.aws_subnet_ids.all_subnets.ids 而不是 vpc_zone_identifier = [data.aws_subnet_ids.all_subnets.ids]


推荐阅读