使用 Azure Functions 開發Node.js無伺服器解決方案
Azure Functions 提供無伺服器程式代碼基礎結構,可讓您建立回應式隨選 HTTP 端點。 無伺服器應用程式是由 JavaScript 或 TypeScript 程式代碼所組成,可回應各種事件。
函式提供您:
Web 服務的抽象概念 - 您專注於程式代碼,而不是基礎結構。
與 Azure 服務整合 - 觸發程式使用事件進入或移出 Azure 服務
與 JavaScript 套件整合 - 搭配無伺服器程式代碼使用您最愛的 npm 套件
什麼是函式資源?
Azure 函式資源是單一 Azure 地理位置中所有相關函式的邏輯單元。 資源可以包含單一函式或許多函式,這些函式可以彼此獨立,或與輸入或輸出系結相關。 您可以從許多常見函式中選取,或建立自己的函式。
函式資源設定包含一般無伺服器設定,包括環境變數、驗證、記錄和 CORS。
持久、具狀態的函式
Durable Functions 會保留 狀態,或在 Azure 中管理長時間執行的函式。 在 JavaScript 中建立您的第一個耐久函式。
靜態 Web 應用程式包含函式
開發靜態前端用戶端應用程式(例如 Angular、React 或 Vue),其也需要無伺服器 API 時,請使用 靜態 Web 應用程式 搭配函式將兩者組合在一起。
從用戶端應用程式到 API 的 Proxy
如果您想要使用靜態 Web 應用程式部署 API,則不需要 Proxy 用戶端應用程式的 API 呼叫。 為您建立 Proxy,包括本機和遠端開發。
使用靜態 Web 應用程式和 Azure Functions 在本機開發時, Azure Static Web App CLI 會提供本機 Proxy。
您需要為 Azure 函式設定的一般安全性設定
下列常見設定應設定為保護您的 Azure 函式安全:
- 組態設定
- 組態設定 - 針對不會影響安全性的設定建立應用程式設定。
- 秘密和密鑰 - 對於任何影響安全性的設定,請建立 Azure 金鑰保存庫,並從您的 金鑰保存庫 提取這些設定。
- 平台設定上的 FTP 狀態 - 根據預設,允許所有設定。 您必須只選取 FTPS,或完全停用 FTP 以改善安全性。
- API CORS - 設定您的用戶端網域。 請勿使用
*
,表示所有網域。 - HTTPS 的 TLS/SSL 設定 - 根據預設,您的 API 會接受 HTTP 和 HTTPS 要求。 只在 TLS/SSL 設定中啟用 HTTPS。 由於函式應用程式裝載於安全子域上,因此您可以立即使用它,
https
並延遲購買功能變數名稱,並使用網域的憑證,直到您準備就緒為止。 - 部署位置 - 建立部署位置,例如
stage
或preflight
,並推送至該位置。 當您準備好時,將此階段位置交換至生產環境。 不要習慣手動推送到生產環境。 您的程式代碼基底應該能夠指出位置上的版本或認可。
開發 Azure Functions 的必要條件
HTTP 要求的簡單 JavaScript 函式
函式是具有要求和內容信息的導出異步函式。 下列 Azure 入口網站 的部分螢幕快照顯示函式程序代碼。
import { app, HttpRequest, HttpResponseInit, InvocationContext } from "@azure/functions";
export async function status(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> {
context.log(`Http function processed request for url "${request.url}"`);
return {
status: 200,
jsonBody: {
env: process.env
}
};
};
app.http('status', {
route: "status",
methods: ['GET'],
authLevel: 'anonymous',
handler: status
});
使用 Visual Studio Code 和擴充功能在本機開發函式
使用 Visual Studio Code 建立您的 第一個函式 。 Visual Studio Code 使用 Azure Functions 擴充功能簡化許多詳細數據。
此延伸模組可協助您使用通用範本建立 JavaScript 和 TypeScript 函式。
與其他 Azure 服務整合
無伺服器函式會移除大部分的伺服器組態和管理,因此您可以只專注於所需的程序代碼。
- 低程式代碼函式:使用 Azure Functions,您可以建立由其他 Azure 服務觸發的函式,或使用觸發程式系結將輸出至其他 Azure 服務。
- 高程式代碼函式:如需更多控制,請使用 Azure SDK 來協調和控制其他 Azure 服務。
下一步
使用下表深入瞭解 Azure Functions 與 Node.js