Masteries

技術的なことや仕事に関することを書いていきます.

小ネタ: TerraformでS3にファイルを設置する

小ネタです. TerraformでS3のbucketを作るとき, ついでに何かしらのファイルを設置したいというシーンがあるでしょう. そういうときは...

resource "aws_s3_bucket" "sample" {
    bucket = "sample-bucket"
    acl = "private"
}

resource "aws_s3_bucket_object" "for_monitoring" {
    bucket = "sample-bucket"
    key = "file"
    source = "/path/to/file"
}

こういう感じで, aws_s3_bucket でbucketを作った後, そのbucketに aws_s3_bucket_object をしてあげると良いです. この場合, /path/to/file に設置されたファイルが, bucket(sample-bucket)にfileという名前で設置されます.

また, source ではいわば「ファイルのアップロード」的な挙動になりますが, 「ファイルを用意したくない(ファイルの中身を.tfの中で設定したい)」という場合は, 次のように content を使うと良いです.

resource "aws_s3_bucket_object" "for_monitoring" {
    bucket = "sample-bucket"
    key = "file"
    content = "hello, s3!"
}

こうすれば, bucket(sample-bucket)に, fileという名前で, 中身がhello, s3!となったファイルが設置されます.