首页 > 解决方案 > 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,因为 exaple 标头的文本未在响应中设置,但我可以将它们视为正文中的文本)。如果我分别更改events.APIGatewayProxyResponseand events.APIGatewayProxyRequesttoMyRequest和一个字符串,它在 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 应用程序的工作模板,我将非常感激。

标签: amazon-web-servicesgoaws-lambdaaws-sam-cli

解决方案


推荐阅读