cmm*_*ser 18 directory amazon-s3 bucket amazon-web-services terraform
我能够使用此链接在亚马逊S3中创建一个桶.
我使用以下代码创建一个存储桶:
resource "aws_s3_bucket" "b" {
bucket = "my_tf_test_bucket"
acl = "private"
}
Run Code Online (Sandbox Code Playgroud)
现在我想在桶内创建文件夹,比方说Folder1
.
我找到了创建S3对象的链接.但这有一个强制性参数source
.我不确定这个值有什么,因为我的意图是在S3存储桶中创建一个文件夹.
小智 44
要在Mac或Linux上运行terraform,以下将执行您想要的操作
resource "aws_s3_bucket_object" "folder1" {
bucket = "${aws_s3_bucket.b.id}"
acl = "private"
key = "Folder1/"
source = "/dev/null"
}
Run Code Online (Sandbox Code Playgroud)
如果您在Windows上,则可以使用空文件.
虽然人们对于没有文件夹的s3会很迂腐,但是有很多操作都有一个对象占位符,用于键前缀(也称为文件夹)可以让生活更轻松.比如s3 sync,例如.
小智 24
这里的答案已经过时了,现在绝对可以通过 Terraform 在 S3 中创建一个空文件夹。使用aws_s3_object资源,如下所示:
resource "aws_s3_bucket" "this_bucket" {
bucket = "demo_bucket"
}
resource "aws_s3_object" "object" {
bucket = aws_s3_bucket.this_bucket.id
key = "demo/directory/"
}
Run Code Online (Sandbox Code Playgroud)
如果您不提供对象的源,那么 Terraform 将创建一个空目录。
重要 - 请注意尾部斜杠,这将确保您获得一个目录而不是空文件。
Kar*_*n B 20
S3不支持文件夹.对象可以使用带有斜杠的前缀名称,这些斜杠看起来像文件夹,但这只是对象名称的一部分.所以没有办法在terraform或其他任何东西中创建一个文件夹,因为在S3中没有文件夹这样的东西.
http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html http://docs.aws.amazon.com/AWSImportExport/latest/DG/ManipulatingS3KeyNames.html
如果你想假装,你可以在名为"Folder1 /"的存储桶中创建一个零字节对象,但这不是必需的.你可以创建具有键名称的对象,如"Folder1/File1",它将起作用.
Ilh*_*cas 18
实际上,有一种规范的方式来创建它,而不依赖于操作系统,通过检查 UI 上的网络,您会看到内容标题,如:https : //stackoverflow.com/users/1554386/alastair-mccormack 所述,
现在 S3 确实支持从 UI 中可见的文件夹。
所以这是你如何实现它:
resource "aws_s3_bucket_object" "base_folder" {
bucket = "${aws_s3_bucket.default.id}"
acl = "private"
key = "${var.named_folder}/"
content_type = "application/x-directory"
kms_key_id = "key_arn_if_used"
}
Run Code Online (Sandbox Code Playgroud)
请注意尾部斜杠,否则会创建一个空文件
以上已与 Windows 操作系统一起使用,以使用 terraform s3_bucket_object 成功创建文件夹。
归档时间: |
|
查看次数: |
14844 次 |
最近记录: |