【问题标题】:how to create multiple folders inside an existing AWS bucket如何在现有 AWS 存储桶中创建多个文件夹
【发布时间】:2018-10-08 12:56:45
【问题描述】:

如何使用 terraform 在现有存储桶内创建多个文件夹。 例如:bucket/folder1/folder2

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

【问题讨论】:

    标签: amazon-web-services amazon-s3 terraform


    【解决方案1】:

    虽然 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"
    }
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        没有针对 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"
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-07-02
          • 1970-01-01
          • 2020-07-29
          • 1970-01-01
          • 1970-01-01
          • 2016-12-22
          • 1970-01-01
          相关资源
          最近更新 更多