Amazon web services Terraform 13,如何引用使用count的模块的单个实例的输出
我有一个创建多个存储桶的模块:Amazon web services Terraform 13,如何引用使用count的模块的单个实例的输出,amazon-web-services,terraform,Amazon Web Services,Terraform,我有一个创建多个存储桶的模块: module "s3_bucket" { source = "terraform-aws-modules/s3-bucket/aws" count = length(var.buckets) bucket = "bucket-${var.buckets[count.index]}" } 我只想将桶策略应用于其中一个实例: resource "aws_s3_bucket_po
module "s3_bucket" {
source = "terraform-aws-modules/s3-bucket/aws"
count = length(var.buckets)
bucket = "bucket-${var.buckets[count.index]}"
}
我只想将桶策略应用于其中一个实例:
resource "aws_s3_bucket_policy" "policy" {
bucket = module.s3_bucket.THAT_ONE_BUCKET_BY_NAME
policy = jsonencode(
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::1111111111:role/access-role"
]
},
"Action": [
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::THAT_ONE_BUCKET_BY_NAME",
"arn:aws:s3:::THAT_ONE_BUCKET_BY_NAME/*"
]
}
]
}
)
在terraform 13中,正确的方法是什么?当您在这个
模块
块中使用计数
时,符号模块.s3_bucket
将成为一个对象列表,而不仅仅是一个表示一组输出的单个对象
因此,为了只访问其中一个的名称,您需要知道要使用的名称的索引,并使用普通索引语法进行访问:
module.s3_bucket[0].name
(以上假设您的模块有一个
输出“name”
,它返回bucket名称。)您必须使用索引,例如0、1、2,具体取决于长度(变量bucket)
。比如说,
bucket = module.s3_bucket[0].name