Amazon web services Terraform-创建多个存储桶
创建一个bucket非常简单Amazon web services Terraform-创建多个存储桶,amazon-web-services,amazon-s3,terraform,Amazon Web Services,Amazon S3,Terraform,创建一个bucket非常简单 resource "aws_s3_bucket" "henrys_bucket" { bucket = "${var.s3_bucket_name}" acl = "private" force_destroy = "true" } 起初,我以为可以为s3\u bucket\u name变量创建一个列表,但出现了一个错误: Error: bucket must
resource "aws_s3_bucket" "henrys_bucket" {
bucket = "${var.s3_bucket_name}"
acl = "private"
force_destroy = "true"
}
起初,我以为可以为s3\u bucket\u name
变量创建一个列表,但出现了一个错误:
Error: bucket must be a single value, not a list
-
如何在不复制代码的情况下创建多个存储桶?您可以使用以下组合(&I): 编辑:按照@ydaetskcoR的建议,您可以使用
列表[索引]
模式而不是元素
variable "s3_bucket_name" {
type = "list"
default = ["prod_bucket", "stage-bucket", "qa_bucket"]
}
resource "aws_s3_bucket" "henrys_bucket" {
count = "${length(var.s3_bucket_name)}"
bucket = "${var.s3_bucket_name[count.index]}"
acl = "private"
force_destroy = "true"
}
我建议在
元素(列表,索引)
语法上使用list[index]
语法,除非您确实需要能够在列表上循环(例如将实例分布在子网上或其他列表长度不等的地方)。@ydaetskcoR您可以提供一个示例。这一点很好。我已经更新了答案,以显示新的列表[索引]
syntax@ConorMongey@ydaetskcoR如何将策略附加到s3存储桶。我得到一个错误资源'aws\u iam\u policy.nexus\u user\u policy'找不到变量'aws\u iam\u policy.nexus\u user\u policy.arn'
执行此操作时,我得到错误:重复的提供程序配置
这是否意味着我需要为每个存储桶提供一个唯一的提供程序?
variable "s3_bucket_name" {
type = "list"
default = ["prod_bucket", "stage-bucket", "qa_bucket"]
}
resource "aws_s3_bucket" "henrys_bucket" {
count = "${length(var.s3_bucket_name)}"
bucket = "${element(var.s3_bucket_name, count.index)}"
acl = "private"
force_destroy = "true"
}
variable "s3_bucket_name" {
type = "list"
default = ["prod_bucket", "stage-bucket", "qa_bucket"]
}
resource "aws_s3_bucket" "henrys_bucket" {
count = "${length(var.s3_bucket_name)}"
bucket = "${var.s3_bucket_name[count.index]}"
acl = "private"
force_destroy = "true"
}