Share via


教學課程:以 Azure Blob 儲存體 作為輸入的 Python 函式

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

  • 使用 Visual Studio Code 建立 Python 函式專案。
  • 變更程式代碼以新增記憶體 Blob 輸入函式系結。
  • 使用 Visual Studio Code 在本機執行函式。
  • 使用 Azure CLI 建立 Azure Function 與 儲存體 Blob 與 Service 連線 or 之間的連線。
  • 使用 Visual Studio 部署函式。

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

項目元件 Selection / Solution
來源服務 Azure Function
目標服務 Azure 儲存體 Blob
函式系結 HTTP 觸發程式,儲存體 Blob 作為輸入
本機項目驗證類型 連接字串
雲端函式驗證類型 系統指派的受控識別

必要條件

建立 Python 函式專案

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

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

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

新增 Blob 儲存體 輸入系結

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

提示 Description
選取系結方向 in 系結是輸入系結。
選取具有方向的系結... Azure Blob Storage 系結是 Azure 儲存體 Blob 系結。
用來在程式代碼中識別此系結的名稱 inputBlob 識別程式代碼中參考之系結參數的名稱。
要從中讀取 Blob 的記憶體帳戶路徑 testcontainer/test.txt 函式讀取為輸入的 Blob 路徑。 準備名為 test.txt的檔案,並以 Hello, World! 作為檔案內容。 建立名為 testcontainer 的容器,並將檔案上傳至容器。
從 「local.setting.json」 選取設定 Create new local app settings 選取您的函式讀取為輸入 儲存體 帳戶。 Visual Studio Code 會擷取其本機項目連線 連接字串。

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

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

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

import logging
import azure.functions as func

def main(req: func.HttpRequest, inputBlob: bytes) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')
    return func.HttpResponse('The triggered function executed successfully. And read blob content: {}'.format(inputBlob))

在本機執行函式

請遵循教學課程 本機執行函式,並確認 Blob 輸入。

  1. 如果系統提示您連線到儲存體,請選取您在建立 Azure 函式資源時所使用的儲存體帳戶。 它適用于 Azure 函式執行時間的內部使用,而且不一定與您用於輸入的函式相同。
  2. 若要在本機啟動函式,請按 <kbd> F5 </kbd> ,或選取左側活動列中的 [執行] 和 [偵 錯] 圖示。
  3. 若要確認函式可以讀取 Blob,請以滑鼠右鍵按一下 Exucute Function Now... Visual Studio Code WORKSPACE 中的函式,並檢查函式回應。 回應訊息應包含 Blob 檔案中的內容。

使用服務連線or 建立連線

您剛執行專案,並在本機驗證函式,而本機專案會使用連接字串連線到儲存體 Blob。

現在您將瞭解如何設定 Azure 函式與Azure Blob 儲存體之間的連線,讓函式可以在部署至雲端之後讀取 Blob。 在雲端環境中,我們會示範如何使用系統指派的受控識別進行驗證。

  1. function.json開啟本機專案中的 connection 檔案,將 中的 bindings 屬性值變更為 MyBlobInputConnection
  2. 執行下列 Azure CLI 命令,以建立 Azure 函式與Azure 儲存體之間的連線。
az functionapp connection create storage-blob --source-id "<your-function-resource-id>" --target-id "<your-storage-blob-resource-id>" --system-identity --customized-keys AZURE_STORAGEBLOB_RESOURCEENDPOINT=MyBlobInputConnection__serviceUri
  • --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}/blobServices/default

您已使用 Service 連線or 與系統指派的受控識別,在 Azure Function 與 Azure Blob 儲存體 之間建立連線。

服務連線or MyBlobInputConnection__serviceUri 在函式系結執行時間用來連線到儲存體的函式應用程式設定中設定變數,讓函式可以從 Blob 儲存體讀取資料。 您可以深入瞭解 Service 連線or 如何協助 Azure Functions 連線至服務

將函式部署至 Azure

現在您可以將函式部署至 Azure,並確認儲存體 Blob 輸入系結可運作。

  1. 請遵循教學課程 ,將您的函式部署至 Azure。
  2. 若要確認函式可以讀取 Blob,請以滑鼠右鍵按一下 Exucute Function Now... Visual Studio Code RESOURCES 檢視中的函式,並檢查函式回應。 回應訊息應包含 Blob 檔案中的內容。

疑難排解

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

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

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

清除資源

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

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

下一步

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