【问题标题】:Reading from a collection of modules in Terraform从 Terraform 中的模块集合中读取
【发布时间】: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


【解决方案1】:

我在阅读this bit in the docs about the splat expression not working with maps 的帮助下想通了。

基本上解决方案是使用[for v in module.lambda_function : v.lambda_role_arn] 作为子表达式,而不是module.lambda_function[*].lambda_role_arn

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-23
    • 1970-01-01
    • 2022-11-10
    • 1970-01-01
    • 2021-06-30
    • 2021-09-03
    • 2021-04-27
    • 2020-07-05
    相关资源
    最近更新 更多