Amazon web services 如何在现有AWS bucket中创建多个文件夹

Amazon web services 如何在现有AWS bucket中创建多个文件夹,amazon-web-services,amazon-s3,terraform,Amazon Web Services,Amazon S3,Terraform,如何使用terraform在现有bucket中创建多个文件夹。 示例:bucket/folder1/folder2 resource "aws_s3_bucket_object" "folder1" { bucket = "${aws_s3_bucket.b.id}" acl = "private" key = "Folder1/" source = "/dev/null" } 应用与创建第一个目录相同的逻辑 resource "aws_s3_buc

如何使用terraform在现有bucket中创建多个文件夹。 示例:bucket/folder1/folder2

resource "aws_s3_bucket_object" "folder1" {
    bucket = "${aws_s3_bucket.b.id}"
    acl    = "private"
    key    = "Folder1/"
    source = "/dev/null"
}

应用与创建第一个目录相同的逻辑

resource "aws_s3_bucket_object" "folder1" {
    bucket = "${aws_s3_bucket.b.id}"
    acl    = "private"
    key    = "Folder1/Folder2/"
    source = "/dev/null"
}

虽然Nate的答案是正确的,但这将导致大量代码重复。在我看来,一个更好的解决方案是使用一个列表并在其上循环

创建包含可能文件夹列表的变量(variable.tf文件):

variable "s3_folders" {
  type        = "list"
  description = "The list of S3 folders to create"
  default     = ["folder1", "folder2", "folder3"]
}
然后更改您已有的代码:

resource "aws_s3_bucket_object" "folders" {
    count   = "${length(var.s3_folders)}"
    bucket = "${aws_s3_bucket.b.id}"
    acl    = "private"
    key    = "${var.s3_folders[count.index]}/"
    source = "/dev/null"
}

没有针对windows用户的提示,但这应该适合您

比使用空文件作为“源”稍微容易一些

resource "aws_s3_bucket_object" "output_subdir" {
  bucket = "${aws_s3_bucket.file_bucket.id}"
  key    = "output/"
  content_type = "application/x-directory"
}

resource "aws_s3_bucket_object" "input_subdir" {
  bucket = "${aws_s3_bucket.file_bucket.id}"
  key    = "input/"
  content_type = "application/x-directory"
}