在本教學課程中,您將透過完成下列工作,了解如何將 Python 函式設定為使用儲存體佇列作為觸發程序。
- 使用 Visual Studio Code 建立 Python 函式專案。
- 使用 Visual Studio Code 在本機執行函式。
- 使用 Azure CLI 建立 Azure 函式與儲存體佇列與服務連接器之間的連線。
- 使用 Visual Studio 部署函式。
本教學課程中函式專案元件的概觀:
| 專案元件 | 選擇/解決方案 |
|---|---|
| 來源服務 | Azure Function |
| 目標服務 | Azure 儲存體佇列 |
| 函式繫結 | 儲存體佇列作為觸發程序 |
| 本機專案驗證類型 | 連接字串 |
| 雲端函式驗證類型 | 連接字串 |
警告
Microsoft 建議您使用最安全的可用驗證流程。 此程序中描述的認證流程需要對應用程式高度信任,且存在其他流程中不存在的風險。 當其他更安全的流程 (例如受控識別) 無法運作時,才應該只使用此流程。
先決條件
- 將 Visual Studio Code 安裝到其中一個支援的平台。
- Azure CLI。 您可以在 Azure Cloud Shell 中使用,或將其安裝在本機。
- Azure 儲存體帳戶和儲存體佇列。 如果您沒有 Azure 儲存體,請建立一個。
- 本指南假設您知道 Azure Functions 開發人員指南,以及如何在 Functions 中連線至服務中呈現的基本概念。
建立 Python 函式專案
請依照 教學建立本地的 Azure Functions 專案。 請在提示處提供以下資訊:
| Prompt | 選取項目 |
|---|---|
| 選取語言 | 選擇 Python。 (v1 程式設計語言模型) |
| 選取 Python 解譯器來建立虛擬環境 | 選擇您慣用的 Python 解譯器。 如果選項未顯示,請輸入 Python 二進位檔的完整路徑。 |
| 為專案的第一個函式選取範本 | 選擇 Azure Queue Storage trigger。 |
| 提供函式名稱 | 輸入 QueueStorageTriggerFunc。 |
| 從 "local.settings.json" 選取設定 | 選擇 Create new local app settings,可讓您選取儲存體帳戶,並提供作為觸發程序的佇列名稱。 |
根據這些資訊,Visual Studio Code 會產生一個以 Azure Storage Queue 作為觸發點的 Python 函式專案。 本機專案會使用儲存至 local.settings.json 檔案的連接字串來連線至 Azure 儲存體。 最後,函式 __init__.py 檔案中的 main 函式可透過定義於 function.json 檔案中的函式繫結來取用連接字串。
在本機執行函式
請遵循教學課程在本機執行函式,並確認觸發程序。
- 如果系統提示你連接儲存裝置,請選擇你建立 Azure 函式資源時選擇的儲存帳號。 此值會用於 Azure 函式的執行階段,且它不一定與您用於觸發程序的儲存體帳戶相同。
- 若要在本機啟動函式,請按
<kbd>F5</kbd>或選取左側 [活動] 列中的 [執行並偵錯] 圖示。 - 要確認觸發器是否正常運作,請保持函式在本地執行,並在 Azure 入口網站開啟儲存佇列窗格。 選擇 新增訊息,並提供測試訊息。 您應該會看到該函式已觸發並處理為 Visual Studio Code 終端機中的佇列項目。
使用服務連接器建立連線
最後一步,你在本地驗證了函式專案。 接著,你會學習如何配置 Azure 函式與 Azure 儲存佇列之間的連線。 一旦函式部署到雲端,這個連線允許函式從儲存佇列接收觸發器。
- 在你本地專案中打開
function.json檔案,將屬性connection的值bindings改為 。AZURE_STORAGEQUEUE_CONNECTIONSTRING - 執行下列 Azure CLI 命令,以建立 Azure 函式與 Azure 儲存體帳戶之間的連線。
az functionapp connection create storage-queue --source-id "<your-function-resource-id>" --target-id "<your-storage-queue-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}/queueServices/default
此步驟將建立一個服務連接器資源,用於在函式的應用程式設定中設定 AZURE_STORAGEQUEUE_CONNECTIONSTRING變數。 函式繫結執行階段會使用它來連線到儲存體,讓函式可以接受來自儲存體佇列的觸發程序。 如需詳細資訊,請前往服務連接器如何協助 Azure Functions 連線到服務。
將您的函式部署至 Azure
現在您可以將函式部署至 Azure,並確認儲存體佇列觸發程序可正常運作。
- 請遵循此 Azure Functions 教學課程 ,將您的函式部署至 Azure。
- 在 Azure 入口開啟儲存佇列窗格。 選擇 新增訊息,並提供測試訊息。 您應該會看到函式已觸發並處理為函式記錄中的佇列項目。
疑難排解
如果儲存體主機有任何相關錯誤,例如 No such host is known (<account-name>.queue.core.windows.net:443),請檢查您用來連線到 Azure 儲存體的連接字串是否包含佇列端點。 如果沒有,請前往 Azure 入口網站中的 Azure 儲存體,從 Access keys 窗格中複製連接字串,並取代值。
如果您在本機啟動專案時發生此錯誤,請檢查 local.settings.json 檔案。
如果您將函式部署至雲端時發生此錯誤 (在此案例中,函式部署通常會在 Syncing triggers 上失敗),請檢查函式的應用程式設定。
清除資源
如果您不打算繼續使用此專案,請刪除您稍早建立的函式應用程式資源。
後續步驟
閱讀以下文章,了解更多關於服務連接器概念及其如何幫助 Azure Functions 連接服務。