質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Terraform

Terraformは、インフラ構築のためのツールです。AWS/DigitalOcean/GoogleCloudといった様々なインフラに対応。インフラ構成のコード管理や変更の作業などの手間を自動化し、インフラ構築の効率化を図ることができます。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

1回答

2589閲覧

terraform:S3フォルダ(プレフィックス)の作成

ttoo

総合スコア126

Terraform

Terraformは、インフラ構築のためのツールです。AWS/DigitalOcean/GoogleCloudといった様々なインフラに対応。インフラ構成のコード管理や変更の作業などの手間を自動化し、インフラ構築の効率化を図ることができます。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2022/10/01 06:25

S3バケット作成時に、フォルダ(プレフィックス)も作成したいと考えております。
ここで、S3のフォルダを作成するオプションがわからずご教示ください。
以下のコードはエラーとなりました。(エラー箇所:prefix = "analytics/")

https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/s3_bucket#attributes-reference

resource "aws_s3_bucket" "athena_log_s3" { bucket = "${var.project}-athena-log-${var.env}" acl = "private" prefix = "analytics/" # S3バケットのデフォルト暗号化 server_side_encryption_configuration { rule { apply_server_side_encryption_by_default { kms_master_key_id = "aws/s3" sse_algorithm = "aws:kms" } } } tags = { Name = "${var.project}-athena-log-${var.env}" } } resource "aws_s3_bucket_public_access_block" "athena_log_s3_block3" { bucket = aws_s3_bucket.athena_log_s3.id block_public_acls = true block_public_policy = true ignore_public_acls = true restrict_public_buckets = true }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

フォルダの実体はサイズ0のオブジェクトなので aws_s3_objectでできそうです。(未検証です)

tf

1resource "aws_s3_object" "object" { 2 bucket = "${var.project}-athena-log-${var.env}" 3 key = "analytics/" 4}

aws_s3_object | Resources | hashicorp/aws | Terraform Registry

Amazon S3における「フォルダ」という幻想をぶち壊し、その実体を明らかにする | DevelopersIO

追記

確認した結果、想定どおりに動作しました。

イメージ説明

コード

tf

1terraform { 2 required_version = ">= 1.3" 3} 4 5provider "aws" { 6 region = "ap-northeast-1" 7} 8 9########################################################## 10# variable 設定 11########################################################## 12# 変数 13variable "project" { 14 default = "20221001" 15} 16variable "env" { 17 default = "test" 18} 19 20resource "aws_s3_bucket" "athena_log_s3" { 21 bucket = "${var.project}-athena-log-${var.env}" 22 acl = "private" 23 24 # S3バケットのデフォルト暗号化 25 server_side_encryption_configuration { 26 rule { 27 apply_server_side_encryption_by_default { 28 #kms_master_key_id = "aws/s3" 29 #sse_algorithm = "aws:kms" 30 # 検証環境にaws/s3のキーがなかったので改変 31 sse_algorithm = "AES256" 32 } 33 } 34 } 35 tags = { 36 Name = "${var.project}-athena-log-${var.env}" 37 } 38} 39 40# フォルダ 41resource "aws_s3_object" "object" { 42 bucket = aws_s3_bucket.athena_log_s3.bucket 43 key = "analytics/" 44}

投稿2022/10/01 07:40

編集2022/10/01 10:13
jhashimoto

総合スコア838

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ttoo

2022/10/01 08:17

「key」も試したのですが失敗しました。。。。。。。。。。。。
jhashimoto

2022/10/01 09:24

こちらでは想定通りに動作しました。回答に検証結果を追記しました。コードも載せたので参考にしてください。
ttoo

2022/10/01 12:37

なるほど「aws_s3_object」を使うのか! すいません勘違いしてました💦 ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問