前言
首先介绍下在本文出现的几个比较重要的概念:
函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。函数计算更多信息 参考。
Fun: Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API 网关、日志服务等资源。它通过一个资源配置文件(template.yml),协助您进行开发、构建、部署操作。Fun 的更多文档 参考。
备注: 本文介绍的技巧需要 Fun 版本大于等于 3.0.0+。
功能介绍
Fun Package 是用来将代码、编译产物、静态资源等本地资源上传到 OSS 的功能。
使用 Fun Package 的场景,通常是,想仅仅通过一个模板文件进行部署的场景。比如,本地开发完成后,可以通过 fun package,将模板依赖的本地资源上传到 OSS,这样,无论是在其他服务器上部署,还是使用 ROS 部署时,仅仅通过一个文本格式的模板文件,就可以完成了。
命令格式
使用 fun package 可以查看相关的帮助文档:
$ fun package -h
Usage: fun package [options]
packages the local artifacts to oss. In order that you can deploy your application directly through a template file
Options:
-t, --template <template> The template file path
-b, --oss-bucket <bucket> The name of the oss bucket where Fun uploads local artifacts
-o, --output-template-file <filename> The output path of the packaged template file
-h, --help output usage information
其中各参数的解释如下:
- -t 或 --template.yml: 表示的是要操作的模板文件,如果不指定,则使用默认值。
- -b 或 --oss-bucket: 表示的是将本地资源上传到的 OSS bucket 名称。
-
-o 或 --output-template-file: 表示的是生成的新模板的路径以及名称,如果不指定,则使用默认值,即
template.packaged.yml
。
使用示例
1. 初始化示例项目
直接执行下面的命令即可初始化一个简单的函数示例:
fun init -n RosDemo event-nodejs8
2. 项目打包
# -t 以及 -o 均使用默认值
fun package --oss-bucket bucket
# 指定要打包的模板位置
fun package --oss-bucket bucket -t demos/template.yml
# 指定输出模板的位置
fun package --oss-bucket bucket -o demos/template.packaged.yml
打包完成后,就可以进行后续的部署操作了,可以自行选择 fun deploy 或者 fun deploy --use-ros 的方式进行部署。
通过将打包后的模板文件与原文件相比较,可以发现,差异仅仅在使用了本地资源的场景,比如:
- CodeUri: './'
+ CodeUri: 'oss://bucket/PackageDemo/function/39ce6e9109a23d313bc267b1a5211273'
总结
通过 Fun Package 可以将模板文件包含的本地资源一键上传到 OSS 上,完成资源的打包操作,省却了手工打包时需要一个函数一个函数进行上传的繁琐步骤。
打包完成后,后续的部署操作,只需要完全基于这个打包后的模板文件即可,不再依赖本地的代码等资源,可以简化部署的难度,同时也支持了通过 ROS 的部署方式。