注:当前项目为 Serverless Devs 应用,由于应用中会存在需要初始化才可运行的变量(例如应用部署地区、服务名、函数名等等),所以不推荐直接 Clone 本仓库到本地进行部署或直接复制 s.yaml 使用,强烈推荐通过
s init
的方法或应用中心进行初始化,详情可参考部署 & 体验 。
使用函数计算自动解压上传到OSS指定前缀目录的zip文件
使用该项目,您需要有开通以下服务:
服务 | 备注 |
---|---|
函数计算 FC | unzip解压函数部署在函数计算 |
对象存储 OSS | 待解压的zip文件和解压后的文件存放在对象存储 |
推荐您拥有以下的产品权限 / 策略:
服务/业务 | 权限 | 备注 |
---|---|---|
函数计算 | AliyunFCFullAccess | 创建和更新 unzip 解压函数 |
OSS | AliyunOSSFullAccess | 创建或更新 unzip 解压函数的 OSS 触发器 |
- 🔥 通过 Serverless 应用中心 ,
该应用。
- 通过 Serverless Devs Cli 进行部署:
- 安装 Serverless Devs Cli 开发者工具 ,并进行授权信息配置 ;
- 初始化项目:
s init start-unzip-oss -d start-unzip-oss
- 进入项目,并进行项目部署:
cd start-unzip-oss && s deploy - y
匹配解压规则的ZIP文件在上传到OSS后,会自动触发函数计算进行解压。文件解压完成后,会存储至OSS的指定目录中。
-
建议使用UTF-8或GB 2312编码命名您的文件或文件夹,否则可能会出现解压后的文件或文件夹名称出现乱码、解压过程中断等问题。
-
归档或冷归档类型的文件需先解冻再解压。
-
解压单个压缩包的最大时间是2小时,超过2小时未完成的任务会解压失败。
-
建议ZIP包里面的单文件大小最好不超过1 GB,否则可能解压失败。如果出现这个场景, 请参考:unzip-oss-with-nas
-
默认设置的函数执行时长为2h, 如果不满足需求, 自己直接调整函数的 timeout, 最大可到 24h
上面的示例, 解压保存回去的都还是本身触发函数的 OSS, 如果是保存到其他 OSS, 直接将 bucket.put_object(newKey + name, file_obj)
这样上传回 oss 的代码修改下即可, 比如:
auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>')
dst_bucket_name = "xxx-bucket"
dst_bucket = oss2.Bucket(auth, endpoint, dst_bucket_name)
dst_bucket.put_object(newKey + name, file_obj)
您如果有关于错误的反馈或者未来的期待,您可以在 Serverless Devs repo Issues 中进行反馈和交流。如果您想要加入我们的讨论组或者了解 FC 组件的最新动态,您可以通过以下渠道进行:
微信公众号:serverless |
微信小助手:xiaojiangwh |
钉钉交流群:33947367 |