首页 > 解决方案 > 单个 boto3 dynamodb 客户端可以同时更新多个表吗?

问题描述

client = boto3.resource('dynamodb')

我想知道我是否能够同时使用这个客户端的 2 个表来使用 batchwriteitem,还是应该创建另一个客户端?dynamodb 甚至可以处理不同表的同时更新吗?

标签: amazon-web-servicesaws-lambdaamazon-dynamodb

解决方案


是的,您可以使用同一个客户端同时在两个或多个表中写入或删除项目,文档

BatchWriteItem 操作在一个或多个表中放置或删除多个项目。对 BatchWriteItem 的一次调用可以写入多达 16 MB 的数据,其中可以包含多达 25 个放置或删除请求。要写入的单个项目可以大到 400 KB

import boto3

client = boto3.client("dynamodb")

response = client.batch_write_item(
    RequestItems={
        "table_1": [
            {
                "PutRequest": {
                    "Item": {
                        "Key": {
                            "S": "key1",
                        }
                    }
                },
            },
            {
                "PutRequest": {
                    "Item": {
                        "Key": {
                            "S": "key2",
                        }
                    }
                },
            },
        ],
        "table_2": [
            {
                "PutRequest": {
                    "Item": {
                        "Key": {
                            "S": "key1",
                        }
                    }
                },
            },
            {
                "PutRequest": {
                    "Item": {
                        "Key": {
                            "S": "key2",
                        }
                    }
                },
            },
        ],
    },
    ReturnConsumedCapacity="TOTAL",
)

# output
{'UnprocessedItems': {}, 'ConsumedCapacity': [{'TableName': 'table_1', 'CapacityUnits': 2.0}, {'TableName': 'table_2', 'CapacityUnits': 2.0}], 'ResponseMetadata': {'RequestId': 'XXX', 'HTTPStatusCode': 200, 'HTTPHeaders': {'server': 'Server', 'date': 'Fri, 06 Aug 2021 01:53:43 GMT', 'content-type': 'application/x-amz-json-1.0', 'content-length': '132', 'connection': 'keep-alive', 'x-amzn-requestid': 'XXX', 'x-amz-crc32': '123'}, 'RetryAttempts': 0}}

推荐阅读