如何在现有 AWS 存储桶中创建多个文件夹
how to create multiple folders inside an existing AWS bucket
如何使用 Terraform 在现有存储桶中创建多个文件夹。
示例: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 用户的提示,但这应该适合您。
比使用空文件 "source"
稍微容易一些
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"
}
如何使用 Terraform 在现有存储桶中创建多个文件夹。 示例: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 用户的提示,但这应该适合您。
比使用空文件 "source"
稍微容易一些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"
}