API-шлюз WebSocket API Тайм-аут пост-подключения API - PullRequest
0 голосов
/ 12 февраля 2019

Я пытаюсь настроить WebSocket API на API Gateway .Я следую базовому учебнику, и у меня все готово -> Маршруты для $connect, $disconnect, "test", $default.Я могу подключиться к API, сохранить идентификатор соединения в Redis и получить его при доступе с тестового маршрута.

Проблема заключается в том, что я пытаюсь отправить обратно сообщение от моей лямбды (единственная лямбда, обрабатывающая всемаршруты).Я использую следующий код

 const apigwManagementApi = new AWS.ApiGatewayManagementApi({
    apiVersion: '2018-11-29',
    endpoint: `https://${event.requestContext.domainName}/${event.requestContext.stage}`
});

Затем я звоню

await apigwManagementApi.postToConnection({
        ConnectionId: connectionId,
        Data: `Echo: ${data}`
    }).promise()

Это вызывается только на "тестовом" маршруте.

Все это каксогласно их руководству.Я должен был добавить patch, чтобы иметь возможность заставить postConnection работать, опять же, согласно их руководству.Проблема заключается в том, что при вызове вышеуказанного метода я получаю сообщение Internal Server Error от шлюза API, и через 3 секунды происходит лямбда-тайм-аут.

Об этом методе очень мало информации.Я не уверен, что является причиной внутренней ошибки сервера.Я проверил конечную точку и идентификатор соединения, оба верны.Что я делаю неправильно?Есть предложения?

1 Ответ

0 голосов
/ 27 февраля 2019

Таким образом, проблема была не в фактической лямбде, а в том, что она не была настроена в VPC, который имел доступ к Интернету.Поэтому, если у вас есть лямбда, у которой включен VPC, убедитесь, что у вас есть настроенный шлюз NAT и интернет-шлюз.

...