为什么 terraform 在 s3 存储桶中创建一个空目录?

Why does terraform create an empty directory in the s3 bucket?

我设置了一个 Terraform,它创建了一个 s3 存储桶和存储桶中的子目录。 由于某种原因,在每个目录中都创建了一个空的 / 存储桶。

s3_bucket:
-/
-folder1:-/
         -some file
-folder2:-/

以此类推,每个目录都有一个空/。 这会导致我接下来的几个步骤出现问题,为什么要这样创建?如何创建没有空 / 的 s3 和文件夹?

resource "aws_s3_bucket_object" "object" {
  bucket = "${aws_s3_bucket.s3_ob.id}"
  key    = "folder1/"
  source = "dummy.txt"
}

resource "aws_s3_bucket_object" "object2" {
  bucket = "${aws_s3_bucket.s3_ob.id}"
  key    = "/folder2/"
  source = "dummy.txt"
}

发生这种情况是因为您的密钥以 / 结尾。您的代码所做的是将 dummy.txt 的内容写入 folder1/folder2/ 处的键。 S3 是键值对象存储而不是文件系统。目录的概念只是我们通过用斜杠字符 / 拆分键并将每个步骤称为目录来逻辑地引入的东西,所以在这种情况下是的,已经创建了 folder1 和 folder2 并且由于斜杠之后没有任何内容文件名几乎是空的。

我假设你想要做的只是给你的文件一些传统文件系统意义上的名字,比如不要以 /.

结束你的键名
resource "aws_s3_bucket_object" "object" {
  bucket = "${aws_s3_bucket.s3_ob.id}"
  key    = "folder1/dummy.txt"
  source = "dummy.txt"
}

resource "aws_s3_bucket_object" "object2" {
  bucket = "${aws_s3_bucket.s3_ob.id}"
  key    = "/folder2/dummy.txt"
  source = "dummy.txt"
}