教學課程:使用 Azure 數據表記憶體輸出設定 Python 函式

在這個教學中,你會設定一個 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 觸發器,輸出為儲存表。 本地與雲端的認證類型是 連接字串。

必要條件

建立函式專案

在 Visual Studio Code 中,建立一個帶有 HTTP 觸發器的 Python 函式專案。

  1. F1 開啟指令面板,搜尋並選取指令 Azure Functions: 建立新 Project
  2. 選取將包含函數專案的資料夾,選取 [瀏覽],然後建立新資料夾或選擇一個空白資料夾作為專案工作區。 請勿選擇已屬於工作區一部分的專案資料夾。
  3. 對於 選擇專案類型,選擇 Python
  4. 對於 選擇Python程式模型,選擇 Model V1
  5. 對於 選擇一個Python直譯器來建立虛擬環境,選擇 手動輸入Python直譯器或完整路徑並輸入你Python執行檔的完整路徑。
  6. 選取專案第一個函數的範本,選取 [HTTP 觸發程序]
  7. 對於 提供函式名稱,請輸入 TableStorageOutputFunc
  8. 授權層級中,選擇匿名
  9. 選擇 你想如何開啟專案,請選擇 在目前視窗中開啟

欲了解更多資訊,請參閱使用 Visual Studio Code 建立並部署函式程式碼至 Azure

新增儲存體資料表輸出繫結

以下程序會編輯你專案中的 function.jsonlocal.settings.json 檔案,建立一個函式的表格輸出綁定。

  1. 在你的函式資料夾中右鍵點擊 function.json 檔案,然後從右鍵選單中選擇 新增綁定
  2. 在指令面板中,針對 選擇綁定的方向,選擇 向外
  3. 對於選擇綁定方向為『out』的選項,請選擇Azure 資料表儲存體
  4. 用於在程式碼中識別此繫結的名稱中,輸入 outMessage
  5. 儲存帳戶中要寫入資料的資料表名稱,輸入testTable
  6. 從「local.settings.json」中選擇包含您的儲存帳戶連接字串的應用程式設定,然後選擇建立新的本地應用程式設定
  7. 選擇訂閱中,選擇您的 Azure 訂閱。
  8. 對於 選擇儲存帳戶類型以進行開發,請選擇 使用Azure 儲存體用於遠端儲存
  9. 對於 選擇儲存帳號,選擇用於輸出的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。

  1. 在你的專案 function.json 檔案中,將 connection 屬性的值改為 bindings
  2. F1 開啟指令面板,搜尋並選擇指令 Azure Functions: 部署至 Function App
  3. 選擇訂閱中,選擇您的 Azure 訂閱。
  4. 請在選擇函數應用程式中,選擇建立新函數應用程式
  5. 對於 選擇新資源的位置,請為你的 Azure Functions 應用程式選擇一個Azure區域,最好是與你的儲存帳號相同的區域。
  6. 對於 新函式應用程式的名稱輸入,你可以輸入與本地函式相同的名稱 TableStorageOutputFunc
  7. 對於 選擇執行時堆疊,選擇 Python 3.10
  8. 選擇 資源認證類型時,請選擇 秘密

Important

使用秘密的 連接字串 驗證流程需要對應用程式高度信任,且存在其他流程中不存在的風險。 只有當更安全的流程,例如受控識別無法運作時,才應該使用此流程。

使用服務連接器建立連線

建立 Functions 應用程式後,你可以用 Service Connector 將應用程式連接到你的 Table Storage 資料表,這樣應用程式就能輕鬆將輸出寫入你的儲存帳號。 以下指令建立一個服務連接器資源,並在函式的應用程式設定中設定變 AZURE_STORAGETABLE_CONNECTIONSTRING 數。

函式綁定會使用這個應用程式設定,以便連接到儲存帳戶,從而使函式能寫入儲存資料表。 欲了解更多資訊,請參閱 How Service Connector 協助Azure Functions連接服務

要建立連線,你可以在 Visual Studio Code 執行以下 Azure CLI 指令,或使用 Azure Cloud Shelllocal 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>