Como posso solucionar erros 410 GoneException com as APIs de WebSocket do Amazon API Gateway?
Data da última atualização: 03/11/2022
Recebo um erro “410 GoneException” ao tentar publicar uma mensagem na minha API de WebSocket do Amazon API Gateway, semelhante à seguinte:
... "errorMessage": "GoneException: 410" ...
Como faço para corrigir isso?
Breve descrição
Você poderá receber o erro “410 GoneException” se:
- Uma mensagem foi postada na API de WebSocket antes que a conexão fosse estabelecida.
- A conexão foi encerrada ou a conexão não existe mais.
- O cliente se desconectou e tentou se reconectar usando o mesmo connectionId.
Observação: Para as APIs de WebSocket, o connectionId é necessário para enviar uma resposta de retorno de chamada do back-end.
Resolução
Para solucionar erros da API de WebSocket, ative o Amazon CloudWatch Logs.
Observação: em Log level (Nível de log), escolha INFO para gerar logs de execução para todas as solicitações.
Os logs de execução contêm informações que você pode usar para identificar e solucionar a maioria dos erros de API. Por exemplo:
- As solicitações que sua API recebe
- As respostas do back-end de integração da sua API
- A resposta fornecida pelos AWS Lambda Authorizers
- O requestId para endpoints de integração da AWS
Para obter mais informações sobre cada tipo de registro, consulte Formatos de log do CloudWatch para o API Gateway.
Antes de publicar mensagens nas APIs de WebSocket, certifique-se de que sua conexão esteja estabelecida chamando a operação getConnection usando a API do AWS SDK ApiGatewayManagementApi.
Evite fazer a solicitação postToConnection a partir da função Lambda integrada à sua rota $connect. Por exemplo, se você quiser publicar uma mensagem depois que a conexão do cliente for estabelecida, faça o seguinte:
- Crie uma função secundária do Lambda que seja invocada de forma assíncrona pela função principal.
- No início de uma nova conexão, a rota $connect é invocada e a função principal invoca a função secundária passando o connectionID.
- A função secundária do Lambda recebe o connectionID e chama a operação getConnection para verificar se a conexão é válida. Em seguida, a mensagem é enviada usando o método postToConnection.
Informações relacionadas
Este artigo ajudou?
Precisa de ajuda com faturamento ou suporte técnico?