我正在使用无服务器框架来设置一个AWS API网关websocket,它调用用Go编写的lambda函数。现在,处理程序只记录一条消息。我可以连接到websocket,当我通过套接字发送消息时,我可以看到消息记录在Cloudwatch中,但我总是收到如下错误消息
{
"message": "Internal server error",
"connectionId": "eU3C1cE7CYcCJPw=",
"requestId": "eU3EQFX0iYcFysQ="
}在Cloudwatch中没有为lambda记录错误。我认为AWS API Gateway配置很好。我正不知所措地想着是什么导致了这一切。
我的main.go:
package main
import (
"fmt"
"github.com/aws/aws-lambda-go/events"
"github.com/aws/aws-lambda-go/lambda"
)
func Handler(request events.APIGatewayWebsocketProxyRequest) {
fmt.Println("default function ran")
}
func main() {
lambda.Start(Handler)
}可能不是超级相关,但serverless.yaml配置:
functions:
websocket-default:
handler: bin/ws
events:
- websocket:
route: $default我发送的有效负载:
{
"action": "whatever",
"data": "{whatever}"
}发布于 2019-08-13 16:50:36
我不确定这是否是您代码中唯一的问题,但是您的处理程序签名应该是doc中列出的签名
func ()
func () error
func (TIn) error
func () (TOut, error)
func (context.Context) error
func (context.Context, TIn) error
func (context.Context) (TOut, error)
func (context.Context, TIn) (TOut, error)发布于 2019-08-14 00:04:47
好的,它经过了大量的试验和错误,但这是有效的方法签名
type Response events.APIGatewayProxyResponse
func Handler(context context.Context, request events.APIGatewayWebsocketProxyRequest) (Response, error) 我真的希望golang的文档更好一些。感谢克莱门特为我指明了正确的方向。
https://stackoverflow.com/questions/57468191
复制相似问题