import requests
import logging
import tempfile
import os
def handler(event, context):
# 配置信息
oss_endpoint = ‘https://oss-cn-hangzhou.aliyuncs.com’
bucket_name = ‘your-bucket-name’
access_key_id = os.environ.get(‘ACCESS_KEY_ID’)
access_key_secret = os.environ.get(‘ACCESS_KEY_SECRET’)
# 从事件中获取下载URL和目标OSS路径
event_data = eval(event)
download_url = event_data.get(‘download_url’)
oss_key = event_data.get(‘oss_key’)
if not download_url or not oss_key:
return {‘success’: False, ‘error’: ‘Missing download_url or oss_key’}
try:
# 初始化OSS客户端
auth = oss2.Auth(access_key_id, access_key_secret)
bucket = oss2.Bucket(auth, oss_endpoint, bucket_name)
# 下载文件
response = requests.get(download_url, stream=True)
response.raise_for_status
# 创建临时文件
with tempfile.NamedTemporaryFile(delete=False) as tmp_file:
for chunk in response.iter_content(chunk_size=8192):
if chunk:
tmp_file.write(chunk)
tmp_path = tmp_file.name
# 上传至OSS
with open(tmp_path, ‘rb’) as f:
result = bucket.put_object(oss_key, f)
# 清理临时文件
os.unlink(tmp_path)
return {
‘success’: True,
‘message’: f’File uploaded successfully’,
‘etag’: result.etag,
‘url’: f’https://{bucket_name}.{oss_endpoint}/{oss_key}’
except Exception as e:
logging.error(f’Error occurred: {str(e)}’)
return {‘success’: False, ‘error’: str(e)}
oss2==2.18.0
requests==2.31.0
该脚本通过环境变量获取OSS访问凭证,从事件参数中提取下载URL和目标路径,使用requests库流式下载文件,最后通过OSS SDK将文件上传至指定存储桶。

触发器配置与事件格式
函数计算支持多种触发器类型,可根据实际需求选择合适的触发方式:
| 触发器类型 | 适用场景 | 事件示例 |
|---|---|---|
| 定时触发器 | 定期同步特定文件 | {“download_url”: “https://example.com/data.zip”, “oss_key”: “backups/data.zip”} |
| HTTP触发器 | 按需触发下载任务 | 同上,通过HTTP请求传递 |
| 消息队列触发器 | 批量处理下载任务 | 支持多个下载任务的消息数组 |
监控与错误处理
为确保系统的稳定运行,需要建立完善的监控和错误处理机制:
- 日志监控:通过函数计算内置的日志服务记录执行详情
- 指标监控:监控函数执行次数、耗时、错误率等关键指标
- 重试机制:针对网络波动等临时性错误实现自动重试
- 告警配置:当连续失败或错误率超标时触发告警
应用场景与最佳实践
该解决方案在以下场景中具有显著优势:
- 数据备份同步:定期从外部数据源同步备份文件
- 媒体文件处理:自动下载用户指定的图片、视频资源
- 日志归档:将分布式系统产生的日志文件统一归档至OSS
- 批量数据处理:处理需要从多个数据源收集数据的ETL任务
通过函数计算与对象存储的紧密结合,企业能够构建高效、可靠的文件自动化处理流水线,显著降低运维成本,提升数据处理效率。随着无服务器技术的不断发展,这种架构模式将在更多场景中展现其价值。
内容均以整理官方公开资料,价格可能随活动调整,请以购买页面显示为准,如涉侵权,请联系客服处理。
本文由星速云发布。发布者:星速云。禁止采集与转载行为,违者必究。出处:https://www.67wa.com/134799.html