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)
添加回答
舉報