我正在使用无服务器 WarmUp 插件来使我的 Go AWS Lambda 函数保持温暖。我需要检测插件何时调用 Lambda 函数,以便我可以返回特定响应。如何正确检测 Go 代码中的预热调用?
正确答案
您可以通过检查客户端上下文来检测 go aws lambda 函数中的预热调用,这可以使用 aws lambda 的 go sdk 中的 lambdacontext 包来完成。下面的代码片段展示了如何执行此操作:
package main
import (
"context"
"github.com/aws/aws-lambda-go/events"
"github.com/aws/aws-lambda-go/lambda"
"github.com/aws/aws-lambda-go/lambdacontext"
)
func HandleRequest(ctx context.Context, request events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) {
lc, _ := lambdacontext.FromContext(ctx)
if lc.ClientContext.Custom["source"] == "serverless-plugin-warmup" {
return events.APIGatewayProxyResponse{Body: "Lambda is warm!", StatusCode: 200}, nil
}
// ... other function logic ...
// Default response for demonstration
return events.APIGatewayProxyResponse{
StatusCode: 200,
Body: "Hello from Go Lambda!",
}, nil
}
func main() {
lambda.Start(HandleRequest)
}