AWS SAM CLI超时

时间:2018-12-02 11:08:49

标签: amazon-web-services go aws-lambda aws-sam-cli

我正在AWS lambda中创建一个处理程序,该处理程序返回单页应用程序(SPA)的文件。该函数运行速度很快(几毫秒)。但是我仍然必须多次运行它,几乎同时运行,然后它们超时。我的超时时间是60秒。我认为这与docker有关,但我不确定。有什么我可以做的吗?

这是我的代码:pastebin.com/TdqAu3Gx!与执行时间相比,即使使用其他功能,也需要花费更多时间才能获得响应。

编辑:

一段时间后,我在Netlify上发布了前端。但是在完成一些功能后,我遇到了相同的错误。 fowoling代码在aws sam local中起作用。

package main

import (
    "fmt"

    "github.com/aws/aws-lambda-go/events"

    "github.com/aws/aws-lambda-go/lambda"
)

type MyReq struct {
    Username string `json:"username"`
}

func handler(m events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) {
    // log.Println(m.Username)

    fmt.Println("\n\n", m.Body, "\n\n")
    return events.APIGatewayProxyResponse{
        Body: m.Body,
    }, nil
}
func main() {
    lambda.Start(handler)
}

但是在lambda中不能正常工作。 (它可以工作,但是我得到了完整的json,因为没有在响应中设置例如标头的文本,但是我可以在正文中看到它们作为文本)。如果将events.APIGatewayProxyResponseevents.APIGatewayProxyRequest分别更改为MyRequest和一个字符串,则它在lambda中有效,但在sam local中超时。在template.json下的Resources中,我有:

"TestFunction": {
        "Type": "AWS::Serverless::Function",
        "Properties": {
            "CodeUri": "MY_BUCKET",
            "Handler": "testf",
            "Role": "My Lambda role",
            "Events": {
                "RegisterEvent": {
                    "Type": "Api",
                    "Properties": {
                        "Path": "/testf",
                        "Method": "POST"
                    }
                }
            }
        }
    }

如何使代码在AWS Lambda和SAM Local上均可工作?如果有人拥有可同时在SAM和AWS上运行的sam应用程序的工作模板并且可以将其开源,那么我将非常感激。

0 个答案:

没有答案