40

このリンクを使用して、Amazon S3 でバケットを作成できました。

次のコードを使用してバケットを作成しました。

resource "aws_s3_bucket" "b" {
    bucket = "my_tf_test_bucket"
    acl    = "private"
}

ここで、バケット内にフォルダーを作成したいと思いましたFolder1

S3 オブジェクトを作成するためのリンクを見つけました。ただし、これには必須のパラメーターがありますsource。私の意図は S3 バケット内にフォルダーを作成することなので、この値が何を意味するのかわかりません。

4

6 に答える 6

77

Mac または Linux で terraform を実行するには、次のようにします。

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

Windows を使用している場合は、空のファイルを使用できます。

s3 にフォルダーがないことについて衒学的な人もいますが、キー プレフィックス (フォルダーとも呼ばれる) のオブジェクト プレースホルダーを使用すると作業が楽になる操作がいくつかあります。たとえば、s3同期のように。

于 2017-03-10T21:50:03.913 に答える
18

S3 はフォルダーをサポートしていません。オブジェクトには、フォルダーのように見えるスラッシュ付きのプレフィックス名を付けることができますが、それはオブジェクト名の一部にすぎません。そのため、S3 にはフォルダーのようなものがないため、terraform などでフォルダーを作成する方法はありません。

http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html http://docs.aws.amazon.com/AWSImportExport/latest/DG/ManipulatingS3KeyNames.html

ふりをしたい場合は、「Folder1/」という名前のバケットにゼロバイト オブジェクトを作成できますが、これは必須ではありません。「Folder1/File1」のようなキー名を持つオブジェクトを作成するだけで機能します。

于 2016-05-27T21:14:16.570 に答える
3

古い答えですが、フォルダーでキーを指定すると(まだ存在しません)、テラフォームはフォルダーを自動的に作成します

terraform {
  backend "s3" {
    bucket  = "mysql-staging"
    key     = "rds-mysql-state/terraform.tfstate"
    region  = "us-west-2"
    encrypt = true
  }
}
于 2017-08-11T15:10:17.587 に答える