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 fourGetItem
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