繁体   English   中英

HandlerNotFound 触发 aws lambda function

[英]HandlerNotFound at trigger aws lambda function

我在部署到 AWS Lambda function 时遇到问题。我为 SQS 队列创建了一个触发器,当我有新消息时,我的触发器 (index.receiver) 会处理此消息。 所以,这是我的代码:

索引.ts

import receiver from "./sqs/receiver";

exports.receiver = receiver;

sqs/receiver.ts

const receiver: SQSHandler = async (event) => {
  //some logic
};

export default receiver;

触发此 function 后,我在 AWS CloudWatch 中看到没有任何工作正常并向我抛出此错误:

{
    "errorType": "Runtime.HandlerNotFound",
    "errorMessage": "index.receiver is undefined or not exported",
    "stack": [
        "Runtime.HandlerNotFound: index.receiver is undefined or not exported",
        "    at Object.module.exports.load (/var/runtime/UserFunction.js:144:11)",
        "    at Object.<anonymous> (/var/runtime/index.js:43:30)",
        "    at Module._compile (internal/modules/cjs/loader.js:999:30)",
        "    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)",
        "    at Module.load (internal/modules/cjs/loader.js:863:32)",
        "    at Function.Module._load (internal/modules/cjs/loader.js:708:14)",
        "    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:60:12)",
        "    at internal/main/run_main_module.js:17:47"
    ]
}

这也是我的项目树:

.serverless
node_modules
sqs
- receiver.ts
index.ts
package.json
serverless.yml

和 serverless.yml

service: some-name

provider:
  name: aws
  runtime: nodejs12.x
  region: eu-central-1
  apiGateway:
    minimumCompressionSize: 1024 # Enable gzip compression for responses > 1 KB
  environment:
    AWS_NODEJS_CONNECTION_REUSE_ENABLED: 1
  # SQS Permission given
  iamManagedPolicies:
  - 'arn:aws:iam::aws:policy/AmazonSQSFullAccess'

functions:
  receiver:
    handler: index.receiver
    events:
      - sqs: <my-sqs-arn>

有人可以告诉我我做错了什么吗? 谢谢你的帮助!

我解决了这个问题。 问题在于,在我的serverless.yml中,我这样指向处理程序: handler: index.receiver但是,当我们使用 Typescript 时,我们应该将它指向dist/index.receiver ,因为 AWS 只能处理 JS 文件,我们还需要在使用serverless deploy之前,请记住使用此 function 构建项目。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM