【问题标题】:Sending websocket message in Go lambda function在 Go lambda 函数中发送 websocket 消息
【发布时间】:2022-04-08 05:14:53
【问题描述】:

我有两个 Go 函数:

func NewAPIGatewaySession() *apigatewaymanagementapi.ApiGatewayManagementApi {
    sesh := session.Must(session.NewSessionWithOptions(session.Options{
        SharedConfigState: session.SharedConfigEnable,
    }))
    return apigatewaymanagementapi.New(sesh)
}

func SendWsMessage(connectionID string, msgData []byte) error {
    connectionInput := &apigatewaymanagementapi.PostToConnectionInput{
        ConnectionId: aws.String(connectionID),
        Data:         msgData,
    }
    _, err := NewAPIGatewaySession().PostToConnection(connectionInput)
    return err
}

但不幸的是我收到了错误:

RequestError:发送请求失败 引起:发布“https://execute-api.us-east-1.amazonaws.com/@connections/GN5OCf-coAMCElw%3D”:拨号tcp:查找execute-api.us-east-1.amazonaws.com在 169.254.78.1:53:没有这样的主机

此代码位于 Docker 映像 lambda 函数中。我不确定这是否是某种 DNS 错误(但如果发现“169.254.78.1”则可能不是)?

【问题讨论】:

  • 169.254... 是本地链接... 我猜这是你的 lambda 的 dns 服务器。

标签: amazon-web-services go websocket aws-lambda


【解决方案1】:

您的 lambda 函数需要知道 AWS Gateway 管理 API 的确切端点地址。您可以像这样配置端点的地址。

api := apigatewaymanagementapi.New(session)
api.Endpoint = "https://xxxxxxx.execute-api.eu-west-1.amazonaws.com/prod"

端点地址可以在 API -> Stage -> Connection URL 下的 API Gateway 配置中的 AWS 控制台中找到。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-14
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 2022-01-19
    • 2020-01-07
    • 1970-01-01
    相关资源
    最近更新 更多