使用 Azure Functions 開發無伺服器 Node.js 應用程式
Azure Functions 提供功能強大的無伺服器基礎結構,可讓您輕鬆開發可調整且隨選的 HTTP 端點。 藉由使用 JavaScript 或 TypeScript,您可以建立回應各種事件的無伺服器應用程式,讓您專注於撰寫程式代碼,而不必擔心管理伺服器。 本指南可協助您開始使用 Azure Functions 開發無伺服器 Node.js 應用程式,順暢地與其他 Azure 服務整合。
什麼是函式資源?
Azure 函式資源是單一 Azure 地理位置中所有相關函式的邏輯單元。 資源可以包含單一函式或許多函式,這些函式可以彼此獨立,或與輸入或輸出系結相關。 您可以從許多常見函式中選取,或建立自己的函式。
函式資源設定包含一般無伺服器設定,包括環境變數、驗證、記錄和 CORS。
持久、具狀態的函式
Durable Functions 會保留 狀態,或在 Azure 中管理長時間執行的函式。 在 JavaScript 中建立您的第一個耐久函式。
靜態 Web 應用程式包含函式
當您開發靜態前端用戶端應用程式(例如 Angular、React 或 Vue),且它也需要無伺服器 API 時,可以使用 靜態 Web 應用程式 和函式將兩者組合在一起。
從用戶端應用程式到 API 的 Proxy
如果您想要使用靜態 Web 應用程式部署 API,則不需要 Proxy 用戶端應用程式的 API 呼叫。 當您將 Azure Functions 應用程式部署為受控應用程式時,會為您建立 Proxy。
當您使用靜態網站應用程式和 Azure Functions 在本機開發時,Azure Static Web App CLI 會提供本機代理。
您需要為 Azure 函式設定的一般安全性設定
下列常見設定應設定為保護您的 Azure 函式安全:
- 組態設定
- 組態設定 - 針對不會影響安全性的設定建立應用程式設定。
- 秘密和密鑰 - 對於任何影響安全性的設定,請建立 Azure 金鑰保存庫,並從您的 金鑰保存庫 提取這些設定。
- 平台設定上的 FTP 狀態 - 根據預設,允許所有設定。 您必須只選取 FTPS,或完全停用 FTP 以改善安全性。
- 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 服務。