AWS DynamoDB - 使用 JSON 文件作为输入使用 Boto3 加载数据

AWS DynamoDB - Load data with Boto3 using JSON file as input

我在 Amazon DynamoDB 中有多个表,JSON 数据 目前正在使用 batch-write-item 命令作为 AWS CLI 的一部分提供 - 这很好用。

但是我只想使用 Python + Boto3 但是 not 能够执行 Boto BatchWriteItem 以外部数据文件作为输入的请求。我设想如果有 Boto3 脚本,它会如下所示,但我无法找到它的 documentation/examples。

示例(伪代码)

table = dynamodb.Table(‘my_table’)
table.BatchWriteItem(RequestItems=file://MyData.json)

参考:http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_BatchWriteItem.html

感谢指点。

最好看的地方是 Boto3 的 readthedocs:https://boto3.readthedocs.org/en/latest/reference/services/dynamodb.html#DynamoDB.Client.batch_write_item

只要您的 JSON 格式正确,如示例中所示,您就可以使用:

f = open('MyData.json')
request_items = json.loads(f.read())
client = boto3.client('dynamodb')
response = client.batch_write_item(RequestItems=request_items)

我是这样加载的 JSON

import boto3
import json

dynamodbclient=boto3.resource('dynamodb')
sample_table = dynamodbclient.Table('ec2metadata')

with open('/samplepath/spotec2interruptionevent.json', 'r') as myfile:
    data=myfile.read()

# parse file
obj = json.loads(data)

#instance_id and cluster_id is the Key in dynamodb table 

    response=sample_table.put_item(
                              Item={
                                  'instance_id': instanceId,
                                  'cluster_id': clusterId,
                                  'event':obj

                              }
                              )