教學課程:使用 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 觸發程式,儲存體 數據表做為輸出 |
本機項目驗證類型 | 連接字串 |
雲端函式驗證類型 | 連接字串 |
必要條件
- 在其中一個支援的平臺上安裝 Visual Studio Code。
- Azure CLI。 您可以在 Azure Cloud Shell 中使用,或將其安裝在本機。
- Azure 儲存體 帳戶和 儲存體 數據表。 如果您沒有記憶體帳戶, 請建立一個。
- 本指南假設您知道 Functions 開發人員指南中呈現的概念,以及如何連線到 Azure Functions 中的服務。
建立 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 會擷取其本機項目連線 連接字串。 |
若要檢查已成功新增系結:
- 開啟檔案
TableStorageOutputFunc/function.json
,檢查 與type: table
direction: out
的新系結是否已新增至此檔案。 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}")
在本機執行函式
請遵循教學課程在本機執行函式,並確認數據表輸出。
- 如果系統提示您連線到記憶體帳戶,請選取您在建立 Azure 函式資源時所選擇的 儲存體 帳戶。 此值用於 Azure Function 執行時間的 。 它不一定與您用於輸出的記憶體帳戶相同。
- 若要在本機啟動函式,請按
<kbd>
F5</kbd>
,或選取左側活動列中的 [執行] 和 [偵 錯] 圖示。 - 若要確認函式可以寫入您的數據表,請以滑鼠右鍵按兩下
Execute Function Now...
Visual Studio Code WORKSPACE 檢視中的函式,並檢查函式回應。 回應訊息應該包含rowKey
寫入資料表的 。
使用服務 連線 or 建立連線
在最後一個步驟中,您已在本機驗證函式專案。 現在您將瞭解如何設定 Azure 函式與雲端中 Azure 儲存體 數據表之間的連線,讓函式可以在部署至雲端之後寫入記憶體 Blob。
function.json
開啟本機專案中的connection
檔案,將中的bindings
屬性值變更為AZURE_STORAGETABLE_CONNECTIONSTRING
。- 執行下列 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,並確認記憶體資料表輸出系結可運作。
- 請遵循此 Azure Functions 教學課程 ,將您的函式部署至 Azure。
- 若要確認函式可以寫入數據表,請以滑鼠右鍵按兩下
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
失敗),請檢查函式的應用程式 設定。
清除資源
如果您不打算繼續使用此專案,請刪除您稍早建立的函式應用程式資源。
下一步
請閱讀下列文章,以深入瞭解服務 連線 或概念,以及如何協助 Azure Functions 連線到其他雲端服務。