■ はじめに
https://dk521123.hatenablog.com/entry/2023/04/05/000224
https://dk521123.hatenablog.com/entry/2023/04/08/220411
の続き。 前回は、AWS Glueを扱ったが、 Glue JobのスクリプトやJarなどのファイルを S3上に置く必要がでてきたので、 Terraform でどうするかを調べてみた。
目次
【1】公式ドキュメント 【2】サンプル 例1:S3バケットにファイルをアップロードする 例2:複数ファイルをアップロードする 【3】Tips 1)${path.module} 【4】AWSへのデプロイ手順
【1】公式ドキュメント
* S3上にファイルを置くには「aws_s3_object」が必要
aws_s3_object
https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/s3_object
補足:aws_s3_bucket_object
* 「aws_s3_bucket_object」は、非推奨APIで使うと、警告がでる => 警告が「Use aws_s3_object instead」的にでる => 以下のサイト参照。
aws_s3_bucket_object ()
https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/s3_bucket_object
【2】サンプル
例1:S3バケットにファイルをアップロードする
# [0]-1 To define setting values locals { env = "dev" # or stage or prod target_s3_bucket_name = "your-bucket-name" glue_job_script_class = "com.demo.Hello" glue_job_script_jar_location = "s3://your-bucket-name/demo/glue/utils.jar" glue_job_templocation = "s3://your-bucket-name/temp/" } # [0]-2:To specify AWS provider "aws" { region = "us-west-2" default_tags { tags = { env = local.env } } } # [1] Update a file resource "aws_s3_object" "update_hello_file" { bucket = local.target_s3_bucket_name key = "profile" acl = "private" # or can be "public-read" source = "${path.module}/sample/hello.txt" etag = md5(filebase64("${path.module}/sample/hello.txt")) }
例2:複数ファイルをアップロードする
resource "aws_s3_object" "update_hello_files" { for_each = fileset("sample/", "*") bucket = local.target_s3_bucket_name key = each.value source = "${path.module}/sample/${each.value}" etag = md5(filebase64("${path.module}/sample/${each.value}")) }
【3】Tips
1)${path.module}
* モジュールのディレクトリを指す
https://y-ni-shi.hatenablog.com/entry/2020/06/22/235254
【4】AWSへのデプロイ手順
[1] 環境変数 AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY/AWS_SESSION_TOKEN をセットする(※1を参照のこと) [2] terraformコマンドを実行していく ~~~~~~~~~~~~~~~ terraform init terraform plan terraform apply ~~~~~~~~~~~~~~~
※1:Linuxの場合
export AWS_ACCESS_KEY_ID=XXXXXX export AWS_SECRET_ACCESS_KEY=XXXXXX export AWS_SESSION_TOKEN=XXXXXX
※1:Windowsの場合
set AWS_ACCESS_KEY_ID=XXXXXX set AWS_SECRET_ACCESS_KEY=XXXXXX set AWS_SESSION_TOKEN=XXXXXX
参考文献
https://linuxopsys.com/topics/upload-files-to-s3-using-terraform
関連記事
Terraform ~ 環境構築編 ~
https://dk521123.hatenablog.com/entry/2023/04/05/000224
Terraform ~ AWS IAM ~
https://dk521123.hatenablog.com/entry/2023/04/12/214311
Terraform ~ AWS Glue ~
https://dk521123.hatenablog.com/entry/2023/04/08/220411
Terraform ~ AWS Secrets Manager ~
https://dk521123.hatenablog.com/entry/2023/04/11/152801
Terraform ~ Docker ~
https://dk521123.hatenablog.com/entry/2023/04/10/193239
Amazon S3 ~ Boto3編 ~
https://dk521123.hatenablog.com/entry/2019/10/21/230004