我尝试使用terraform实现aws lambda函数。如何在data.archive_file之前运行命令zip文件夹在Terraform中?
我只是有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" ]
}
最近发生的变化对terraform弃用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" ]
}
我错过了什么吗?用最新版本做这件事的正确方法是什么?
Terraform:v0.7.11 OS:Win10
我认为你是对的,不可能只使用Terraform。 –