简单的 AWS Lambda Terraform 计划失败并出现 ValidationException 错误 400

Simple AWS Lambda Terraform plan fails with ValidationException Error 400

我正在尝试应用下面提到的 terraform 计划,但由于验证错误而失败。

我写了一个存在于目录 lambda_function/sns_to_slack.py 中的 python 函数,我正在通过 Terraform 压缩它并将其上传到 AWS。

我收到这个错误:

error creating Lambda Function (1): ValidationException: status code: 400

文件: aws_lambda.tf

data "archive_file" "lambda_zip" {
    type          = "zip"
    source_file   = "lambda_functions/sns_to_slack.py"
    output_path   = "lambda_functions/zips/sns_to_slack.zip"
}

resource "aws_lambda_function" "sns_to_slack" {
  filename         = "lambda_functions/zips/sns_to_slack.zip"
  function_name    = "sns_to_slack"
  role             = aws_iam_role.iam_for_lambda_tf.arn
  source_code_hash = data.archive_file.lambda_zip.output_base64sha256
  runtime          = "python3.8"
}

resource "aws_iam_role" "iam_for_lambda_tf" {
  name = "iam_for_lambda_tf"
  assume_role_policy = <<POLICY
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": "sts:AssumeRole",
      "Principal": {
        "Service": "lambda.amazonaws.com"
      },
      "Effect": "Allow",
      "Sid": ""
    }
  ]
}
POLICY
}

有什么想法吗?

您没有指定 处理程序,因为您使用的是非默认文件名 (sns_to_slack.py):

resource "aws_lambda_function" "sns_to_slack" {
  filename         = "lambda_functions/zips/sns_to_slack.zip"
  function_name    = "sns_to_slack"
  
  handler          = "sns_to_slack.lambda_handler"
  
  role             = aws_iam_role.iam_for_lambda_tf.arn
  source_code_hash = data.archive_file.lambda_zip.output_base64sha256
  runtime          = "python3.8"
}

lambda_handler in "sns_to_slack.lambda_handler" 必须改成你实际使用的。