<a name="1"></a>javascript
首先介紹下在本文出現的幾個比較重要的概念:html
函數計算(Function Compute): 函數計算是一個事件驅動的服務,經過函數計算,用戶無需管理服務器等運行狀況,只需編寫代碼並上傳。函數計算準備計算資源,並以彈性伸縮的方式運行用戶代碼,而用戶只需根據實際代碼運行所消耗的資源進行付費。函數計算更多信息 參考。
Fun: Fun 是一個用於支持 Serverless 應用部署的工具,能幫助您便捷地管理函數計算、API 網關、日誌服務等資源。它經過一個資源配置文件(template.yml),協助您進行開發、構建、部署操做。Fun 的更多文檔 參考。java
備註: 本文介紹的技巧須要 Fun 版本大於等於 3.6.7。<br /><br />函數計算運行環境中內置一些經常使用字體,但仍不知足部分用戶的需求。若是應用中須要使用其它字體,須要走不少彎路。本文將介紹如何經過 Fun 工具將自定義字體部署到函數計算,並正確的在應用中被引用。<br />node
<a name="Q2GjJ"></a>git
<a name="iieQk"></a>github
建議直接從這裏下載二進制可執行程序,解壓後便可直接使用。下載地址。npm
執行 fun --version
檢查 Fun 是否安裝成功。json
$ fun --version 3.7.0
<a name="2HH69"></a>瀏覽器
demo 涉及的代碼,託管在 github 上。項目目錄結構以下:bash
$ tree -L -a 1 ├── index.js ├── package.json └── template.yml
index.js 中代碼:
'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 列出系統上可用的字體。
template.yml:
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)的映射關係。<br />
<a name="mdmbV"></a>
你能夠經過這裏下載自定義字體 Hack,而後將複製字體到 fonts 目錄。 此時 demo 目錄結構以下:
$ tree -L 2 -a ├── fonts(+) │ ├── Hack-Bold.ttf │ ├── Hack-BoldItalic.ttf │ ├── Hack-Italic.ttf │ └── Hack-Regular.ttf ├── index.js ├── package.json └── template.yml
<a name="0mcAB"></a>
$ npm install
<a name="bN5mH"></a>
能夠經過 fun deploy 直接發佈到遠端。<br /><br />
<a name="vGJ25"></a>
fun deploy 部署過程當中,會爲此函數生成有時效性的臨時域名:<br /><br /> 打開瀏覽器,輸入臨時域名並回車:
<br /> <br />能夠看到字體 Hack 已生效!!!<br />
<a name="3GN7j"></a>
若是依賴過大,超過函數計算的限制(50M)則:
fun deploy 對大依賴的支持可參考《開發函數計算的正確姿式——輕鬆解決大依賴部署》<br />
<a name="24"></a>
你只須要在代碼(CodeUri)目錄新建一個 fonts 目錄,而後複製全部字體到該目錄便可。Fun 會自動幫你處理配置文件(.fonts.conf),環境變量以及大依賴場景的狀況。若是你們在使用 Fun 的過程當中遇到了一些問題,能夠在 github 上提 issue,或者加入咱們的釘釘羣 11721331 進行反饋。
「阿里巴巴雲原生關注微服務、Serverless、容器、Service Mesh 等技術領域、聚焦雲原生流行技術趨勢、雲原生大規模的落地實踐,作最懂雲原生開發者的技術圈。」