开始之前请确保如下工具已经正确的安装,更新到最新版本,并进行正确的配置。
Funcraft 是函数计算提供的一种命令行工具,通过该工具,您可以便捷地管理函数计算、API 网关、日志服务等资源。通过一个资源配置文件 template.yml,Funcraft 即可协助您进行开发、构建、部署操作。本文提供安装 Funcraft 的三种方式。
-
安装
-
执行以下命令安装Funcraft
npm install @alicloud/fun -g
-
安装完成之后,在控制终端执行fun命令查看版本信息。
fun --version
-
-
配置Funcraft
-
执行以下命令
fun config
-
按照提示依次配置 Account ID、AccessKeyId、AccessKeySecret、Default Region Name。
-
Funcraft 进行依赖编译、安装、本地运行调试等,需要依赖于Docker来模拟本地环境。
Windows
-
安装
根据系统下载并安装 Docker Desktop
-
配置国内镜像
{ "registry-mirrors": [ "https://docker.mirrors.ustc.edu.cn", "https://registry.docker-cn.com", "http://hub-mirror.c.163.com" ] }
在桌面右下角状态栏中右键 docker 图标,修改在 Docker Daemon 标签页中的 json ,把 上面的镜像地址加到"registry-mirrors"的数组里,保存即可。
Tips: 推荐使用阿里云Docker镜像。
-
生成Funcraft的配置文件
fun config
按照提示依次配置 Account ID、AccessKeyId、AccessKeySecret、Default Region Name。
-
安装依赖
fun install -d
在本地调试代码,可以使用如下命令:
$ fun local start
using template: template.yml
HttpTrigger httpTrigger of FunPuppetter/baiduKeywordResult was registered
url: http://localhost:8000/2016-08-15/proxy/FunPuppetter/baiduKeywordResult
methods: [ 'POST', 'GET' ]
authType: ANONYMOUS
浏览器打开http://localhost:8000/2016-08-15/proxy/FunPuppetter/baiduKeywordResult
,会自动下载Response
Response:
{"msg":"参数不正确!","code":4005,"data":null}
携带keyword和page参数后Response:
http://localhost:8000/2016-08-15/proxy/FunPuppetter/baiduKeywordResult?keyword=vue&page=3
{
"msg": "success",
"data": [
{
"title": "vue.js官网",
"abstract": "Vue.js - The Progressive JavaScript Framework... 订阅我们的周刊 (英文) 你可以在 news.vuejs.org 翻阅往期的 issue,也可以收听 podcast。",
"redirectUrl": "http://www.baidu.com/link?url=Men7IMCzaXf2qP148hYmJKK54l5fL03Wbya_S4L25_i",
"url": "https://cn.vuejs.org/",
"domain": "cn.vuejs.org",
"keyword": "vue",
"pageNum": 1,
"rank": 1
},
{
"title": "Vue.js 教程 | 菜鸟教程",
"abstract": "Vue.js 教程 Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的渐进式框架。 Vue 只关注视图层, 采用自底向上增量开发的设计。 Vue 的目标是通过...",
"redirectUrl": "http://www.baidu.com/link?url=WXIdaqC4EhUmm3Vdis5p0BCM3vUo139WwLQCB28LV8p5epqoiZMceQ1AWV_HpjKAb2jaqVpsXyWytUzPrnDqt_",
"url": "https://www.runoob.com/vue2/vue-tutorial.html",
"domain": "www.runoob.com",
"keyword": "vue",
"pageNum": 1,
"rank": 2
},
{
"title": "介绍— Vue.js",
"abstract": "Vue.js - The Progressive JavaScript Framework... Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设...",
"redirectUrl": "http://www.baidu.com/link?url=RjryFjnGxvreIzhFX1iicF8hHcRbNhkoTTTrFLjsLk4EmqM5ydhCbTR2vye8NBUv",
"url": "https://cn.vuejs.org/v2/guide/",
"domain": "cn.vuejs.org",
"keyword": "vue",
"pageNum": 1,
"rank": 3
}
.......
],
"code": 2000
}
在本地调试代码,可以使用如下命令:
- 确认yml文件中的配置,选择Y就可以了,使用
fun deploy -y
部署时可跳过确认
- 使用nas服务管理依赖
FunPuppetter/baiduKeywordResult函数大小超过50M,需要使用Nas服务来管理依赖。
-
? Do you want to let fun to help you automate the configuration?
询问是否使用 Fun 来自动化的配置 NAS 管理依赖,选择Yes
-
? We recommend using the 'NasConfig: Auto' configuration to manage your function dependencies.
是否使用NasConfig: Auto配置来管理函数依赖关系, 选择Yes。
Tips: 可以选择手动配置。函数计算挂载NAS访问。如果你已经手动配置,这里则提示用户选择已经配置的 NAS 存储函数依赖
看到这里就表示部署成功了。
因为服务端会为response header中强制添加content-disposition: attachment字段,此字段会使得返回结果在浏览器中以附件的方式打开。此字段无法覆盖,使用自定义域名将不受影响。
接下来我们给函数服务配置一个自定义域名,这样Http trigger触发的函数响应就不会再强制下载了。
-
登录阿里云函数计算控制台
-
打开自定义域名,创建域名
把
fun.root2.cn
换成你们的域名地址 -
解析域名到函数计算的Endpoint
Endpoint在函数计算控制台/概览的右上角获取。
打开云解析DNS控制台,选中域名,添加记录
记录类型选择
CNAME
,记录值为函数计算的Endpoint -
测试解析是否生效
如下图则解析成功
如果添加了新依赖,只需要重新执行fun nas sync
进行同步即可。
如果修改了代码,只需要重新执行fun deploy
重新部署即可。