首先介绍下在本文出现的几个比较重要的概念:javascript
函数计算(Function Compute): 函数计算是一个事件驱动的服务,经过函数计算,用户无需管理服务器等运行状况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。函数计算更多信息 参考。
![]()
Fun: Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API 网关、日志服务等资源。它经过一个资源配置文件(template.yml),协助您进行开发、构建、部署操做。Fun 的更多文档 参考。
备注: 本文介绍的技巧须要 Fun 版本大于等于 3.6.7。
函数计算运行环境中内置一些经常使用字体,但仍不知足部分用户的需求。若是应用中须要使用其它字体,须要走不少弯路。本文将介绍如何经过 Fun 工具将自定义字体部署到函数计算,并正确的在应用中被引用。
html
建议直接从这里下载二进制可执行程序,解压后便可直接使用。下载地址。java
执行 fun --version
检查 Fun 是否安装成功。node
$ fun --version 3.7.0
demo 涉及的代码,托管在 github 上。项目目录结构以下:git
$ tree -L -a 1 ├── index.js ├── package.json └── template.yml
index.js 中代码:github
'use strict'; var fontList = require('font-list') module.exports.handler = async function (request, response, context) { response.setStatusCode(200); response.setHeader('content-type', 'application/json'); response.send(JSON.stringify(await fontList.getFonts(), null, 4)); };
index.js 中借助 node 包 font-list 列出系统上可用的字体。npm
template.yml:json
ROSTemplateFormatVersion: '2015-09-01' Transform: 'Aliyun::Serverless-2018-04-03' Resources: fonts-service: # 服务名 Type: 'Aliyun::Serverless::Service' Properties: Description: fonts example fonts-function: # 函数名 Type: 'Aliyun::Serverless::Function' Properties: Handler: index.handler Runtime: nodejs8 CodeUri: ./ InstanceConcurrency: 10 Events: http-test: Type: HTTP Properties: AuthType: ANONYMOUS Methods: - GET - POST - PUT tmp_domain: # 临时域名 Type: 'Aliyun::Serverless::CustomDomain' Properties: DomainName: Auto Protocol: HTTP RouteConfig: Routes: /: ServiceName: fonts-service FunctionName: fonts-function
template.yml 中定义了名为 fonts-service 的服务,此服务下定义一个名为 fonts-function 的 http trigger 函数。tmp_domain 中配置自定义域名中路径(/)与函数(fonts-service/fonts-function)的映射关系。
浏览器
你能够经过这里下载自定义字体 Hack,而后将复制字体到 fonts 目录。
此时 demo 目录结构以下:bash
$ tree -L 2 -a ├── fonts(+) │ ├── Hack-Bold.ttf │ ├── Hack-BoldItalic.ttf │ ├── Hack-Italic.ttf │ └── Hack-Regular.ttf ├── index.js ├── package.json └── template.yml
$ npm install
能够经过 fun deploy 直接发布到远端。
fun deploy 部署过程当中,会为此函数生成有时效性的临时域名:
打开浏览器,输入临时域名并回车:
能够看到字体 Hack 已生效!!!
若是依赖过大,超过函数计算的限制(50M)则:
fun deploy 对大依赖的支持可参考《开发函数计算的正确姿式——轻松解决大依赖部署》
你只须要在代码(CodeUri)目录新建一个 fonts 目录,而后复制全部字体到该目录便可。Fun 会自动帮你处理配置文件(.fonts.conf),环境变量以及大依赖场景的状况。若是你们在使用 Fun 的过程当中遇到了一些问题,能够在 github 上提 issue,或者加入咱们的钉钉群 11721331 进行反馈。
“ 阿里巴巴云原生关注微服务、Serverless、容器、Service Mesh 等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,作最懂云原生开发者的技术圈。”