将文件从S3存储桶提交到Python Lambda函数中的代解压缩存储库,可以通过以下步骤实现:
以下是一个示例代码,用于将S3存储桶中的文件解压缩并存储到指定的目录中:
import os
import boto3
import zipfile
def lambda_handler(event, context):
# 获取S3存储桶和文件信息
bucket_name = event['Records'][0]['s3']['bucket']['name']
file_key = event['Records'][0]['s3']['object']['key']
# 创建临时目录用于解压缩
temp_dir = '/tmp/unzip'
os.makedirs(temp_dir, exist_ok=True)
# 下载文件到本地临时目录
s3_client = boto3.client('s3')
local_file_path = os.path.join(temp_dir, os.path.basename(file_key))
s3_client.download_file(bucket_name, file_key, local_file_path)
# 解压缩文件
with zipfile.ZipFile(local_file_path, 'r') as zip_ref:
zip_ref.extractall(temp_dir)
# 将解压后的文件存储到指定目录
target_dir = '/tmp/target'
os.makedirs(target_dir, exist_ok=True)
for file_name in os.listdir(temp_dir):
file_path = os.path.join(temp_dir, file_name)
if os.path.isfile(file_path):
target_path = os.path.join(target_dir, file_name)
os.rename(file_path, target_path)
# 清理临时文件
os.remove(local_file_path)
os.rmdir(temp_dir)
# 返回处理结果
return {
'statusCode': 200,
'body': 'File extracted and stored successfully.'
}
在上述代码中,首先获取S3存储桶和文件的信息。然后创建一个临时目录用于解压缩文件。接着使用腾讯云的SDK下载文件到本地临时目录,并使用Python的zipfile模块解压缩文件。最后将解压后的文件存储到指定的目录中,并清理临时文件。处理完成后,返回一个处理结果的响应。
请注意,上述代码仅为示例,实际应用中可能需要根据具体需求进行适当的修改和优化。
推荐的腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云