【发布时间】:2022-01-19 07:13:13
【问题描述】:
我正在尝试从 local.tf 获取函数名称的值,但我无法获取它。我有 terraform,tfvars,我在其中给出了函数名称,然后将其传递给 variable.tf。从 varibale.tf 我将其传递给 local.tf,然后传递给 main.tf。我无法在 main.tf 中获取函数名称。任何帮助,将不胜感激。 terraform.tfvars
config = {
s3= {
//s3 configurations
}
s3_notifications = {
function_name = "test-lambda-mary"
}
}
变量.tf
variable "config" {
type = any
description = "S3 configuration block"
}
local.tf
function_name = {
for k, v in var.config :
k => lookup(v, "function_name", "")
}
module "all_notifications" {
source = "terraform-aws-modules/s3-bucket/aws//modules/notification"
for_each = var.config
bucket = module.s3_bucket[each.key].this_s3_bucket_id
lambda_notifications = {
lambda = {
function_name = local.function_name[each.key]
function_arn = "arn:aws:lambda:${data.aws_region.current.name}:${data.aws_caller_identity.current.account_id}:function:${local.function_name[each.key]}"
events = ["s3:ObjectCreated:*"]
}
}
}
错误
"function_name" doesn't comply with restrictions ("^(arn:[\\w-]+:lambda:)?([a-z]{2}-(?:[a-z]+-){1,2}\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?$"): ""
│
│ with module.all_notifications["s3"].aws_lambda_permission.allow["lambda"],
│ on .terraform/modules/all_notifications/modules/notification/main.tf line 63, in resource "aws_lambda_permission" "allow":
│ 63: function_name = each.value.function_name
【问题讨论】:
-
好的,但是有什么问题?有什么错误吗?
-
@Marcin 我在问题中添加了错误
-
如果我把 function_name 放在 s3 大括号中,它工作得很好,但我需要在 s3_notification 中有函数名称
-
很遗憾你的问题不清楚。
each.key和module.s3_bucket是什么?您能否为您使用的所有变量提供值? -
它创建多个 s3 存储桶并向其添加通知
标签: amazon-web-services amazon-s3 aws-lambda terraform