【发布时间】:2021-12-13 14:03:54
【问题描述】:
我正在使用 lambda_function 模块和 for_each 来创建多个 lambda。
我在尝试组装策略 JSON 时在不同的资源中收到此错误:
╷
│ Error: Invalid function argument
│
│ on main.tf line 83, in resource "aws_secretsmanager_secret_policy" "staging_tables_secret":
│ 83: "AWS": "${join(",", module.lambda_function[*].lambda_role_arn)}"
│ ├────────────────
│ │ module.lambda_function is a map of object, known only after apply
│
│ Invalid value for "lists" parameter: element 0: string required.
╵
Process finished with exit code 1
我做错了什么,我应该如何列出 lambda 模块生成的角色 ARN?
这是模块的外观,以及被迭代的本地:
module "lambda_function" {
for_each = { for index, value in local.application_files : index => value }
source = "terraform-aws-modules/lambda/aws"
source_path = "${path.module}/functions/${each.value.directory}"
function_name = each.value.directory
runtime = "python3.9"
handler = "${each.value.handler_file}.lambda_handler"
environment_variables = {
secrets_manager_arn = aws_secretsmanager_secret.staging_tables_secret.arn
}
}
locals {
application_files = [
{
directory = "hello1"
handler_file = "hello1"
},
{
directory = "hello2"
handler_file = "hello2"
}
]
}
编辑:这是我正在使用的外部模块的链接:https://registry.terraform.io/modules/terraform-aws-modules/lambda/aws/latest
【问题讨论】:
-
您忽略了最重要的部分,即模块的定义(它似乎是自产的,但如果它是公开发布的模块,请粘贴源链接)。
-
就此而言,
main.tf line 83上有什么内容?显示您的整个配置,或减少到重现问题的最小配置。否则,唯一可以告诉您的是“您编写了 Terraform 或您的模块无法处理的内容。” -
虽然作为一个完整的猜测,您似乎正在尝试提供一个 Lambda ARN 作为“AWS”主体规范的目标,但这是行不通的。
标签: amazon-web-services terraform