Share via


教學課程:使用 Azure 數據表 儲存體 作為輸出的 Python 函式

在本教學課程中,您將瞭解如何完成下列工作,以 儲存體 Table 設定 Python 函式作為輸出。

  • 使用 Visual Studio Code 建立 Python 函式專案。
  • 新增 儲存體 數據表輸出函式系結。
  • 使用 Visual Studio Code 在本機執行函式。
  • 使用 Azure CLI 建立 Azure Function 與 儲存體 Table 與 Service 連線 or 之間的連線。
  • 使用 Visual Studio 部署函式。

本教學課程中函式專案元件的概觀:

項目元件 Selection / Solution
來源服務 Azure Function
目標服務 Azure 儲存體 數據表
函式系結 HTTP 觸發程式,儲存體 數據表做為輸出
本機項目驗證類型 連接字串
雲端函式驗證類型 連接字串

必要條件

建立 Python 函式專案

請遵循教學 課程來建立本機 Azure Functions 專案,並在提示中提供下列資訊:

提示 選取項目
選取語言 選擇 Python。 (v1 程式設計語言模型)
選取 Python 解釋器以建立虛擬環境 選擇您慣用的 Python 解釋器。 如果未顯示選項,請輸入 Python 二進位檔的完整路徑。
選取專案第一個函式的範本 選擇 HTTP trigger
提供函式名稱 輸入 TableStorageOutputFunc
授權等級 選擇 Anonymous,可讓任何人呼叫您的函式端點。 

您已使用 HTTP 觸發程式建立 Python 函式專案。

新增記憶體數據表輸出系結

系結屬性定義於指定函式的 function.json 檔案中。 若要建立系結,請以滑鼠右鍵按兩下函式資料夾中的檔案, function.json 然後選擇 [ 新增系結... ]。 請遵循提示來定義新系結的下列系結屬性:

提示 Description
選取系結方向 out 系結是輸出系結。
選取具有方向的系結... Azure Table Storage 系結是 Azure 儲存體 數據表系結。
用來在程式代碼中識別此系結的名稱 outMessage 識別程式代碼中參考之系結參數的名稱。
將寫入數據的記憶體帳戶中的數據表名稱 testTable 函式的數據表名稱會寫入為輸出。 如果記憶體帳戶不存在,請在您的記憶體帳戶中建立名為 testTable 的數據表。
從 「local.setting.json」 選取設定 Create new local app settings 選取函式寫入為輸出 儲存體 帳戶。 Visual Studio Code 會擷取其本機項目連線 連接字串。

若要檢查已成功新增系結:

  1. 開啟檔案 TableStorageOutputFunc/function.json ,檢查 與 type: tabledirection: out 的新系結是否已新增至此檔案。
  2. local.settings.json開啟檔案,檢查包含記憶體帳戶的新機碼/值組 <your-storage-account-name>_STORAGE: <your-storage-account-connection-string> 連接字串 已新增至此檔案。

新增系結之後,請在這裡將 取代 TableStorageOutputFunc/__init__.py 為 Python 檔案,更新您的函式程式代碼以取用系結。

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}")

在本機執行函式

請遵循教學課程本機執行函式,並確認數據表輸出。

  1. 如果系統提示您連線到記憶體帳戶,請選取您在建立 Azure 函式資源時所選擇的 儲存體 帳戶。 此值用於 Azure Function 執行時間的 。 它不一定與您用於輸出的記憶體帳戶相同。
  2. 若要在本機啟動函式,請按 <kbd>F5 </kbd> ,或選取左側活動列中的 [執行] 和 [偵 錯] 圖示。
  3. 若要確認函式可以寫入您的數據表,請以滑鼠右鍵按兩下 Execute Function Now... Visual Studio Code WORKSPACE 檢視中的函式,並檢查函式回應。 回應訊息應該包含 rowKey 寫入資料表的 。

使用服務 連線 or 建立連線

在最後一個步驟中,您已在本機驗證函式專案。 現在您將瞭解如何設定 Azure 函式與雲端中 Azure 儲存體 數據表之間的連線,讓函式可以在部署至雲端之後寫入記憶體 Blob。

  1. function.json開啟本機專案中的 connection 檔案,將中的 bindings 屬性值變更為 AZURE_STORAGETABLE_CONNECTIONSTRING
  2. 執行下列 Azure CLI 命令,以建立 Azure 函式與 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}/resourceG roups/{source_resource_group}/providers/Microsoft.Web/sites/{site}
  • --target-id 格式: /subscriptions/{subscription}/resourceGroups/{target_resource_group}/providers/Microsoft.Storage/storageAccounts/{account}/tableServices/default

您已建立 Service 連線 or 資源,以AZURE_STORAGETABLE_CONNECTIONSTRING在函式的應用程式 設定 中設定變數。 此應用程式設定接著會由函式系結取用以連線到記憶體,讓函式可以寫入記憶體數據表。 您可以深入瞭解 Service 連線 or 如何協助 Azure Functions 連線至服務

將函式部署至 Azure

現在您可以將函式部署至 Azure,並確認記憶體資料表輸出系結可運作。

  1. 請遵循此 Azure Functions 教學課程 ,將您的函式部署至 Azure。
  2. 若要確認函式可以寫入數據表,請以滑鼠右鍵按兩下 Execute Function Now... Visual Studio Code RESOURCES 檢視中的函式,並檢查函式回應。 回應消息應該包含剛寫入數據表的 rowKey 函式。

疑難排解

如果記憶體主機有任何相關錯誤,例如 No such host is known (<acount-name>.table.core.windows.net:443),您需要檢查您用來連線到 Azure 儲存體 連接字串 是否包含資料表端點。 如果沒有,請移至 Azure 儲存體 入口網站,從Access keys刀鋒視窗複製 連接字串,並取代值。

如果您在本機啟動項目時發生此錯誤,請檢查 local.settings.json 檔案。

如果您將函式部署至雲端時發生此情況(在此情況下,函式部署通常會在 上Syncing triggers失敗),請檢查函式的應用程式 設定。

清除資源

如果您不打算繼續使用此專案,請刪除您稍早建立的函式應用程式資源。

  1. 在 Azure 入口網站 中,開啟 [函式應用程式] 資源,然後選取 [刪除]。
  2. 輸入應用程式名稱,然後選取 [ 刪除 ] 以確認。

下一步

請閱讀下列文章,以深入瞭解服務 連線 或概念,以及如何協助 Azure Functions 連線到其他雲端服務。