gpt4 book ai didi

terraform - 如何在 Terraform 中的 data.archive_file zips 文件夹之前运行命令?

转载 作者:行者123 更新时间:2023-12-02 08:00:42 24 4
gpt4 key购买 nike

我尝试使用 terraform 实现 aws lambda 函数。

我只是拥有具有本地配置程序的 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" ]
}

我错过了什么吗?使用最新版本执行此操作的正确方法是什么。

地形:v0.7.11操作系统:Win10

最佳答案

事实证明,Terraform 核心处理数据资源的 depends_on 的方式存在问题。报告了几个问题,其中一个位于 archive provider另一个在 the core .

存档提供程序问题中列出了以下解决方法。请注意,它使用 data.null_data_source 位于 null_resourcedata.archive_file 之间,这使其成为显式依赖项,而不是隐式依赖项与depends_on

resource "null_resource" "lambda_exporter" {
# (some local-exec provisioner blocks, presumably...)

triggers = {
index = "${base64sha256(file("${path.module}/lambda-files/index.js"))}"
}
}

data "null_data_source" "wait_for_lambda_exporter" {
inputs = {
# This ensures that this data resource will not be evaluated until
# after the null_resource has been created.
lambda_exporter_id = "${null_resource.lambda_exporter.id}"

# This value gives us something to implicitly depend on
# in the archive_file below.
source_dir = "${path.module}/lambda-files/"
}
}

data "archive_file" "lambda_exporter" {
output_path = "${path.module}/lambda-files.zip"
source_dir = "${data.null_data_source.wait_for_lambda_exporter.outputs["source_dir"]}"
type = "zip"
}

关于terraform - 如何在 Terraform 中的 data.archive_file zips 文件夹之前运行命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40744575/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com