私はterraformを使ってawsラムダ関数を実装しようとします。data.archive_fileがTerraformのzipsフォルダの前にコマンドを実行するには?
ローカルプロビジョニングを持つnull_resource
と、すべての準備が完了した後にソースコードを圧縮するresource.archive_file
があります。
resource "null_resource" "deps" {
triggers = {
package_json = "${base64sha256(file("${path.module}/src/package.json"))}"
}
provisioner "local-exec" {
command = "cd ${path.module}/src && npm install"
}
}
resource "archive_file" "function" {
type = "zip"
source_dir = "${path.module}/src"
output_path = "${path.module}/function.zip"
depends_on = [ "null_resource.deps" ]
}
最近の変更はresource.archive_file
を非推奨テラフォームするために、そうdata.archive_file
を代わりに使用してください。残念ながら、data
はリソースより前に実行されるため、zipが作成された後は従属リソースからのローカルプロビジョーがウェイと呼ばれます。だから、コードはもはや警告を生成しませんが、まったく動作しません。
resource "null_resource" "deps" {
triggers = {
package_json = "${base64sha256(file("${path.module}/src/package.json"))}"
}
provisioner "local-exec" {
command = "cd ${path.module}/src && npm install"
}
}
data "archive_file" "function" {
type = "zip"
source_dir = "${path.module}/src"
output_path = "${path.module}/function.zip"
depends_on = [ "null_resource.deps" ]
}
私に何かが不足していますか?最近のバージョンでこれを行う正しい方法は何ですか?
テラフォーム:v0.7.11 OS:Win10
私はあなたが正しいと思うし、Terraformだけではできません。 –