我查看了一些文档以及有关 terraform 的 udemy 课程,但我不明白如何做我想做的事情。我想创建一个 for 循环,并在其中创建一个 S3 事件通知,创建一个侦听该通知的 Sns 主题,创建一个 Sqs 队列,然后将该队列订阅到该 sns 主题。似乎 terraform 中的 for 循环不够先进,无法做到这一点。我错了,是否有任何文档或示例可以解释如何在此用例中使用 for 循环?
提前致谢。
w33*_*33b 10
该for_each示例如下所示:
variable names {
type = list(string)
description = "List of names"
}
resource "aws_example_resource" "bar" {
for_each = toset(var.names)
name = each.key
}
Run Code Online (Sandbox Code Playgroud)
这将创建 N 个资源(名称长度),使用 来指定每次each.key分配的值name
创建 AWS VPC 子网的示例然后将它们提供给 AWS EC2 实例。
resource "aws_subnet" "public" {
count = length(var.public_subnet_cidr_blocks)
vpc_id = var.vpc_id
cidr_block = var.public_subnet_cidr_blocks[count.index]
}
resource "aws_instance" "public_ec2" {
count = length(var.public_subnet_ids)
subnet_id = var.public_subnet_ids[count.index]
ami = var.ami_id
instance_type = "t2.micro"
tags = {
Name = "PublicEC2${count.index}}"
}
provisioner "local-exec" {
command = <<EOF
echo "Public EC2 ${count.index} ID is ${self.id}"
EOF
}
}
Run Code Online (Sandbox Code Playgroud)
没有像下面这样的语法来创建资源。
[ for name in var.names:
aws_s3_bucket {...}
aws_sns_topic {...}
]
Run Code Online (Sandbox Code Playgroud)
For 表达基本上是为了价值,而不是为了创造资源。
for 表达式通过转换另一个复杂类型值来创建一个复杂类型值。
要创建多个资源,如下文中使用 for_each 或 count。
默认情况下,一个资源块配置一个真实的基础设施对象。但是,有时您希望管理多个类似的对象,例如固定的计算实例池。Terraform 有两种方法可以做到这一点: count 和 for_each。
| 归档时间: |
|
| 查看次数: |
5785 次 |
| 最近记录: |