I want to troubleshoot "410 GoneException" errors when I post a message to my Amazon API Gateway WebSocket API.
Short description
You might receive the "410 GoneException" error for the following reasons:
- A message was posted to the WebSocket API before the connection was established
- The connection was terminated or doesn't exist
- The client disconnected, and then tried to reconnect using the same connectionId
- The connectionID isn't valid
Note: For WebSocket APIs, the connectionId is required to send a callback response from the backend.
Resolution
To troubleshoot WebSocket API errors, turn on Amazon CloudWatch Logs. 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:
For more information, see CloudWatch log formats for API Gateway.
To establish your connection, use the AWS SDK ApiGatewayManagementApi to call the getConnection operation before you post messages to WebSocket APIs.
Don't make the postToConnection request from the Lambda function integrated with your $connect route. To post a message after the client connection is established, complete the following steps:
- Create a child Lambda function that's asynchronously invoked by the parent function.
- Initiate a new connection. Then, 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.
- Send a message using the postToConnection method.
Related information
Overview of WebSocket APIs in API Gateway
How do I pass a connectionId or custom token to VPC link integration as a header for API Gateway WebSocket APIs?