带有 terraform 的 AWS Lambda 函数

AWS Lambda function with terraform

在应用我的 terraform 计划时遇到一些问题,无法确定其中的问题所在。我尝试了我能想到的一切。这是我的 lambda.tf 文件:

data "archive_file" "projectLeo_listunsubscribe_lambda_code" {
  type        = "zip"
  source_dir  = "${path.module}/../src/ProjectLeo.ListUnsubscribe"
  output_path = "${path.module}/../src/code-packaged/list-unsubscribe.zip"
}

resource "aws_lambda_function" "projectLeot_list_unsubscribe_lambda" {
  filename                       = "${data.archive_file.projectLeo_listunsubscribe_lambda_code.output_path}"
  function_name                  = "projectLeo-listunsubscribe-lambda"
  role                           = "${aws_iam_role.projectLeo_list_hygiene_role.arn}"
  handler                        = "${var.lambda_list_unsubscribe_function_handler}"
  runtime                        = "dotnetcore2.1"
  memory_size                    = "256"
  timeout                        = 120
  publish                        = true
  reserved_concurrent_executions = 1

  environment {
    variables = {
      optout-topic-arn = "${data.aws_sns_topic.projectLeo_optout_topic.arn}"
    }
  }
}

data "aws_sns_topic" "projectLeo_optout_topic" {
  name = "${var.sns_optout_topic_name}"
}

生成的计划看起来一切正常,但在应用完成时生成此错误:

Error: Error creating Lambda function: ValidationException:
        status code: 400, request id: c16dc369-bccd-418d-a2b5-2d0383c66064

  on ..\list-unsubscribe\infrastructure\lambda.tf line 9, in resource "aws_lambda_function" "projectLeo_list_unsubscribe_lambda":
   9: resource "aws_lambda_function" "projectLeo_list_unsubscribe_lambda" {

这是一个非常简单的日志,我尝试逐段更新代码,但结果总是相同。

任何人都可以帮助我查明我的代码可能存在的问题吗?谢谢!

终于找到问题所在:AWS lambda 函数中的环境变量不接受连字符 (-)。我用下划线替换了它,它通过了。

optout-topic-arn 变成了 optout_topic_arn