Posted: 5/Feb/2024
You can club multiple (up to 100) GetItem
requests in a single BatchGetItem
operation - this can be done across multiple tables.
Here is an example that fetches includes four GetItem
calls across two different tables:
resp, err := client.BatchGetItem(context.Background(), &dynamodb.BatchGetItemInput{
RequestItems: map[string]types.KeysAndAttributes{
"customer": types.KeysAndAttributes{
Keys: []map[string]types.AttributeValue{
{
"email": &types.AttributeValueMemberS{Value: "c1@foo.com"},
},
{
"email": &types.AttributeValueMemberS{Value: "c2@foo.com"},
},
},
},
"Thread": types.KeysAndAttributes{
Keys: []map[string]types.AttributeValue{
{
"ForumName": &types.AttributeValueMemberS{Value: "Amazon DynamoDB"},
"Subject": &types.AttributeValueMemberS{Value: "DynamoDB Thread 1"},
},
{
"ForumName": &types.AttributeValueMemberS{Value: "Amazon S3"},
"Subject": &types.AttributeValueMemberS{Value: "S3 Thread 1"},
},
},
ProjectionExpression: aws.String("Message"),
},
},
ReturnConsumedCapacity: types.ReturnConsumedCapacityTotal,
})
Just like an individual GetItem
call, you can include Projection Expressions and return RCUs. Note that BatchGetItem
can only retrieve up to 16 MB of data.
Recommended reading: BatchGetItem API doc
Top comments (0)