在本快速入門中,您會使用 Visual Studio Code 來建置應用程式,以回應 Azure SQL 資料庫資料表中的變更。 在本機測試程式碼之後,您可以將它部署至 Azure Functions 中彈性取用方案中執行的新無伺服器函式應用程式。
專案來源會搭配 Visual Studio Code 使用 Azure 開發人員 CLI (azd) 延伸模組,以簡化在本機初始化和驗證專案程式碼,以及將程式碼部署至 Azure。 此部署遵循目前安全且可調整的 Azure Functions 部署最佳做法。
這很重要
雖然所有語言都支援回應 Azure SQL 資料庫的變更 ,但這個快速入門情境目前僅包含 C#、Python 和 TypeScript 的範例。 要完成此快速入門,請在文章頂端選擇其中一種支援語言。
先決條件
具有有效訂閱的 Azure 帳戶。 免費建立帳戶。
其中一個支援的平台上有 Visual Studio Code。
適用於 Visual Studio Code 的 Azure Functions 擴充功能。 此延伸模組需要 Azure Functions 核心工具。 當此工具在本機無法使用時,延伸模組會嘗試使用套件型安裝程式來安裝它。 您也可以從命令選項板執行
Azure Functions: Install or Update Azure Functions Core Tools來安裝或更新核心工具套件。 如果您沒有在本機電腦上安裝 npm 或 Homebrew,您必須改為手動安裝或更新 Core Tools。
適用於 Visual Studio Code 的 C# 擴充功能 (英文)。
-
Node.js 18.x 或更高版本。 請使用
node --version命令來檢查您的版本。
Azure Functions 支援的 Python 版本。 如需詳細資訊,請參閱如何安裝 Python。
適用於 Visual Studio Code 的 Python 擴充功能。
- 適用於 Visual Studio Code 的 Azure 開發人員 CLI 延伸模組 。
- Visual Studio Code 的 SQL Server (mssql) 延伸模組 。
初始化專案
您可以使用命令選項板中的 azd init 命令,從範本建立本機 Azure Functions 程式碼專案。
在 Visual Studio Code 中,開啟您要在其中建立專案的資料夾或工作區。
按 F1 開啟命令選項板,搜尋並執行命令
Azure Developer CLI (azd): Initialize App (init),然後選擇 [ 選取範本]。出現提示時,搜尋並選取
Azure Functions with SQL Triggers and Bindings。出現提示時,請輸入唯一的環境名稱,例如
sqldbchanges。
此命令會從 範本存放庫 提取專案檔,並在目前資料夾或工作區中初始化專案。 在 azd 中,環境可用來維護應用程式的唯一部署內容,且您可以定義一個以上的部署內容。 它也是您在 Azure 中建立的資源群組名稱的一部分。
此命令會從 範本存放庫 提取專案檔,並在目前資料夾或工作區中初始化專案。 在 azd 中,環境可用來維護應用程式的唯一部署內容,且您可以定義一個以上的部署內容。 它也是您在 Azure 中建立的資源群組名稱的一部分。
此命令會從 範本存放庫 提取專案檔,並在目前資料夾或工作區中初始化專案。 在 azd 中,環境可用來維護應用程式的唯一部署內容,且您可以定義一個以上的部署內容。 它也是您在 Azure 中建立的資源群組名稱的一部分。
您必須先在 Azure 中建立資源,才能在本機執行應用程式。
建立 Azure 資源
此專案已配置為使用 azd provision 命令,在彈性取用方案中建立函式應用程式,並設置符合目前最佳做法的其他必要 Azure 資源。
在 Visual Studio Code 中,按 F1 開啟命令選項板,搜尋並執行命令
Azure Developer CLI (azd): Sign In with Azure Developer CLI,然後使用您的 Azure 帳戶登入。按 F1 開啟命令選項板,搜尋並執行命令
Azure Developer CLI (azd): Provision Azure resources (provision)以建立必要的 Azure 資源。當「終端機」視窗中出現提示時,請提供以下必要的部署引數:
Prompt Description 選取要使用的 Azure 訂用帳戶 選取您要在其中建立資源的訂用帳戶。 位置 部署參數 要在其中建立包含新 Azure 資源之資源群組所在的 Azure 區域。 只會顯示目前支援彈性使用量方案的區域。 vnetEnabled 部署參數 雖然範本支援在虛擬網路內建立資源,但若要簡化部署和測試,請選擇 False。
此 azd provision 命令會使用您對這些提示的回應搭配 Bicep 組態檔,來建立和設定這些必要的 Azure 資源,並遵循最新的最佳做法:
- 彈性使用量方案和函數應用程式
- Azure SQL 資料庫 (預設名稱:ToDo)
- Azure 儲存體 (必要) 和 Application Insights (建議)
- 存取帳戶的原則和角色
- 使用受控識別的服務對服務連線 (而不是預存的連接字串)
佈建後掛勾也會產生 local.settings.json 檔案,這是在本機執行所必需的。 此檔案包含連線到 Azure 中資料庫所需的設定。
檢閱程式碼 (選用)
此範例定義了兩個函式:
| 函式名稱 | 程式碼檔案 | 觸發程式類型 | Description |
|---|---|---|---|
httptrigger-sql-output |
sql_output_http_trigger.cs | HTTP 觸發器 | 接受格式正確的 JSON 承載,並使用 SQL 輸出繫結將物件插入為資料表中的 ToDo 資料列。 |
ToDoTrigger |
sql_trigger.cs | SQL 觸發器 | 在 ToDo 資料表上監聽資料列層級的變更,並返回代表已變更資料列的物件。 |
類型在ToDoItemToDoItem.cs中定義。
| 函式名稱 | 程式碼檔案 | 觸發程式類型 | Description |
|---|---|---|---|
http_trigger_sql_output |
function_app.py | HTTP 觸發器 | 接受格式正確的 JSON 承載,並使用 SQL 輸出繫結將物件插入為資料表中的 ToDo 資料列。 |
httptrigger-sql-output |
sql_trigger_todo | SQL 觸發器 | 在 ToDo 資料表上監聽資料列層級的變更,並返回代表已變更資料列的物件。 |
ToDoItem類型在todo_item.py中定義。
| 函式名稱 | 程式碼檔案 | 觸發程式類型 | Description |
|---|---|---|---|
httpTriggerSqlOutput |
sql_output_http_trigger.ts | HTTP 觸發器 | 接受格式正確的 JSON 承載,並使用 SQL 輸出繫結將物件插入為資料表中的 ToDo 資料列。 |
sqlTriggerToDo |
sql_trigger.ts | SQL 觸發器 | 在 ToDo 資料表上監聽資料列層級的變更,並返回代表已變更資料列的物件。 |
類型在ToDoItemToDoItem.ts中定義。
這兩個函式都會使用應用程式層級 AZURE_SQL_CONNECTION_STRING_KEY_* 環境變數,這些變數透過 Microsoft Entra ID 驗證,定義與 Azure SQL Database 執行個體的身份為基礎的連線。 在 azd provision 作業期間,系統會在 Azure (函式應用程式設定) 和本機 (local.settings.json) 中為您建立這些環境變數。
線上到 SQL 資料庫
您可以使用 Visual Studio Code 的 SQL Server (mssql) 延伸模組來連線到新的資料庫。 此擴充功能可協助您在資料表中 ToDo 進行更新,以執行 SQL 觸發程式函式。
按 F1 ,然後在命令選項板中搜尋並執行命令
MS SQL: Add Connection。在 [連線] 對話方塊中,將 [輸入類型] 變更為 [瀏覽 Azure ],然後設定下列其餘選項:
Option Choose Description 伺服器 您的 SQL Server 執行個體 根據預設,會顯示您的 Azure 帳戶可存取的所有伺服器。 使用 [訂用帳戶]、[ 資源群組] 和 [位置 ] 來協助篩選伺服器清單。 資料庫 ToDo在佈建程序期間建立的資料庫。 驗證類型 Microsoft Entra 身份識別 如果您尚未登入,請選取 [登入 並登入您的 Azure 帳戶]。 租用戶標識碼 特定的帳戶租用戶。 如果您的帳戶有多個租用戶,請為您的訂用帳戶選擇正確的租用戶。 選取 [連線 ] 以連線至您的資料庫。 連線會使用您的本機使用者帳戶,該帳戶在託管伺服器中被授予管理員權限並映射到
dbo資料庫中。在 [SQL Server] 檢視中,找到並展開 [連線],然後在 SQL Server 總管中找到您的新伺服器。 展開 [資料表] 並確認
ToDo資料表存在。 如果不存在,您可能需要再次執行azd provision並檢查錯誤。
在本機執行函式
Visual Studio Code 與 Azure Functions 核心工具 整合,可讓您在本機開發電腦上執行此專案,再發佈至 Azure 中的新函式應用程式。
按 F1 ,然後在命令選項板中搜尋並執行命令
Azurite: Start。若要在本機啟動函式,請按 F5 或左側 [活動] 列中的 [執行並偵錯] 圖示。
「終端機」面板會顯示「核心工具」的輸出。 您的應用程式會在 「終端機」 面板中啟動,您可以看到在本機執行的函式名稱。
應用程式執行時,您可以驗證和偵錯這兩個函式觸發器。
若要驗證 HTTP 觸發函數以將資料寫入至 SQL 輸出繫結:
複製此 JSON 物件,也可以在
test.http專案檔案中找到。{ "id": "11111111-1111-1111-1111-111111111111", "order": 1, "title": "Test Todo Item", "url": "https://example.com", "completed": false }此資料代表您在呼叫 HTTP 端點時插入 SQL 資料庫的資料列。 輸出繫結會將資料物件轉換為資料庫中的
INSERT作業。應用程式執行時,在 [Azure 檢視] 中的 [工作區] 底下展開 [本機專案]>[Functions]。
以滑鼠右鍵選取您的 HTTP 函式 (或在 macOS 上按兩下 Ctrl+按一下),選取 [立即執行函式],貼上複製的 JSON 資料,然後按 Enter。
函式會處理 HTTP 要求,並將項目寫入連線的 SQL 資料庫,並傳回建立的物件。
返回 SQL Server 總管,以滑鼠右鍵選取
ToDo資料表 (或在 macOS 上按兩下 Ctrl+按一下),然後選擇 [選取前 1000 個]。 當查詢執行時,它會傳回插入或更新的資料列。重複步驟 3 並重新傳送具有相同 ID 的相同資料物件。 這次,輸出繫結執行的是
UPDATE作業,而不是INSERT,並修改資料庫中的現有資料列。
完成後,在終端機中鍵入 Ctrl+C 以停止核心工具進程。
部署至 Azure
您可以從 Visual Studio Code 執行 azd deploy 命令,將專案程式碼部署至 Azure 中已佈建的資源。
按 F1 開啟指令選項板,搜尋並執行指令
Azure Developer CLI (azd): Deploy to Azure (deploy)。azd deploy指令會對程式碼進行封裝並將其部署到部署容器中。 然後,應用程式會啟動並在已部署的套件中執行。命令成功完成之後,您的應用程式會在 Azure 中執行。 記下
Endpoint值,這是在 Azure 中執行的函式應用程式的 URL。
在 Azure 上叫用函式
在 Visual Studio Code 中,按 F1,然後在命令選項板中搜尋並執行命令
Azure: Open in portal,選取Function app並選擇您的新應用程式。 如有必要,請使用您的 Azure 帳戶登入。選取左窗格中的 記錄串流,這會連線到您應用程式的 Application Insights 記錄。
返回 Visual Studio Code 以在 Azure 中執行這兩個函式。
按 F1 開啟指令選項板,搜尋並執行指令
Azure Functions: Execute Function Now...。從清單中搜尋並選取您的遠端函式應用程式,然後選取 HTTP 觸發程式函式。
如同之前,將 JSON 物件資料貼到 Enter 承載內文 中,然後按 Enter。
{ "id": "11111111-1111-1111-1111-111111111111", "order": 1, "title": "Test Todo Item", "url": "https://example.com", "completed": false }若要執行
INSERT而不是UPDATE,請將id替換為新的 GUID 值。返回入口網站,並在記錄視窗中檢視執行輸出。
清理資源
當您使用函數應用程式和相關資源時,您可以使用此命令從 Azure 刪除函數應用程式及其相關資源,並避免產生任何進一步的成本:
azd down --no-prompt
備註
--no-prompt 選項會指示 azd 刪除您的資源群組,而不需要您確認。
此命令不會影響您的本機程式碼專案。