【问题标题】:Missing logic in tagging with Terraform (AWS)使用 Terraform (AWS) 进行标记时缺少逻辑
【发布时间】:2020-12-27 06:33:30
【问题描述】:

我在 AWS 中为网络接口创建标签时遇到了问题

我创建了一个aws_ec2_tag 资源,并用嵌套的可用区名称标记了每个创建的网络接口,但是,标记 的行为与预期不同(如图所示)。

AWS 网络接口

目前的样子:

UNMANAGED | EU-WEST-1A  eu-west-1b
UNMANAGED | EU-WEST-1B  eu-west-1c
UNMANAGED | EU-WEST-1C  eu-west-1a

预期外观:

UNMANAGED | EU-WEST-1A  eu-west-1a
UNMANAGED | EU-WEST-1B  eu-west-1b
UNMANAGED | EU-WEST-1C  eu-west-1c

这里是main.tf

resource "aws_ec2_tag" "def_eni_sqs_private" {
   count        = length(var.availability_zones)
   resource_id  = element(flatten([for interface in aws_vpc_endpoint.sqs: interface.network_interface_ids]), count.index)
   key          = "Name"
   value        = join(" | ", [ UNMANAGED, upper(element(var.availability_zones, count.index)) ])
}

请帮我解决这个逻辑

这里要求的是变量availability_zones

variable "availability_zones" { 
    type = list(string)
    default = data.aws_availability_zones.network_zones.names
}

【问题讨论】:

  • var.availability_zones 的排序似乎不正确。能否请您添加定义var.availability_zones 的代码?
  • Hello @DennisTraub var.availability_zones 是一个简单的数据语句,但无论如何我已经添加了变量
  • 您是否尝试为 sqs 标记接口端点类型 (aws_vpc_endpoint.sqs)?
  • 嗨,@AsriBadlah!是的,已被标记,但不是我所期望的

标签: amazon-web-services terraform terraform-provider-aws


【解决方案1】:

正如我在这一行中看到的 count = length(var.availability_zones) 您认为接口的数量与 Azs 的数量相同 但是,如果您在同一个 AZ 有多个接口,我认为应该是 count = length(aws_vpc_endpoint.sqs.network_interface_ids)

下一行中的另一个是 aws_vpc_endpoint.sqs.network_interface_ids 的返回类型是一个集合而不是 alist,因此您可以将其转换为一个列表。 最后一个是从接口本身读取 AZ 的值,所以你的代码可以是这样的:

data "aws_network_interface" "transfer_eni" {
  for_each = aws_vpc_endpoint.sqs.network_interface_ids
  id = each.value
}

resource "aws_ec2_tag" "def_eni_sqs_private" {
  count        = length(aws_vpc_endpoint.sqs.network_interface_ids)
  resource_id  = 
  data.aws_network_interface.transfer_eni[keys(data.aws_network_interface.transfer_eni)[count.index]].id
  key          = "Name"
  value        = join(" | ", [ UNMANAGED, upper
 (data.aws_network_interface.transfer_eni[keys(data.aws_network_interface.transfer_eni 
   )[count.index]].availability_zone) ])}

【讨论】:

  • 谢谢你,@Asri Badlah!只是一个问题我错过了你映射var.availability_zone的部分,如果可能的话,请你标记变量,再次感谢你
猜你喜欢
  • 2019-12-29
  • 2019-12-08
  • 1970-01-01
  • 1970-01-01
  • 2020-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-04
相关资源
最近更新 更多