从列表中获取元素 Terraform

ami*_*mir 3 list terraform

我有一个关于 Terraform 的小问题,但我在网上找不到解决方案。想象一下以下场景:

data "aws_vpc" "vpc_name" {
  id = var.vpc_id
}

data "aws_subnet_ids" "vpc_subnets" {
  vpc_id = data.aws_vpc.vpc_name.id
}
Run Code Online (Sandbox Code Playgroud)

想象一下我创建一个如下所示的 EC2 实例:

resource "aws_instance" "ec2_test" {
  ...
  ami                  = ...
  instance_type        = ...
  subnet_id            = element(tolist(data.aws_subnet_ids.vpc_subnets.ids), 1)
  ...
Run Code Online (Sandbox Code Playgroud)

在子网中,我使用 element 函数选择了一个元素,并将子网 id 列表转换为列表。

现在,我有两个问题:

  1. 是否可以选择第一个子网而不进行列表转换(tolist)?我想知道为什么我可以做类似 data.aws_subnet_ids.vpc_subnets[1] 或类似的事情?

  2. 如何从子网列表中检索随机 ID?

问候,

Dan*_*ego 15

您需要 tolist 操作,因为 aws_subnet_ids.ids 是一个集合。你可以把它清理一下然后说tolist(data.aws_subnet_ids.vpc_subnets.ids)[0]

要获取随机数,请使用随机提供程序