【问题标题】:[AWS][Amplify] Invoke function locally crashs with no error[AWS][Amplify] Invoke 函数在本地崩溃且无错误
【发布时间】:2020-07-21 12:50:07
【问题描述】:

我刚刚加入了一个开发团队,项目应该使用 amplify 在云中运行。我有一个名为 usershandler 的函数,我想在本地运行。为此,我使用了: amplify invoke function usershandler 这是我得到的输出:

Starting execution...
EVENT: {"httpMethod":"GET","body":"{\"name\": \"Amplify\"}","path":"/users","resource":"/{proxy+}","queryStringParameters":{}}
App started
get All VSM called

Connection to database was a success
null
Result:
{"statusCode":200,"body":"{\"success\":true,\"results\":[]}","headers":{"x-powered-by":"Express","access-control-allow-origin":"*","access-control-allow-headers":"Origin, X-Requested-With, Content-Type, Accept","content-type":"application/json; charset=utf-8","content-length":"29","etag":"W/\"1d-4wD7ChrrlHssGyekznKfKxR7ImE\"","date":"Tue, 21 Jul 2020 12:32:36 GMT","connection":"close"},"isBase64Encoded":false}
Finished execution.

编辑:另外,当运行调用命令时,放大询问我一个 src/event.json 而我已经看到它在寻找 index.js 一些??

编辑 2 [已解决]:将 @aws-amplify/cli 降级到 4.14.1 似乎可以解决这个问题 :)

预期行为:服务器应继续运行,以便我可以使用它.. 实际行为:它总是在完成执行消息后停止。

与数据库的连接工作正常,config.json 包含正确的值。不知道为什么会这样。有没有人有同样的问题? 祝你有美好的一天。

【问题讨论】:

    标签: node.js angular amazon-web-services express aws-amplify


    【解决方案1】:

    简短回答:您正在运行调用命令,该命令正在做它应该做的事情 - 调用 lambda 函数。

    如果您希望启动本地 API,请运行以下命令:

    sam local start-api

    这将读取您的模板并根据您设置的端点,在本地运行它们,本质上是在本地模拟 API 网关。在官方文档here 中了解更多信息。

    解释:

    此命令来自AWS Serverless Application Model (AWS SAM) 的产品之一。开发无服务器应用程序的工具。它本质上是AWS Cloufdformation 的抽象。同样,Amplify 是一种抽象,它不仅可以简化后端的开发和管理,还可以将这种能力带到前端。 由于它们本质上都使用 Cloudformation 模板,因此您可以将一种工具的功能与另一种工具结合使用。
    SAM 为本地开发提供了一套强大的工具,包括运行本地 lambda 模拟服务器,以防您不使用 API Gateway。

    我使用这种组合来开发和测试我的前端以及 golang 中的后端,golang 是一种不像 javascript 那样成熟的语言,因为它是 Amplify 的后端语言。

    【讨论】:

    • 感谢您提供这些有用的信息。但是,它没有用。运行 sam local start-api 或调用时,找不到 template.yml 文件。我所有的函数都有一个模板文件,除了它是一个 .json 文件,它被命名为 -cloudformation-template.json
    • 好吧,我现在有一个管理员帐户,所以我可以进行测试。您如何使用 SAM?我试图生成一个空白放大项目,但仍然无法使用 sam 命令。我该怎么办?
    • @AymaneELJahrani,SAM 读取与任何其他工具相同的template.yaml 文件。从项目根目录(即包含模板文件的目录)运行任何相同的命令。其中包括sam local start-apisam local start-lambda
    • 与SAM无关。我通过降级到@aws-amplify/cli 4.14.1 解决了这个问题。我认为这对你很有用。干杯:)
    猜你喜欢
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 2014-09-25
    • 2020-05-10
    • 1970-01-01
    • 2021-07-16
    • 2020-03-16
    相关资源
    最近更新 更多