DynamoDB errors fall into two categories: user errors and system errors.
User errors are basically any DynamoDB request that returns an HTTP 400 status code. They are client side issues commonly caused by:
While the “ProvisionedThroughputExceededException” and “ConditionalCheckFailedException” errors return a 400 status code, they are not considered user errors because they are measured separately in Cloudwatch.
If user errors have only recently started happening, check to see if any code was released that might have broken your queries.
To address an increase in user errors, ensure that:
System errors indicate that an HTTP 500 status code was returned from DynamoDB. Either DynamoDB is not available, or could not process that particular request. Ensure your code uses a retry mechanism with exponential backoff to retry any requests resulting in a system error. Check the AWS status page to see if DynamoDB is experiencing an outage, and open a support ticket if your customers are affected.
Note: Our system uses DynamoDB metrics in Amazon CloudWatch to detect possible issues with DynamoDB. Due to the API limitations of CloudWatch, there can be a delay of as many as 20 minutes before our system can detect these issues.