Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services Terraform-创建多个存储桶_Amazon Web Services_Amazon S3_Terraform - Fatal编程技术网

Amazon web services Terraform-创建多个存储桶

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

创建一个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 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"
}