我正在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.APIGatewayProxyResponse
和events.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应用程序的工作模板并且可以将其开源,那么我将非常感激。