在 terraform 中获取元组的第一个元素

斧头车

我正在尝试仅使用一个子网部署我的 EKS 节点,但我不知道如何只为资源提供一个。我给你看我的代码:

resource "aws_eks_node_group" "managed_workers" {
  for_each = var.nodegroups[terraform.workspace]

  cluster_name    = aws_eks_cluster.cluster.name
  node_group_name = each.value.Name
  node_role_arn   = aws_iam_role.managed_workers.arn
  subnet_ids      = aws_subnet.private.*.id

另一方面,我有一个正常的任务来创建子网并将输出提供给我的所有代码:

resource "aws_subnet" "private" {
  count = length(local.subnet_priv)
  vpc_id = var.vpc_id[terraform.workspace]
  cidr_block = local.subnet_priv[count.index]
  availability_zone = element(lookup(var.availability_zones, terraform.workspace), count.index)
  map_public_ip_on_launch = false

所以..我不知道如何从我的 subnet_ids 参数中只获取元组的第一个子网。现在,正如你所看到的,我得到了所有这些,但我尝试了不同的方法,但没有成功(aws_subnet.private[0].*.id , aws_subnet.private[0].id, etc)

任何的想法?

非常感谢!

埃尔文·西拉吉

EKS 节点组subnet_ids参数需要一个元组。在原始示例中subnet_ids = aws_subnet.private.*.id,使用了 splat 运算符。矛操作符 ( *) 本质上创建了一个包含所有可用资源的元组,在我们的例子中是所有可用的子网。

如果我们只想从所有可用的子网中传递一个子网,我们必须创建一个具有单个元素的元组。我们可以通过从所有现有元素中取出第一个元素来做到这一点,例如:

subnet_ids = [aws_subnet.private[0].id]

虽然这可能有效,但我个人并不认为它是优雅的解决方案。当然,实现相同结果的更好方法是修改local.subnet_priv元组以仅包含一个子网 ID。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

获取Python列表中每个元组的第一个元素

如何获取元组列表中的第一个元素?

如果元组具有相同的第一个元素,如何聚合元组列表中的元素?

Javascript检查元组的第一个元素是否存在于元组数组中

按元组的第一个元素分组列表

Python从列表中删除元组的第一个元素

Scala:仅映射元组中的第一个元素

从Python元组中弹出第一个元素

在Prolog中获取元组的第一个/第二个元素

返回元组的第一个元素

获取元组列表的第一个元素

Erlang:获取列表中每个元组的第一个元素

Ansible从列表中获取第一个元素

如何在terraform的嵌套列表中切片第一个元素

从Terraform列表中获取元素

向后切片元组-如何处理获取第一个元素?

从列表中的3个元组中获取第一个和第二个元素-Haskell

Python:基于第一个元素对数组中的元组进行排序

在列表中删除元组的第一个元素

Haskell:在元组列表中查找第一个元素为x的元组

mdx请求获取带有datetime的元组的第一个元素

刷卡中的数组获取第一个元素

元组列表中每个第一个元素的 scala 获取第二个元素的最大值

元组列表到元组 C# 列表中的第一个元素列表

从第一个 Terraform 获取输出并在第二个 Terraform 中使用

如何提取每个子列表中每个元组的第一个元素?

如何通过类方法迭代元组列表中每个元组的第一个元素?

python - 从元组中提取第一个元素

获取包含元组的列表的索引,其中元组的第一个元素与模式匹配