【问题标题】:"Lambda function for the route not found" error running Golang function locally with SAM?使用 SAM 在本地运行 Golang 函数时出现“找不到路由的 Lambda 函数”错误?
【发布时间】:2020-03-12 14:44:37
【问题描述】:

按照this quick-start,我正在尝试在 Golang 中编写一个 Lambda 函数(在我的 MacBook 上运行 Docker Desktop 进行开发)。我执行以下步骤:

  1. 运行“sam init --runtime go1.x --name testing”以从模板生成函数。
  2. 运行“make deps”来获取依赖项。
  3. 运行“make build”以构建生成到 hello-world/hello-word 的代码。
  4. 运行“sam local start-api”。

一切看起来都正常启动:

Mounting HelloWorldFunction at http://127.0.0.1:3000/hello [GET]
You can now browse to the above endpoints to invoke your functions. You do not need to restart/reload SAM CLI while working on your functions, changes will be reflected instantly/automatically. You only need to restart SAM CLI if you update your AWS SAM template
2019-11-16 10:39:19  * Running on http://127.0.0.1:3000/ (Press CTRL+C to quit)

但是当我 curl 端点时,我得到一个 502 并且我看到一个错误:

2019-11-16 10:39:23 Exception on /hello [HEAD]
Traceback (most recent call last):
  File "/usr/local/Cellar/aws-sam-cli/0.31.0/libexec/lib/python3.7/site-packages/flask/app.py", line 2317, in wsgi_app
    response = self.full_dispatch_request()
  File "/usr/local/Cellar/aws-sam-cli/0.31.0/libexec/lib/python3.7/site-packages/flask/app.py", line 1840, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/usr/local/Cellar/aws-sam-cli/0.31.0/libexec/lib/python3.7/site-packages/flask/app.py", line 1743, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/usr/local/Cellar/aws-sam-cli/0.31.0/libexec/lib/python3.7/site-packages/flask/_compat.py", line 36, in reraise
    raise value
  File "/usr/local/Cellar/aws-sam-cli/0.31.0/libexec/lib/python3.7/site-packages/flask/app.py", line 1838, in full_dispatch_request
    rv = self.dispatch_request()
  File "/usr/local/Cellar/aws-sam-cli/0.31.0/libexec/lib/python3.7/site-packages/flask/app.py", line 1824, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/usr/local/Cellar/aws-sam-cli/0.31.0/libexec/lib/python3.7/site-packages/samcli/local/apigw/local_apigw_service.py", line 172, in _request_handler
    route = self._get_current_route(request)
  File "/usr/local/Cellar/aws-sam-cli/0.31.0/libexec/lib/python3.7/site-packages/samcli/local/apigw/local_apigw_service.py", line 236, in _get_current_route
    raise KeyError("Lambda function for the route not found")
KeyError: 'Lambda function for the route not found'
2019-11-16 10:39:23 127.0.0.1 - - [16/Nov/2019 10:39:23] "HEAD /hello HTTP/1.1" 502 -

我错过了什么?

【问题讨论】:

  • 您使用的是什么版本的 lambda docker 容器?我刚刚使用 docker image b8e51a982e64 对其进行了测试,并且成功了。 go 测试通过了吗?
  • 我使用的是同一个图像 ID。运行“go test”会导致通过。运行“sam deploy”并上传到 Lambda 会导致函数按预期工作 - 我只是无法让它在本地工作。

标签: python go aws-lambda aws-sam


【解决方案1】:

在这个聚会上迟到了,你可能已经解决了。没有看到任何代码,您似乎发出了 HEAD 请求,而不是 GET 请求,我怀疑您没有 HEAD 方法的路由,只有 GET。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-01
    • 2015-08-22
    • 2020-11-06
    • 2021-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多