在這個教學中,你會設定一個 Python 函式,讓它使用 Azure 資料表儲存體 作為輸出綁定。 接著將函式部署到 Azure Functions,並使用 Service Connector 將 Azure Functions 應用程式與 Table Storage 連接。
你使用 Visual Studio Code 來完成以下任務:
- 建立一個 Python 函式專案。
- 新增一個 Table Storage 輸出函式綁定。
- 在本機執行函式。
- 將函式部署到 Azure。
- 請使用 Service Connector 建立 Azure Functions 應用程式與 Table Storage 之間的連線。
Service Connector 的來源服務是 Azure Functions,目標服務是 Azure 資料表儲存體。 函式綁定使用 HTTP 觸發器,輸出為儲存表。 本地與雲端的認證類型是 連接字串。
必要條件
- 對於 Azure Functions 及 在 Azure Functions 中如何連接到服務的基本了解。
- 一個 Azure 訂用帳戶,您在其中具有 Azure 資源寫入權限,且位於支援服務連接器的 Azure 區域。 免費建立一個Azure帳號。
- Azure訂閱中有一個 Azure 儲存體 帳戶,儲存帳戶中則有一個名為
testTable的資料表。 -
Visual Studio Code,並安裝了以下擴充功能:
- Python
- Azure CLI 工具
-
Azure Functions,配置允許程式設計模型 V1,如下:
- 在Visual Studio Code中,選擇Azure Functions擴充功能旁的Settings圖示,選擇Settings。
- 在 Settings 畫面中,選擇 Azure Functions旁的勾選框:允許程式設計模型選擇。
- 關閉 設定 畫面。
建立函式專案
在 Visual Studio Code 中,建立一個帶有 HTTP 觸發器的 Python 函式專案。
- 按 F1 開啟指令面板,搜尋並選取指令 Azure Functions: 建立新 Project。
- 在選取將包含函數專案的資料夾,選取 [瀏覽],然後建立新資料夾或選擇一個空白資料夾作為專案工作區。 請勿選擇已屬於工作區一部分的專案資料夾。
- 對於 選擇專案類型,選擇 Python。
- 對於 選擇Python程式模型,選擇 Model V1。
- 對於 選擇一個Python直譯器來建立虛擬環境,選擇 手動輸入Python直譯器或完整路徑並輸入你Python執行檔的完整路徑。
- 在選取專案第一個函數的範本,選取 [HTTP 觸發程序]。
- 對於 提供函式名稱,請輸入 TableStorageOutputFunc。
- 在授權層級中,選擇匿名。
- 選擇 你想如何開啟專案,請選擇 在目前視窗中開啟。
欲了解更多資訊,請參閱使用 Visual Studio Code 建立並部署函式程式碼至 Azure。
新增儲存體資料表輸出繫結
以下程序會編輯你專案中的 function.json 和 local.settings.json 檔案,建立一個函式的表格輸出綁定。
- 在你的函式資料夾中右鍵點擊 function.json 檔案,然後從右鍵選單中選擇 新增綁定 。
- 在指令面板中,針對 選擇綁定的方向,選擇 向外。
- 對於選擇綁定方向為『out』的選項,請選擇Azure 資料表儲存體。
- 在用於在程式碼中識別此繫結的名稱中,輸入 outMessage。
- 在儲存帳戶中要寫入資料的資料表名稱,輸入testTable。
- 在從「local.settings.json」中選擇包含您的儲存帳戶連接字串的應用程式設定,然後選擇建立新的本地應用程式設定。
- 在選擇訂閱中,選擇您的 Azure 訂閱。
- 對於 選擇儲存帳戶類型以進行開發,請選擇 使用Azure 儲存體用於遠端儲存。
- 對於 選擇儲存帳號,選擇用於輸出的Azure 儲存體帳號。
檢查新增的綁定
打開 TableStorageOutputFunc/function.json 檔案,確認資料表的輸出綁定正確加入檔案。 若值有差異,請編輯為以下數值:
{ "type": "table", "direction": "out", "name": "outMessage", "tableName": "testtable", "connection": "<your-storage-account-name>_STORAGE" }打開 local.settings.json 檔案,確保以下鍵值對包含在此檔案中:
<your-storage-account-name>_STORAGE: <your-storage-account-connection-string>。
編輯 Python 程式碼
打開 TableStorageOutputFunc/__init__.py 檔案,並以以下程式碼替換其內容:
import logging
import uuid
import json
import azure.functions as func
def main(req: func.HttpRequest, outMessage: func.Out[str]) -> func.HttpResponse:
rowKey = str(uuid.uuid4())
data = {
"Name": "Output binding message",
"PartitionKey": "message",
"RowKey": rowKey
}
outMessage.set(json.dumps(data))
return func.HttpResponse(f"Message created with the rowKey: {rowKey}")
在本機執行函式
若要在本地執行該函式,請按 F5。 如果被要求連接儲存帳號,請選擇 Azure 儲存體 帳號。 此值用於 Azure Functions 執行階段,也可以 (但不一定必須) 是您用來輸出函式的相同儲存體帳戶。
當函式執行時,請在活動欄的工作區視圖中右鍵點擊 TableStorageOutputFunc 函式,並選擇「立即執行函式」,確認它能寫入你的 Table Storage 資料表。 檢查函式回應是否包含 rowKey 寫入資料表的值。
將函式部署至 Azure
建立一個 Azure Functions 應用程式,並將你的函式部署到 Azure。
- 在你的專案 function.json 檔案中,將
connection屬性的值改為bindings。 - 按 F1 開啟指令面板,搜尋並選擇指令 Azure Functions: 部署至 Function App。
- 在選擇訂閱中,選擇您的 Azure 訂閱。
- 請在選擇函數應用程式中,選擇建立新函數應用程式。
- 對於 選擇新資源的位置,請為你的 Azure Functions 應用程式選擇一個Azure區域,最好是與你的儲存帳號相同的區域。
- 對於 新函式應用程式的名稱輸入,你可以輸入與本地函式相同的名稱 TableStorageOutputFunc。
- 對於 選擇執行時堆疊,選擇 Python 3.10。
- 選擇 資源認證類型時,請選擇 秘密。
Important
使用秘密的 連接字串 驗證流程需要對應用程式高度信任,且存在其他流程中不存在的風險。 只有當更安全的流程,例如受控識別無法運作時,才應該使用此流程。
使用服務連接器建立連線
建立 Functions 應用程式後,你可以用 Service Connector 將應用程式連接到你的 Table Storage 資料表,這樣應用程式就能輕鬆將輸出寫入你的儲存帳號。 以下指令建立一個服務連接器資源,並在函式的應用程式設定中設定變 AZURE_STORAGETABLE_CONNECTIONSTRING 數。
函式綁定會使用這個應用程式設定,以便連接到儲存帳戶,從而使函式能寫入儲存資料表。 欲了解更多資訊,請參閱 How Service Connector 協助Azure Functions連接服務。
要建立連線,你可以在 Visual Studio Code 執行以下 Azure CLI 指令,或使用
<function-resource-id>:/subscriptions/<your-subscription>/resourceGroups/<function-resource-group>/providers/Microsoft.Web/sites/<function-name><storage-resource-id>:/subscriptions/<your-subscription>/resourceGroups/<storage-resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>/tableServices/default
az functionapp connection create storage-table --source-id "<function-resource-id>" --target-id "<storage-resource-id>" --secret
疑難排解
如果你遇到與儲存主機相關的錯誤,例如 No such host is known (<account-name>.table.core.windows.net:443),請確保用於連接 Table Storage 的連接字串包含該資料表端點。 如果沒有,請前往 Azure 儲存體 頁面,從 Access keys 下的 Security + networking 中複製連接字串,然後替換該值。
如果本地執行時發生錯誤,請檢查 local.settings.json 檔案。 如果你在將函式部署到 Azure 時發生錯誤,請檢查函式應用程式的應用程式設定。
清除資源
如果你不再需要為這個教學建立的 Azure 資源,可以刪除它們。
在Azure入口網站中,開啟功能應用程式或儲存帳號資源,從上方選單列選擇Delete。 輸入資源名稱並選擇 刪除。
在 Azure CLI 中,執行以下一項或兩種指令,將佔位符換成您自己的資訊。
az functionapp delete --name <functionapp-name> --resource-group <functionapp-resource-group> az storage account delete --name <storageaccount-name> --resource-group <storageaccount-resource-group>