diff --git a/publish.yaml b/publish.yaml index ae08229..92d3f3c 100644 --- a/publish.yaml +++ b/publish.yaml @@ -1,6 +1,6 @@ Type: Application Name: start-unzip-oss -Version: 0.0.13 +Version: 0.0.14 Provider: - 阿里云 Description: 使用函数计算自动解压上传到OSS指定前缀目录的zip文件 @@ -91,7 +91,7 @@ Parameters: title: 前缀 type: string default: src - description: 建议设置精准的前缀,同一个 Bucket 下的不同触发器条件不能重叠包含 + description: 配置触发函数计算的文件前缀。您上传指定前缀的ZIP文件或将ZIP文件上传至指定目录会触发函数计算。置空此项则匹配所有上传的ZIP文件,置空此项可能会触发循环执行,建议您配置文件前缀。 processedDir: title: 解压目标目录 type: string diff --git a/readme.md b/readme.md deleted file mode 100644 index 8f7eee6..0000000 --- a/readme.md +++ /dev/null @@ -1,92 +0,0 @@ -# start-unzip-oss 帮助文档 - -

- - - - - - - - - -

- - - -> ***快速部署自动解压上传到OSS指定前缀目录的zip文件的应用到阿里云函数计算*** - - - - -
- - - - - - - -## 部署 & 体验 - - - -- :fire: 通过 [Serverless 应用中心](https://fcnext.console.aliyun.com/applications/create?template=start-unzip-oss) , -[![Deploy with Severless Devs](https://img.alicdn.com/imgextra/i1/O1CN01w5RFbX1v45s8TIXPz_!!6000000006118-55-tps-95-28.svg)](https://fcnext.console.aliyun.com/applications/create?template=start-unzip-oss) 该应用。 - - - -- 通过 [Serverless Devs Cli](https://www.serverless-devs.com/serverless-devs/install) 进行部署: - - [安装 Serverless Devs Cli 开发者工具](https://www.serverless-devs.com/serverless-devs/install) ,并进行[授权信息配置](https://www.serverless-devs.com/fc/config) ; - - 初始化项目:`s init start-unzip-oss -d start-unzip-oss` - - 进入项目,并进行项目部署:`cd start-unzip-oss && s deploy -y` - - - - - -# 应用详情 - -![](https://img.alicdn.com/imgextra/i1/O1CN01V092Oa1p04ieFtASz_!!6000000005297-2-tps-1220-320.png) - -通过给函数创建 OSS 触发器, 用户只需要给对应的 OSS 指定前缀目录上传 zip 文件, 就会自动触发解压函数执行, 解压函数会把解压后的文件和文件夹转存回 OSS - -**方案优越性** -使用流式解压方案, 不管多大的 zip 包都可以解压, 不使用临时磁盘空间, 默认设置的函数最大执行时长为 2h, 能满足绝大部分场景。 - -通过 Serverless Devs 开发者工具,您只需要几步,就可以体验 Serverless 架构,带来的降本提效的技术红利。 - -## 声明 - -这个应用函数针解压对文件和文件夹命名编码是如下格式: -1. mac/linux 系统, 默认是utf-8 -2. windows 系统, 默认是gb2312(或者gb18030), 也可以是utf-8 - -对于其他编码,我们这里尝试使用chardet这个库进行编码判断, 但是这个并不能保证100% 正确,建议用户先调试函数,如果有必要改写这个函数,并保证调试通过 -## Tips: -上面的示例, 解压保存回去的都还是本身触发函数的 OSS, 如果是保存到其他 OSS, 直接将 `bucket.put_object(newKey + name, file_obj)` 这样上传回 oss 的代码修改下即可, 比如: - -```python -auth = oss2.Auth('', '') -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](https://github.com/serverless-devs/serverless-devs/issues) 中进行反馈和交流。如果您想要加入我们的讨论组或者了解 FC 组件的最新动态,您可以通过以下渠道进行: - -

- -| | | | -|--- | --- | --- | -|

微信公众号:\`serverless\`
|
微信小助手:\`xiaojiangwh\`
|
钉钉交流群:\`33947367\`
| - -

- -
\ No newline at end of file diff --git a/readme.md b/readme.md new file mode 120000 index 0000000..1105835 --- /dev/null +++ b/readme.md @@ -0,0 +1 @@ +src/readme.md \ No newline at end of file diff --git a/src/readme.md b/src/readme.md index 8f7eee6..7ff5704 100644 --- a/src/readme.md +++ b/src/readme.md @@ -1,5 +1,7 @@ -# start-unzip-oss 帮助文档 +> 注:当前项目为 Serverless Devs 应用,由于应用中会存在需要初始化才可运行的变量(例如应用部署地区、服务名、函数名等等),所以**不推荐**直接 Clone 本仓库到本地进行部署或直接复制 s.yaml 使用,**强烈推荐**通过 `s init ` 的方法或应用中心进行初始化,详情可参考[部署 & 体验](#部署--体验) 。 + +# start-unzip-oss 帮助文档

@@ -14,56 +16,118 @@ -> ***快速部署自动解压上传到OSS指定前缀目录的zip文件的应用到阿里云函数计算*** +使用函数计算自动解压上传到OSS指定前缀目录的zip文件 - -
+ - +- [:smiley_cat: 代码](https://github.com/devsapp/start-unzip-oss/tree/main/src) - + + - + + + + + +## 前期准备 + +使用该项目,您需要有开通以下服务: + + + + + +| 服务 | 备注 | +| --- | --- | +| 函数计算 FC | unzip解压函数部署在函数计算 | +| 对象存储 OSS | 待解压的zip文件和解压后的文件存放在对象存储 | + + + +推荐您拥有以下的产品权限 / 策略: + + + + +| 服务/业务 | 权限 | 备注 | +| --- | --- | --- | +| 函数计算 | AliyunFCFullAccess | 创建和更新 unzip 解压函数 | +| OSS | AliyunOSSFullAccess | 创建或更新 unzip 解压函数的 OSS 触发器 | + + + + + + + + + + + + + + ## 部署 & 体验 - + - :fire: 通过 [Serverless 应用中心](https://fcnext.console.aliyun.com/applications/create?template=start-unzip-oss) , -[![Deploy with Severless Devs](https://img.alicdn.com/imgextra/i1/O1CN01w5RFbX1v45s8TIXPz_!!6000000006118-55-tps-95-28.svg)](https://fcnext.console.aliyun.com/applications/create?template=start-unzip-oss) 该应用。 - + [![Deploy with Severless Devs](https://img.alicdn.com/imgextra/i1/O1CN01w5RFbX1v45s8TIXPz_!!6000000006118-55-tps-95-28.svg)](https://fcnext.console.aliyun.com/applications/create?template=start-unzip-oss) 该应用。 + - + + - 通过 [Serverless Devs Cli](https://www.serverless-devs.com/serverless-devs/install) 进行部署: - - [安装 Serverless Devs Cli 开发者工具](https://www.serverless-devs.com/serverless-devs/install) ,并进行[授权信息配置](https://www.serverless-devs.com/fc/config) ; - - 初始化项目:`s init start-unzip-oss -d start-unzip-oss` - - 进入项目,并进行项目部署:`cd start-unzip-oss && s deploy -y` - + - [安装 Serverless Devs Cli 开发者工具](https://www.serverless-devs.com/serverless-devs/install) ,并进行[授权信息配置](https://docs.serverless-devs.com/fc/config) ; + - 初始化项目:`s init start-unzip-oss -d start-unzip-oss ` + - 进入项目,并进行项目部署:`cd start-unzip-oss && s deploy - y` + +## 应用详情 + -# 应用详情 +![](http://image.editor.devsapp.cn/alibaba/4A5uks4sawFd26h9ksuc.png) + +匹配解压规则的ZIP文件在上传到OSS后,会自动触发函数计算进行解压。文件解压完成后,会存储至OSS的指定目录中。 + + +## 注意事项 + +- 建议使用UTF-8或GB 2312编码命名您的文件或文件夹,否则可能会出现解压后的文件或文件夹名称出现乱码、解压过程中断等问题。 + +- 归档或冷归档类型的文件需先解冻再解压。 + +- 解压单个压缩包的最大时间是2小时,超过2小时未完成的任务会解压失败。 + +- 建议ZIP包里面的单文件大小最好不超过1 GB,否则可能解压失败。如果出现这个场景, 请参考:[unzip-oss-with-nas](https://github.com/zhaohang88/unzip-oss-nas) -![](https://img.alicdn.com/imgextra/i1/O1CN01V092Oa1p04ieFtASz_!!6000000005297-2-tps-1220-320.png) +- 默认设置的函数执行时长为2h, 如果不满足需求, 自己直接调整函数的 timeout, 最大可到 24h -通过给函数创建 OSS 触发器, 用户只需要给对应的 OSS 指定前缀目录上传 zip 文件, 就会自动触发解压函数执行, 解压函数会把解压后的文件和文件夹转存回 OSS -**方案优越性** -使用流式解压方案, 不管多大的 zip 包都可以解压, 不使用临时磁盘空间, 默认设置的函数最大执行时长为 2h, 能满足绝大部分场景。 + + +## 使用文档 + + + + +## 参数说明 + + +![](http://image.editor.devsapp.cn/alibaba/kD1lbEw48Er4s27212ri.png) -通过 Serverless Devs 开发者工具,您只需要几步,就可以体验 Serverless 架构,带来的降本提效的技术红利。 -## 声明 +## 配置示例 +![](http://image.editor.devsapp.cn/alibaba/lASAfezjvifa9Cwawht6.png) -这个应用函数针解压对文件和文件夹命名编码是如下格式: -1. mac/linux 系统, 默认是utf-8 -2. windows 系统, 默认是gb2312(或者gb18030), 也可以是utf-8 -对于其他编码,我们这里尝试使用chardet这个库进行编码判断, 但是这个并不能保证100% 正确,建议用户先调试函数,如果有必要改写这个函数,并保证调试通过 -## Tips: +## 二次开发示例 上面的示例, 解压保存回去的都还是本身触发函数的 OSS, 如果是保存到其他 OSS, 直接将 `bucket.put_object(newKey + name, file_obj)` 这样上传回 oss 的代码修改下即可, 比如: ```python @@ -71,22 +135,23 @@ auth = oss2.Auth('', '') 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](https://github.com/serverless-devs/serverless-devs/issues) 中进行反馈和交流。如果您想要加入我们的讨论组或者了解 FC 组件的最新动态,您可以通过以下渠道进行: -

+

| | | | -|--- | --- | --- | -|

微信公众号:\`serverless\`
|
微信小助手:\`xiaojiangwh\`
|
钉钉交流群:\`33947367\`
| - +| --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | +|
微信公众号:`serverless`
|
微信小助手:`xiaojiangwh`
|
钉钉交流群:`33947367`
|

- - \ No newline at end of file +