2 回答

TA贡献1828条经验 获得超4个赞
DynamoDB 客户端希望参数为 (每 https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/dynamodb.html#DynamoDB.Client.put_itemItemdict)
当你做你得到的是一个列表,所以传递给一个参数期望显然会失败。recList = obj['Body'].read().split('\n')strstrdict
需要考虑的另一件事是,DynamoDB 客户端需要具有非常特定格式的项目,并具有显式指定的属性数据类型。如果您想读取 JSON 并简单地编写它,我建议使用 DynamoDB 资源,如下所示:
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table(table_name)
table.put_item(item)
Table.put_item()接受简单,无需为每个属性指定数据类型,因此您只需从文件中读取,将其转换为dict并将其发送出去(https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/dynamodb.html#DynamoDB.Table.put_item)。dict

TA贡献1827条经验 获得超8个赞
您需要操作每行才能具有“S”格式:
import json for row in recList: row_dict = json.loads(row) ddb_row_dict = {k:{"S": v} for (k,v) in row_dict.items()} response = dynamodb.put_item(TableName='test-abe', Item=ddb_row_dict)
添加回答
举报