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

问题描述 投票:0回答:1

我正在尝试加速将存储在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)
python amazon-s3 aws-lambda amazon-dynamodb boto3
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.