使用函數計算,您無需采購和管理服務器等基礎設施,只需編寫并上傳代碼或鏡像,就可以實現彈性可靠的應用。本文介紹如何在函數計算控制臺快速開發一個簡單的Serverless Hello World函數。
背景信息
通過函數計算控制臺快速創建函數的流程包括:開通函數計算服務、創建服務、創建函數和執行函數。
服務(Service)是函數計算的基本資源單位。您可以在服務級別上授權、配置日志和創建函數等。函數(Function)是調度與運行的基本單位,更是一段代碼的處理邏輯。您需要根據函數計算提供的函數接口形式編寫代碼,并將代碼以函數的形式部署到函數計算。函數計算中的服務對應于軟件應用架構領域中的微服務。在函數計算平臺構建應用時,首先根據需求將業務邏輯抽象為微服務,然后再實現為函數計算中的服務。
前提條件
您已成功注冊阿里云賬號,并完成實名認證。具體信息,請參見賬號注冊(PC端)。
操作視頻
操作步驟
本文以使用內置運行時創建和使用自定義運行時創建函數的方式為例,介紹如何在函數計算控制臺創建函數。
步驟一:開通函數計算服務
訪問函數計算首頁。
單擊管理控制臺,根據頁面提示單擊領取試用套餐并開通,然后單擊立即購買即可自動開通服務,進入函數計算控制臺。
說明建議您使用阿里云賬號開通服務,RAM用戶使用服務。
如果您之前已開通過函數計算服務,頁面將直接跳轉至函數計算控制臺。
可選:首次登錄用戶,界面彈出推薦您創建 AliyunFcDefaultRole 默認角色對話框,單擊創建,頁面跳轉至角色快捷創建頁面,為您的賬號創建默認角色AliyunFCDefaultRole。
授權成功
授權成功即函數計算具有訪問云資源的權限。
授權失敗
當您授權失敗后您需要判斷您的賬號是否有授權能力。
關于權限管理的詳細信息,請參見權限管理。
步驟二:創建服務
- 登錄函數計算控制臺,在左側導航欄,單擊服務及函數。
- 在頂部菜單欄,選擇地域,然后在服務列表頁面,單擊創建服務。
在創建服務面板,填寫服務名稱和描述,并按需設置以下配置項,然后單擊確定。
配置項
說明
示例
日志功能
是否啟用阿里云日志服務。取值說明如下:
啟用:函數的執行日志被持久化保存到日志服務,方便您代碼調試、故障分析和數據分析等。
禁用:函數的執行日志將無法通過日志服務存儲和查詢。
啟用
高級配置
鏈路追蹤功能
是否啟用阿里云鏈路追蹤功能。取值說明如下:
啟用:您可以使用Jaeger上傳鏈路信息,來跟蹤函數的執行,快速分析和診斷Serverless架構下的性能瓶頸。更多信息,請參見鏈路追蹤簡介。
禁用:不啟用鏈路追蹤功能。
啟用
服務角色
配置服務中函數所使用的角色,使函數可以獲得角色所擁有的權限。更多信息,請參見授予函數計算訪問其他云服務的權限。
AliyunFCDefaultRole
允許訪問 VPC
是否允許函數訪問VPC內資源。更多信息,請參見配置網絡。
是
專有網絡
允許訪問 VPC選擇是時必填。創建新的VPC或在下拉列表中選擇要訪問的VPC ID。
fc.auto.create.vpc.1632317****
交換機
允許訪問 VPC選擇是時必填。創建新的交換機或在下拉列表中選擇交換機ID。
fc.auto.create.vswitch.vpc-bp1p8248****
安全組
允許訪問 VPC選擇是時必填。創建新的安全組或在下拉列表中選擇安全組。
fc.auto.create.SecurityGroup.vsw-bp15ftbbbbd****
允許函數訪問公網
是否允許函數訪問公網。關閉后,當前服務中的函數將無法通過函數計算的默認網卡訪問公網。
重要使用固定公網IP地址功能時,您必須關閉允許函數訪問公網,否則配置的固定公網IP地址不生效。更多信息,請參見配置固定公網IP地址。
是
創建完成后,在服務及函數頁面的服務列表,查看已創建的服務及其配置信息。
步驟三:創建函數
- 登錄函數計算控制臺,在左側導航欄,單擊服務及函數。
- 在頂部菜單欄,選擇地域,然后在服務列表頁面,單擊目標服務。
- 在函數管理頁面,單擊創建函數。
在創建函數頁面,按需選擇創建函數的方式,配置以下配置項,然后單擊創建。
說明本文以使用內置運行時創建和使用自定義運行時創建方式為例進行說明。如果函數計算提供的環境無法滿足您的業務需求,您可以使用容器鏡像創建方式部署函數。具體操作,請參見創建Custom Container函數。
基本設置:配置函數的基本信息,包括函數名稱和請求處理程序類型。請求處理程序類型包括以下兩種。
處理事件請求:通過定時器、調用API/SDK或其他阿里云服務的觸發器來觸發函數執行。
處理 HTTP 請求:用于處理HTTP請求或WebSocket請求的函數。如果您的使用場景是Web場景,建議您使用自定義運行時創建。
函數代碼:配置函數的運行環境和代碼相關信息。
配置項
說明
示例
運行環境
選擇您熟悉的語言,例如Python、Java、PHP或Node.js等。函數計算支持的運行環境,請參見函數計算支持的函數運行環境列表。
Node.js14
代碼上傳方式
選擇上傳函數代碼到函數計算的方式。
使用示例代碼:默認方式,您可以根據業務需要選擇函數計算為您提供的創建函數的示例代碼。
通過 ZIP 包上傳代碼:選擇函數代碼ZIP包并上傳。
通過 JAR 包上傳代碼:選擇函數代碼JAR包并上傳。
通過文件夾上傳代碼:選擇包含函數代碼的文件夾并上傳。
通過 OSS 上傳代碼:選擇上傳函數代碼的Bucket 名稱和文件名稱。
說明代碼上傳方式選擇使用示例代碼時,不需要修改請求處理程序。當選擇其他代碼上傳方式時,則需要根據實際情況修改請求處理程序,否則函數執行時會報錯。
當運行環境選擇為Java 8或Java 11時,只支持使用示例代碼、通過 JAR 包上傳代碼和通過 OSS 上傳代碼。其余運行環境支持使用示例代碼、通過 ZIP 包上傳代碼、通過文件夾上傳代碼和通過 OSS 上傳代碼。
使用示例代碼
啟動命令
說明僅當您選擇使用自定義運行時創建函數時,需設置此配置項。
程序的啟動命令。如果不配置啟動命令,您需要在代碼的根目錄手動創建一個名稱為bootstrap的啟動腳本,您的程序通過此腳本來啟動。
npm run start
監聽端口
說明僅當您選擇使用自定義運行時創建函數時,需設置此配置項。
您的代碼中的HTTP Server所監聽的端口。
9000
高級配置:配置函數的實例相關信息和函數執行超時時間等。
配置項
說明
示例
規格方案
根據您的業務情況,選擇或手動輸入合理的vCPU規格和內存規格組合。關于各資源使用的計費詳情,請參見計費概述。
說明vCPU大小(單位為核)與內存大小(單位為GB)的比例必須設置在1∶1到1∶4之間。
0.35核,512 MB
臨時硬盤大小
根據您的業務情況,選擇臨時存儲文件的硬盤大小。
取值說明如下。
512 MB:默認值。不計費,函數計算為您提供512 MB以內的硬盤免費使用額度。
10 GB:按9.5 GB進行計費。
說明臨時硬盤中所有目錄可寫,共享臨時硬盤的空間。
臨時硬盤大小與底層執行函數的實例生命周期一致,實例被系統回收后,硬盤上的數據也會消失。如您需要對文件進行持久化保存,可以選擇掛載NAS或OSS。具體操作,請參見配置NAS文件系統和配置OSS文件系統。
512 MB
實例并發度
設置函數實例的并發度。具體信息,請參見設置實例并發度。
10
執行超時時間
設置超時時間。執行超時時間默認為60秒,最長為86400秒。
說明超過設置的超時時間,函數將以執行失敗結束。如需更長的超時時間限制,請加入釘釘用戶群(釘釘群號11721331)申請。
60
請求處理程序
設置請求處理程序,函數計算的運行時會加載并調用您的請求處理程序處理請求。選擇使用自定義運行時創建和使用容器鏡像創建函數時,無需設置此配置項。
說明代碼上傳方式選擇使用示例代碼時,不需要修改請求處理程序。當選擇其他代碼上傳方式時,則需要根據實際情況修改請求處理程序,否則函數執行時會報錯。
index.handler
時區
選擇函數的時區。此處設置函數的時區后,將自動為函數添加一條環境變量TZ,其值為您設置的目標時區。
UTC
環境變量:設置函數運行環境中的環境變量。更多信息,請參見環境變量。
觸發器配置:設置函數的觸發器,您可以使用觸發器觸發函數執行。更多信息,請參見觸發器管理。
步驟四:執行函數
- 登錄函數計算控制臺,在左側導航欄,單擊服務及函數。
- 在頂部菜單欄,選擇地域,然后在服務列表頁面,單擊目標服務。
在函數管理頁面,單擊目標函數,然后選擇函數代碼頁簽,可以查看函數的代碼。
本文以使用內置運行時創建為例,代碼示例如下:
說明您可以在代碼編輯器內編輯代碼實現二次開發,然后需要單擊部署代碼,代碼部署成功后編輯的代碼才會生效。
'use strict'; exports.handler = (event, context, callback) => { console.log('hello world'); callback(null, 'hello world'); }
單擊測試函數。
執行完畢后,您可以在函數代碼頁簽,查看執行結果和詳細的日志信息。
相關文檔
函數計算為您提供豐富的示例代碼,可以幫助您在創建或者配置函數時,快速選擇所需要的函數代碼。具體示例代碼,請參見示例代碼。
如果您的函數在執行時報錯"Unable to import module 'index'",需要先確認請求處理程序(函數入口)配置是否錯誤,然后確認依賴是否安裝,具體請參見為函數安裝第三方依賴。
函數計算提供通過Serverless Devs工具構建應用、調試應用和部署應用。具體操作,請參見通過Serverless Devs工具管理函數資源。
函數計算支持直接觸發函數和通過事件觸發函數。關于事件觸發函數,請參見觸發器簡介。