【问题标题】:How to invoke AWS lambda while running EventGateway locally如何在本地运行 EventGateway 时调用 AWS lambda
【发布时间】:2019-11-17 12:49:19
【问题描述】:

我正在尝试从本地运行的 EventGateway(版本:0.9.1)实例调用 AWS Lambda 函数。但是,由于"Event Type: http.request not found".

,订阅调用失败

已经使用无服务器框架独立部署了lambda,并且在注册调用中注入了ARN:

lambda 只是一个 hello world 类型的 lambda 监听 http 请求:

functions:
  hello-world:
    handler: bin/hello-serverless
    events:
    - http:
        path: /hello
        method: get

我的函数注册调用如下所示:

curl --request POST \
  --url http://127.0.0.1:4001/v1/spaces/default/functions \
  --header 'content-type: application/json' \
  --data \
'{"functionId": "helloserverless", "type": "awslambda", "provider":{ "arn": "<lambda-arn>", "region": "ap-southeast-2", "accessKeyId": "<my-access-key>", "secretAccessKey": "<my-secret-key"}}'

现在,当我尝试订阅一个事件时:

  --url http://127.0.0.1:4001/v1/spaces/default/subscriptions \
  --header 'content-type: application/json' \
  --data '{"functionId": "helloserverless", "type": "sync", "path": "/hello", "method": "GET", "eventType": "http.request"}'

我收到以下错误:

{"errors":[{"message":"Event Type \"http.request\" not found."}]}

非常感谢任何指向正确解决方案或工作示例的指针。

【问题讨论】:

    标签: serverless-framework event-gateway


    【解决方案1】:

    如果你想调用一个像端点这样的函数,你需要让你的应用程序运行。有一个名为 serverless-offline 的插件可以帮助您解决此问题。

    如果您想使用无服务器选项调用您的函数,该命令称为 INVOKE。 https://serverless.com/framework/docs/providers/aws/cli-reference/invoke-local/

    【讨论】:

    • 澄清:我的 lambda 在 AWS(不是本地)上运行。我只希望我的自托管 eventgateway 实例在 http.request 事件上调用该 lambda。
    • 那你为什么要使用本地协议呢? 127.0.0.1:4001 是您的本地主机。如果您想从云端调用,请检查 API Gateway 上的 URL 或 route53(如果已创建)。
    • 我知道我正在使用本地主机(我在我的问题上说过)。我不是在问如何从外界调用 lambda。我在问如何让 locally 运行 eventgateway 将请求路由到外部 lambda。顺便说一句,通过 eventgateway,我指的是这个:serverless.com/event-gateway
    猜你喜欢
    • 2021-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多