You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We're processing a Kinesis stream using an Enhanced Fan-Out consumer, and see the above error raised by Botocore. This error is being raised because the payload sent by Kinesis is greater than a hard-coded _MAX_PAYLOAD_LENGTH at 16Mb. There is no recovery from this, as the stream will continue to attempt to send the same event that exceeds the payload max length on retry.
Regression Issue
Select this option if this issue appears to be a regression.
Expected Behavior
I would expect that the _MAX_PAYLOAD_LENGTH value be configured to match the limits of Kinesis when processing as an Enhanced Fan-Out consumer. If Kinesis doesn't have an inherent limit, then this value should be easily configurable or recoverable by clients.
Current Behavior
InvalidPayloadLength('Payload length of 19271862 exceeded the maximum of 16777216')
Reproduction Steps
This isn't very useful as reproduction depends on external state in Kinesis
Hi @mjp9zn , thanks for reporting this. The internal specification for the protocol suggests there is a hard upper limit of 16MB for payload size. I have reached out to internal team for getting more context on this limit and get their insights. Also would file a ticket with Kinesis team to have this checked.
Describe the bug
Code location
We're processing a Kinesis stream using an Enhanced Fan-Out consumer, and see the above error raised by Botocore. This error is being raised because the payload sent by Kinesis is greater than a hard-coded
_MAX_PAYLOAD_LENGTH
at 16Mb. There is no recovery from this, as the stream will continue to attempt to send the same event that exceeds the payload max length on retry.Regression Issue
Expected Behavior
I would expect that the
_MAX_PAYLOAD_LENGTH
value be configured to match the limits of Kinesis when processing as an Enhanced Fan-Out consumer. If Kinesis doesn't have an inherent limit, then this value should be easily configurable or recoverable by clients.Current Behavior
Reproduction Steps
This isn't very useful as reproduction depends on external state in Kinesis
Possible Solution
No response
Additional Information/Context
Worked around the issue with the following snippet, which is far from ideal for production code:
SDK version used
1.35.77
Environment details (OS name and version, etc.)
AWS ECS container running image based off python:3.12.7-slim on AWS EC2 Linux/X86_64 (al2023-ami-ecs-hvm-2023.0.20240610-kernel-6.1-x86_64)
The text was updated successfully, but these errors were encountered: