python-3.x - 使用 Lambda 和 BOTO3 在存储桶之间复制文件的问题
问题描述
我的任务是将上传的 .zip 或 .tar 对象从存储桶 A 复制到存储桶 B,但是一旦文件似乎超过大约 17 MB,就会出现问题,lambda 函数似乎没有启动,我没有确定为什么。我已经测试了从 1B 到 16MB 的大小并且似乎运行得很好,但是一旦文件超过 17 MB,它似乎就没有运行或者我猜超时了。对正在发生的事情的想法?
我尝试使用 copy_object 和托管传输(已注释掉),但它们都以相同的大小失败。想法?
建议?
import re
import boto3
import json
import os
def lambda_handler(event, context):
s3_client = boto3.client('s3')
s3 = boto3.resource('s3')
regex = re.compile('[@_!#$%^& *()<>?|}{~:]')
max_file_size = 30000000000
for record in event['Records']:
startTime = record['eventTime']
source_bucket_name = record['s3']['bucket']['name']
source_object_key = record['s3']['object']['key']
source_object_size = record['s3']['object']['size']
copy_source={
'Bucket': source_bucket_name,
'Key': source_object_key
}
source_object_base_key = os.path.basename(source_object_key)
if (source_object_size > max_file_size or regex.search(source_object_key)):
print("Object is " + str(source_object_size))
print("Object should be moved to failed directory")
s3_client.copy_object(CopySource=copy_source, Bucket=fail_bucket, Key=source_object_base_key)
s3_client.delete_object(Bucket=source_bucket_name, Key=source_object_key)
# s3.meta.client.copy(copy_source, fail_bucket, source_object_base_key)
# s3_client.delete_object(Bucket=source_bucket_name, Key=source_object_key)
return {
'statusCode': 422,
'body': json.dumps('File is either too big or invalid')
}
else:
print("Object is " + str(source_object_size))
s3_client.copy_object(CopySource=copy_source, Bucket=success_bucket, Key=source_object_base_key)
s3_client.delete_object(Bucket=source_bucket_name, Key=source_object_key)
# s3.meta.client.copy(copy_source, success_bucket, source_object_base_key)
# s3_client.delete_object(Bucket=source_bucket_name, Key=source_object_key)
return {
'statusCode': 200,
'body': json.dumps("File is valid ")
}
解决方案
推荐阅读
- excel - Excel VBA,如何实现这种格式化?Nmbr 带逗号并四舍五入到小数点后 2 位
- math - 在计算机上计算 tan 的最快方法是什么?
- c# - 如何访问 Authors 中的值?
- riscv - gem5模拟器上的RISCV 32位架构
- android - 颤振字符串在未来为空
- google-cloud-platform - 谷歌云 NLP API (documents.analyzeEntities) 的 Json 格式
- json - 使用 JOLT 需要使用 If Then Else 条件转换 JSON 对象
- sql-server - Microsoft SQL Server 的 JDBC 驱动程序:在从属和主控之间自动切换读取和写入
- php - SSH 和 exec() 用户不同
- c++ - CMake 搜索首先包含系统目录中的文件