Lambda 找不到文件 test_lambda.js。确保您的处理程序支持以下格式:file-name.method

gam*_*mer 4 amazon-sqs aws-lambda terraform

我的 AWS Lambda 触发器函数出现问题,控制台似乎在说 Lambda can't find the file test_lambda.js. Make sure that your handler upholds the format: file-name.method.

这是我的相关代码。这是 lambda 函数本身 -

resource "aws_lambda_function" "development_lambda" {
  function_name = "test_lambda"
  role          = "${aws_iam_role.iam_for_lambda.arn}"
  handler       = "test_lambda"
  runtime = "nodejs10.x"

  filename      = "test_lambda.js.zip"
  source_code_hash = "${filebase64sha256("test_lambda.js.zip")}"

  timeout = 10

  vpc_config {
    subnet_ids         = flatten(["${private_subnet_ids}"])
    security_group_ids = flatten(["${security_group_id}"])
  }

  environment {
    variables = {
      env = "localhost"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

这是事件源映射代码 -

resource "aws_lambda_event_source_mapping" "event_source_mapping" {
  event_source_arn = "${aws_sqs_queue.development-queue.arn}"
  enabled          = true
  function_name    = "${aws_lambda_function.development_lambda.arn}"
  batch_size       = 10
}
Run Code Online (Sandbox Code Playgroud)

这是文件中的 lambda 处理程序 test_lambda.js

exports.handler = (event, context, callback) => {
    console.log("Lambda test");
    callback(null, 'In Lambda');
};
Run Code Online (Sandbox Code Playgroud)

我在同一路径中也有一个 test_lambda.js.zip。

这里有什么问题?

Jas*_*rth 5

你的处理程序应该是test_lambda.handler.