在处理大型文件时,AWS Lambda函数执行时间可能会超过默认的5分钟限制。为了解决“AWS Lambda上传到S3超时”的问题,可以采用以下解决方法:
import boto3
def lambda_handler(event, context):
# 设置Lambda函数的超时时间为15分钟
context.set_remaining_time_in_millis(900000)
# 继续执行你的代码逻辑
s3_client = boto3.client('s3')
# ...
import boto3
def lambda_handler(event, context):
# 设置Lambda函数的超时时间为15分钟
context.set_remaining_time_in_millis(900000)
# 分段上传文件
s3_client = boto3.client('s3')
response = s3_client.create_multipart_upload(Bucket='my-bucket', Key='my-object')
upload_id = response['UploadId']
# 按照指定的大小分割文件并上传
part_size = 10 * 1024 * 1024 # 每个分段大小为10MB
with open('large_file.txt', 'rb') as file:
part_number = 1
while True:
data = file.read(part_size)
if not data:
break
s3_client.upload_part(Body=data, Bucket='my-bucket', Key='my-object', PartNumber=part_number, UploadId=upload_id)
part_number += 1
# 完成分段上传
s3_client.complete_multipart_upload(Bucket='my-bucket', Key='my-object', UploadId=upload_id)
通过以上两种方法,您可以解决“AWS Lambda上传到S3超时”的问题,并确保成功上传大型文件到S3。