AWS Lambda - Python - S3到Drive的服务已经工作,但是处理大文件时遇到了问题。
创始人
2024-11-16 15:00:54
0

处理大文件时,AWS Lambda函数有内存和执行时间的限制,因此需要对大文件进行分片处理。以下是一个示例代码,用于将S3桶中的大文件分片上传到Google Drive:

import os
import io
import boto3
from google.oauth2 import service_account
from googleapiclient.discovery import build


def lambda_handler(event, context):
    # 获取S3桶和文件名
    s3_bucket = event['Records'][0]['s3']['bucket']['name']
    s3_key = event['Records'][0]['s3']['object']['key']

    # 获取Google Drive的凭证和服务
    credentials = service_account.Credentials.from_service_account_file('credentials.json')
    drive_service = build('drive', 'v3', credentials=credentials)

    # 设置分片大小(5MB)
    chunk_size = 5 * 1024 * 1024

    # 获取S3对象
    s3_client = boto3.client('s3')
    s3_object = s3_client.get_object(Bucket=s3_bucket, Key=s3_key)

    # 获取S3对象的内容长度
    file_size = s3_object['ContentLength']

    # 计算分片数
    total_chunks = int(file_size / chunk_size) + 1

    # 创建Google Drive文件
    drive_file = drive_service.files().create(body={'name': s3_key}).execute()
    drive_file_id = drive_file['id']

    # 分片上传到Google Drive
    for i in range(total_chunks):
        # 读取分片数据
        start_byte = i * chunk_size
        end_byte = min((i + 1) * chunk_size, file_size)
        file_part = s3_client.get_object(Bucket=s3_bucket, Key=s3_key, Range=f"bytes={start_byte}-{end_byte}")['Body'].read()

        # 上传分片到Google Drive
        media_body = io.BytesIO(file_part)
        drive_service.files().update(fileId=drive_file_id, media_body=media_body).execute()

    return 'File uploaded to Google Drive successfully!'

上述代码通过分片处理大文件,将每个分片上传到Google Drive。为了使用Google Drive服务,我们需要将凭证存储在credentials.json文件中,并确保已经安装了必需的依赖包(例如google-authgoogle-api-python-client)。

请注意,上述示例仅为参考,你可能需要根据实际情况进行修改和调整。

相关内容

热门资讯

透视免费!新九天作必弊系统,赣... 透视免费!新九天作必弊系统,赣湘互娱辅助-切实是真的有辅助神器(哔哩哔哩)1、玩家可以在新九天作必弊...
截至目前!金虎爷辅助器,新51... 截至目前!金虎爷辅助器,新518互游插件下载-真是是真的有辅助神器(哔哩哔哩)1、下载好新518互游...
截至发稿!蜀山四川辅助脚本,福... 截至发稿!蜀山四川辅助脚本,福建天天开心辅助工具下载-真是真的是有辅助app(哔哩哔哩)1、上手简单...
随着!杭州都莱大菠萝买了挂有用... 随着!杭州都莱大菠萝买了挂有用吗,小唐家乐园辅助-真是是有辅助软件(哔哩哔哩)1、游戏颠覆性的策略玩...
2026版教学!欢乐掌心英山修... 2026版教学!欢乐掌心英山修改器,越乡游义乌辅助器免费试用-一直是真的有辅助挂(哔哩哔哩)1、上手...
教学辅助挂!微信呢小程序游戏辅... 教学辅助挂!微信呢小程序游戏辅助器,闲来山水广西辅助-好像确实有辅助技巧(哔哩哔哩)1.微信呢小程序...
为切实保障!衢州都莱辅助器免费... 为切实保障!衢州都莱辅助器免费,四川途游小程序辅助-总是存在有辅助工具(哔哩哔哩)1、很好的工具软件...
不少玩家反映!丰城双剑新版最强... 不少玩家反映!丰城双剑新版最强高分攻略,边锋老友填大坑辅助-原来真的有辅助攻略(哔哩哔哩)1、丰城双...
据悉!杭州都莱大菠萝有挂吗,创... 据悉!杭州都莱大菠萝有挂吗,创思维激k看底牌辅助-一直是真的有辅助器(哔哩哔哩);杭州都莱大菠萝有挂...
透视脚本!玉海楼茶苑游戏攻略,... 透视脚本!玉海楼茶苑游戏攻略,开心泉州免费辅助器-其实真的是有辅助软件(哔哩哔哩)1、打开软件启动之...