如何在Python Boto中加快put_item()操作?

我正在尝试加快将存储在AWS S3存储桶中的JSON文件中包含的记录传输到AWS DynamoDB表的速度。 JSON文件中的记录以[{'id':'123','name':'abc'},{'id':'456','name':'def'},...]格式的字典列表存储。要执行记录传输,我在Boto3中使用table.batch_writer()。该代码包含在AWS Lambda脚本中,这样,当S3存储桶中填充了新的JSON对象时,记录传输就会开始。我发现即使为AWS Lambda设置了最大超时时间(15分钟),对于所有记录(平均大约40K)也没有完成put_item()操作。 put_item()操作似乎非常慢,这使我认为这不是将记录从S3传输到DynamoDB的最佳方式。

是否有更快的方法将JSON记录从S3存储桶传输到DynamoDB表?

import json
import boto3

s3_client = boto3.client('s3')
dynamodb = boto3.resource('dynamodb',region_name='us-east-2')

def lambda_handler(event,context,verbose=True):
    bucket = event['Records'][0]['s3']['bucket']['name']
    json_filename = event['Records'][0]['s3']['object']['key']
    json_object = s3_client.get_object(Bucket=bucket,Key=json_filename)
    json_file = json_object['Body'].read()
    data_dict = json.loads(json_file)
    table = dynamodb.Table('the_dynamodb_table_name')
    with table.batch_writer() as batch:
        for rec in data_dict:
            batch.put_item(Item=rec)
i_michael 回答:如何在Python Boto中加快put_item()操作?

我建议您探索assign(test,{ x: "new",y: undefined })方法,该方法每批次最多可以写入16mb数据

https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/dynamodb.html#DynamoDB.Client.batch_write_item

本文链接:https://www.f2er.com/3143226.html

大家都在问