Ошибка подключения WebSocket шлюза API AWS

Я создал API с помощью AWS API Gateway и Lambda, который имеет тот же https://github.com/aws-samples/simple-websockets-chat-app. Но API не работает траст. Я получаю сообщение об ошибке, когда я пытаюсь подключиться. Его сообщение: «Подключение WebSocket к« wss://b91xftxta9.execute-api.eu-west-1.amazonaws.com/dev »не удалось: ошибка во время рукопожатия WebSocket: Неожиданный код ответа: 500»

Мой код подключения

var ws= new WebSocket("wss://b91xftxta9.execute-api.eu-west-1.amazonaws.com/dev");
ws.onopen=function(d){
	console.info(d);
}

Код ответа 500 — это HTTP-код для Internal Server Error... поэтому ваш первый шаг — проверить журналы шлюза API.

Michael - sqlbot 19.02.2019 10:43
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
4
1
4 483
3

Ответы 3

попробуйте использовать wscat -c wss://b91xftxta9.execute-api.eu-west-1.amazonaws.com/dev в терминале. Это должно позволить вам подключить его. Если у вас не установлен wscat, просто выполните npm install -g wscat

Попробуйте добавить $context.error.validationErrorString и $context.integrationErrorMessage в логи этапа.

Я добавил кучу вещей в раздел Формат журнала, например:

{ "requestId":"$context.requestId", "ip": "$context.identity.sourceIp",
"requestTime":"$context.requestTime", "httpMethod":"$context.httpMethod",
"routeKey":"$context.routeKey", "status":"$context.status", 
"protocol":"$context.protocol", "errorMessage":"$context.error.message",
"path":"$context.path", 
"authorizerPrincipalId":"$context.authorizer.principalId",
"user":"$context.identity.user", "caller":"$context.identity.caller", 
"validationErrorString":"$context.error.validationErrorString", 
"errorResponseType":"$context.error.responseType", 
"integrationErrorMessage":"$context.integrationErrorMessage", 
"responseLength":"$context.responseLength" }

В ранней разработке это позволило мне увидеть такой тип ошибки:

{
"requestId": "QDu0QiP3oANFPZv = ",
"ip": "76.54.32.210",
"requestTime": "21/Jul/2020:21:37:31 +0000",
"httpMethod": "POST",
"routeKey": "$default",
"status": "500",
"protocol": "HTTP/1.1",
"integrationErrorMessage": "The IAM role configured on the integration
    or API Gateway doesn't have permissions to call the integration.
    Check the permissions and try again.",
"responseLength": "35"
}

Чтобы получить более подробную информацию, включите ведение журнала для своего API: Stages -> Logs/Tracing -> CloudWatch Settings -> Enable CloudWatch Logs. Затем снова отправьте запрос на подключение и отслеживайте журналы API в CloudWatch. В моем случае у меня была следующая ошибка:

Execution failed due to configuration error: API Gateway does not have permission to assume the provided role {arn_of_my_role}

Итак, я добавил Шлюз API к Доверительные отношения моей роли, как уже упоминалось, здесь, и это решило проблему.

Другие вопросы по теме