我将一些值传递给lambda函数,然后调用它。效果很好。
我有几个依赖于彼此,在依赖链中的一些资源也。
Invoke_1 > Invoke_2 > aws_glue_catalog_database > Invoke_3然而,在每个计划中,lambdas被列为“read”,在每一个应用程序中都会被执行。
首先,这使得这个计划更难读懂。冗长的输出(列出我传递的所有值)意味着很难发现其他资源的真正变化。
其次,它运行的是一个不需要运行的函数,这是不干净的。
所以.
是否有一种方法可以使这些调用具有条件性,而不破坏我的依赖链?
// zips the python file in order to be used by lambda
data "archive_file" "lf_settings_1_zip" {
type = "zip"
source_dir = "${path.module}/scripts/lf_settings_s1/"
output_path = "${path.module}/scripts/s1deploy.zip"
}
resource "aws_lambda_function" "lakeformation_settings_1" {
function_name = "dlsettings_1"
filename = data.archive_file.lf_settings_1_zip.output_path
source_code_hash = data.archive_file.lf_settings_1_zip.output_base64sha256
role = aws_iam_role.myRole.arn
handler = "main.main"
runtime = "python3.8"
}
locals {
lf1_json = <<JSON
{
"account":"${local.account_id}",
"principals":[
"arn:aws:iam::${local.account_id}:role/Role1",
"arn:aws:iam::${local.account_id}:role/Role2"
]
}
JSON
}
data "aws_lambda_invocation" "invo1" {
function_name = "dlsettings_1"
input = local.lf1_json
depends_on = [
aws_lambda_invocation.invo0,
aws_lambda_function.lakeformation_settings_1
]
}发布于 2020-08-08 15:37:51
数据源仍然允许使用count参数。我不太清楚您将如何用当前的terraform代码来实现它,但这就是我的想法。如果var.boolean_youcreate设置为false,那么它就不会调用它:
data "aws_lambda_invocation" "example" {
count = var.boolean_youcreate ? "1" : "0"
function_name = aws_lambda_function.lambda_function_test.function_name
input = <<JSON
{
"key1": "value1",
"key2": "value2"
}
JSON
}
output "result_entry" {
value = jsondecode(data.aws_lambda_invocation.example.result)["key1"]
}https://stackoverflow.com/questions/63316813
复制相似问题