🕌
[Terraform小ネタ] zip前のファイルの変更を検知して更新があればzip化する
前提
Lambda用じゃないです。
課題
CodeBuild で zip 化した buildspec.yml をアップロードする必要があるが、単純に Data Souce の archive_file だと、毎回Zip化が行われる。
そしてビルドする OS が同じなら sha が同じなので問題ないが、CIを回していると sha が異なってしまい、毎回違う zip と認識される。そうすると archive_file と連動している resource にも影響がでるので何とか改善したい問題。
どこかの記事で resource "null_resource"
を使う例を見たけど locals で表現することが推奨されるようになったので、新たに記録しておく。
hcl
resource "null_resource" "trigger" {
triggers = {
index = filebase64sha256("${path.module}/codebuild/buildspec.yml")
}
}
locals {
zip_name = "buildspec.zip"
trigger_id = null_resource.trigger.id
source_file = "${path.module}/codebuild/buildspec.yml"
}
data "archive_file" "buildspec" {
type = "zip"
output_path = ".terraform/${local.zip_name}"
source_file = local.source_file
}
Discussion