教學課程:使用 Azure 數據表記憶體輸出設定 Python 函式
在本教學課程中,您將瞭解如何完成下列工作,將 Python 函式設定為使用 Azure 數據表記憶體作為輸出系結。
- 使用 Visual Studio Code 建立 Python 函式專案。
- 新增儲存體資料表輸出函式繫結。
- 使用 Visual Studio Code 在本機執行函式。
- 使用 Azure CLI 透過服務連接器在 Azure 函式和儲存體資料表之間建立連線。
- 使用 Visual Studio 部署函式。
本教學課程中函式專案元件的概觀:
專案元件 | 選取項目 / 解決方案 |
---|---|
來源服務 | Azure 函式 |
目標服務 | Azure 儲存體資料表 |
函式繫結 | HTTP 觸發程序,儲存體資料表作為輸出 |
本機專案驗證類型 | 連接字串 |
雲端函式驗證類型 | 連接字串 |
警告
Microsoft 建議您使用最安全的可用驗證流程。 這個程序描述的驗證流程需要在應用程式中具備極高的信任度,且伴隨著其他流程並未面臨的風險。 請僅在其他較安全的流程 (例如受控身分識別) 皆不具可行性的情況下,才使用這個流程。
必要條件
- 在其中一個支援的平台上安裝 Visual Studio Code。
- Azure CLI。 您可以在 Azure Cloud Shell 中使用,或將其安裝在本機。
- Azure 儲存體帳戶和儲存體資料表。 如果您還沒有儲存體帳戶,請建立一個。
- 該指南假設您知道 Azure Functions 開發人員指南中呈現的基本概念,以及如何連線到 Azure Functions 中的服務。
建立 Python 函式專案
請遵循教學課程來建立本機 Azure Functions 專案,並在提示中提供下列資訊:
提示 | 選取項目 |
---|---|
選取語言 | 選擇 Python 。 (v1 程式設計語言模型) |
選取 Python 解譯器來建立虛擬環境 | 選擇您慣用的 Python 解譯器。 如果選項未顯示,請輸入 Python 二進位檔的完整路徑。 |
為專案的第一個函式選取範本 | 選擇 HTTP trigger 。 |
提供函式名稱 | 輸入 TableStorageOutputFunc 。 |
授權等級 | 選擇 Anonymous ,讓任何人都能呼叫您的函式端點。 |
您已使用 HTTP 觸發程序建立 Python 函式專案。
新增儲存體資料表輸出繫結
繫結屬性定義於 function.json 檔案的特定函式中。 若要建立繫結,請以滑鼠右鍵按一下 (在 macOS 上則按一下 Ctrl+) 函式資料夾中的 function.json
檔案,然後選擇 [新增繫結...]。 遵循提示來針對新繫結定義下列繫結屬性:
提示 | 值 | Description |
---|---|---|
選取繫結方向 | out |
此繫結為輸出繫結。 |
選取具有下列方向的繫結 | Azure Table Storage |
此繫結為 Azure 儲存體資料表繫結。 |
用以在程式碼中識別此繫結的名稱 | outMessage |
識別您的程式碼中參考之繫結參數的名稱。 |
寫入資料的儲存體帳戶中的資料表名稱 | testTable |
您的函式作為輸出寫入的資料表名稱。 如果資料表不存在,請在您的儲存體帳戶中建立名為 testTable 的資料表。 |
"local.setting.json" 選取設定 | Create new local app settings |
選取您的函式作為輸出寫入的 [儲存體帳戶]。 Visual Studio Code 會擷取其本機專案連線的連接字串。 |
若要檢查是否已成功新增繫結:
- 開啟
TableStorageOutputFunc/function.json
檔案,確認已將具有type: table
和direction: out
的新繫結新增至此檔案。 - 開啟
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}")
在本機執行函式
請遵循教學課程在本機執行函式,並確認資料表輸出。
- 如果系統提示您連線到儲存體帳戶,請選取您在建立 Azure 函式資源時所選擇的 [儲存體帳戶]。 此值會用於 Azure Function 執行階段。 它不一定與您用於輸出的儲存體帳戶相同。
- 若要在本機啟動函式,請按
<kbd>
F5</kbd>
或選取左側 [活動] 列中的 [執行並偵錯] 圖示。 - 若要確認函式可以寫入資料表,請在 Visual Studio Code WORKSPACE 檢視中的函式上以滑鼠右鍵按一下 [
Execute Function Now...
],然後檢查函式回應。 回應訊息應該包含寫入資料表的rowKey
。
使用服務連接器建立連線
在最後一個步驟中,您已在本機驗證函式專案。 現在您會了解如何在雲端中設定 Azure Function 與 Azure 儲存體資料表之間的連線,以便您的函式在部署到雲端後可以寫入儲存體 Blob。
- 開啟本機專案中的
function.json
檔案,將bindings
中的connection
屬性值變更為AZURE_STORAGETABLE_CONNECTIONSTRING
。 - 執行下列 Azure CLI 命令,以建立 Azure Function 與 Azure 儲存體帳戶之間的連線。
az functionapp connection create storage-table --source-id "<your-function-resource-id>" --target-id "<your-storage-table-resource-id>" --secret
--source-id
格式:/subscriptions/{subscription}/resourceGroups/{source_resource_group}/providers/Microsoft.Web/sites/{site}
--target-id
格式:/subscriptions/{subscription}/resourceGroups/{target_resource_group}/providers/Microsoft.Storage/storageAccounts/{account}/tableServices/default
您已建立服務連接器資源,可在函式的應用程式設定中設定 AZURE_STORAGETABLE_CONNECTIONSTRING
變數。 此應用程式設定接著會由函式繫結取用以連線到儲存體,以便函式可以寫入儲存體資料表。 您可以深入了解服務連接器如何協助 Azure Functions 連線至服務。
將函式部署至 Azure
現在您可以將函式部署至 Azure,並確認儲存體資料表輸出繫結可正常運作。
- 請遵循此 Azure Functions 教學課程,將您的函式部署至 Azure。
- 若要確認函式可以寫入資料表,請在 Visual Studio Code RESOURCES 檢視中的函式上以滑鼠右鍵按一下 [
Execute Function Now...
],然後檢查函式回應。 回應訊息應該包含函式剛寫入資料表的rowKey
。
疑難排解
如果儲存體主機有任何相關錯誤,例如 No such host is known (<account-name>.table.core.windows.net:443)
,請檢查您用來連線到 Azure 儲存體的連接字串是否包含資料表端點。 如果沒有,請移至 Azure 儲存體入口網站,從 Access keys
刀鋒視窗複製連接字串,並取代值。
如果您在本機啟動專案時發生此錯誤,請檢查 local.settings.json
檔案。
如果您將函式部署至雲端時發生這種情況 (在此情況下,函式部署通常會在 Syncing triggers
上失敗),請檢查函式的應用程式設定。
清除資源
如果您不打算繼續使用此專案,請刪除您稍早建立的函數應用程式資源。
下一步
請閱讀下列文章,以深入了解服務連接器概念,以及其如何協助 Azure Functions 連線到雲端服務。