Introduction
Sometimes when you send many items to DynamoDB at once, some items might not be saved immediately. Handling unprocessed items helps you try saving them again.
BatchWriteItemRequest {
RequestItems: {
TableName: [
{ PutRequest: { Item: {...} } },
{ DeleteRequest: { Key: {...} } }
]
}
}
Response {
UnprocessedItems: {
TableName: [
{ PutRequest: { Item: {...} } },
{ DeleteRequest: { Key: {...} } }
]
}
}BatchWriteItemRequest {
RequestItems: {
'Books': [
{ PutRequest: { Item: { 'ISBN': { S: '123' }, 'Title': { S: 'Learn SQL' } } } },
{ DeleteRequest: { Key: { 'ISBN': { S: '456' } } } }
]
}
}Response {
UnprocessedItems: {
'Books': [
{ PutRequest: { Item: { 'ISBN': { S: '123' }, 'Title': { S: 'Learn SQL' } } } }
]
}
}aws dynamodb batch-write-item --request-items file://batch.json > response.json # Check response.json for UnprocessedItems # If UnprocessedItems exist, extract them to unprocessed.json (e.g., using jq '{RequestItems: .UnprocessedItems}' response.json > unprocessed.json) # Then resend: aws dynamodb batch-write-item --request-items file://unprocessed.json
response = client.batch_write_item(RequestItems=batch)
if response.get('UnprocessedItems'):
retry_items = response['UnprocessedItems']
else:
retry_items = None
print(retry_items)
What will be printed if all items were processed successfully?while True:
response = client.batch_write_item(RequestItems=items)
items = response.get('UnprocessedItems', {})
if not items:
break
What is the likely bug causing infinite retries?Pass the test and this pattern moves unknown