How can I troubleshoot 410 GoneException errors with Amazon API Gateway WebSocket APIs?
Last updated: 2022-11-03
I get a "410 GoneException" error when trying to post a message to my Amazon API Gateway WebSocket API similar to the following:
... "errorMessage": "GoneException: 410" ...
How do I troubleshoot this?
You might receive the "410 GoneException" error if:
- A message was posted to the WebSocket API before the connection was established.
- The connection has been terminated, or the connection doesn't exist anymore.
- The client disconnected and then tried to reconnect using the same connectionId.
Note: For WebSocket APIs, the connectionId is required to send a callback response from the backend.
To troubleshoot WebSocket API errors, turn on Amazon CloudWatch Logs.
Note: For Log level, choose INFO to generate execution logs for all requests.
Execution logs contain information that you can use to identify and troubleshoot most API errors. For example:
- The requests that your API receives
- The integration backend responses from your API
- The response provided by AWS Lambda authorizers
- The requestId for AWS integration endpoints
For more information about each type of logging, see CloudWatch log formats for API Gateway.
Avoid making the postToConnection request from the Lambda function integrated with your $connect route. For example, if you want to post a message after the client connection is established, do the following:
- Create a child Lambda function that's asynchronously invoked by the parent function.
- On initiation of a new connection, the $connect route is invoked and the parent function invokes the child function passing the connectionId.
- The Lambda child function receives the connectionId and calls the getConnection operation to verify that the connection is valid. Then, the message is sent using the postToConnection method.