CDKTF 中的数据源

Data sources in CDKTF

我正在尝试将我的一个简单堆栈从 HCL 复制到 TypeScript(使用 CDKTF),我在设置数据源以获取 AMI 列表时遇到问题。这就是我想要做的:

const amis = new ec2.DataAwsAmiIds(this, "ami-ids", {
  owners: ["amazon"],
  nameRegex: "^amzn2-ami-hvm-*-x86_64-ebs",
  filter: [{
    name: "name",
    values: ["amzn2-ami-hvm-*-x86_64-ebs"]
  }]
});

然后我尝试这样引用它:

const instance = new ec2.Instance(this, "instance", {
  instanceType: "t2.micro",
  ami: `${amis.id}`,
  ...

我遇到的问题是这个值将是一个令牌 (${TfToken[TOKEN.1]}),我如何从中获取字符串值以便能够将其传入?谢谢

同样的事情也适用于使用 TLS 提供商生成密钥对,这里是完整的 source code

ec2.DataAwsAmiIds 将具有 ids 的属性;在合成期间,您会看到它表示为令牌,但它将呈现为地形 JSON 中的地形参考。它是令牌的原因是因为它代表的信息只有 during/after Terraform 运行时,可以在此处查看更多信息:https://www.terraform.io/cdktf/concepts/tokens#tokens