建立 Azure Cosmos DB 所觸發的函式

了解如何在 Azure 入口網站中建立函式,此函式會在 Azure Cosmos DB 中新增或變更資料時觸發。 如需 Azure Cosmos DB 的詳細資訊,請參閱 Azure Cosmos DB:使用 Azure Functions 的無伺服器資料庫計算

注意

入口網站內編輯僅支援 JavaScript、PowerShell 和 C# 指令碼函式。 只有在「使用量」方案中執行時,才支援 Python 入口網站內編輯。 可能的話,您應該在本機開發函式

若要深入了解在 Azure 入口網站中編輯函式程式碼的限制,請參閱 Azure 入口網站中的開發限制

必要條件

完成本教學課程:

  • 如尚未擁有 Azure 訂用帳戶,請在開始之前先建立免費帳戶

注意

目前僅支援將 Azure Cosmos DB 繫結用於 Azure Cosmos DB for NoSQL。 從延伸模組 5.x 開始,將會使用表格儲存體繫結提供對 Azure Cosmos DB for Table 的支援。 對於其他所有的 Azure Cosmos DB API,您應使用 API 的靜態用戶端,以從函式存取資料庫,包括 Azure Cosmos DB for MongoDBAzure Cosmos DB for CassandraAzure Cosmos DB for Apache Gremlin

登入 Azure

使用您的 Azure 帳戶登入 Azure 入口網站

建立 Azure Cosmos DB 帳戶

在建立觸發程序之前,您必須先擁有使用 SQL API 的 Azure Cosmos DB 帳戶。

  1. 從 Azure 入口網站功能表或 [首頁] 頁面,選取 [建立資源]

  2. 搜尋 Azure Cosmos DB。 選取 [建立]>[Azure Cosmos DB]

  3. 在 [建立 Azure Cosmos DB 帳戶] 頁面上,選取 [Azure Cosmos DB for NoSQL] 區段內的 [建立] 選項。

    Azure Cosmos DB 提供數個 API:

    • NoSQL,適用於文件資料
    • PostgreSQL
    • MongoDB,適用於文件資料
    • Apache Cassandra
    • Table
    • Apache Gremlin,適用於圖形資料

    若要深入了解適用於 NoSQL 的 API,請參閱歡迎使用 Azure Cosmos DB

  4. 在 [建立 Azure Cosmos DB 帳戶] 頁面中,輸入新 Azure Cosmos DB 帳戶的基本設定。

    設定 Description
    訂用帳戶 訂用帳戶名稱 選取您要用於此 Azure Cosmos DB 帳戶的 Azure 訂用帳戶。
    資源群組 資源群組名稱 選取資源群組,或選取 [新建],然後輸入新資源群組的唯一名稱。
    客戶名稱 唯一名稱 輸入名稱來識別您的 Azure Cosmos DB 帳戶。 因為 documents.azure.com 會附加到您所提供的名稱以建立 URI,請使用唯一名稱。 名稱只能包含小寫字母、數字及連字號 (-) 字元。 其必須是 3-44 個字元。
    Location 最接近使用者的區域 選取用來裝載 Azure Cosmos DB 帳戶的地理位置。 使用最接近使用者的位置,讓他們能以最快速度存取資料。
    容量模式 佈建輸送量無伺服器 選取 [佈建的輸送量],以佈建的輸送量模式建立帳戶。 選取 [無伺服器],以無伺服器模式建立帳戶。
    申請 Azure Cosmos DB 免費階層折扣 適用不適用 使用 Azure Cosmos DB 免費層,您便能在帳戶中免費取得前 1000 RU/秒和 25 GB 的儲存體。 深入了解免費層
    限制帳戶總輸送量 是否選取 限制可在此帳戶上佈建的總輸送量。 此限制可防止與佈建輸送量相關的非預期費用。 建立您的帳戶之後,您可以更新或移除此限制。

    每個 Azure 訂用帳戶最多可以有一個免費層的 Azure Cosmos DB 帳戶,而且必須在建立帳戶時選擇加入。 若您並未看到套用免費層折扣的選項,則訂用帳戶中的另一個帳戶已透過免費層啟用。

    Screenshot shows the Create Azure Cosmos DB Account page.

    注意

    如果您選取 [無伺服器] 作為容量模式,則無法使用下列選項:

    • 套用免費層折扣
    • 限制帳戶總輸送量
  5. 在 [全域散發] 索引標籤中,設定下列詳細資料。 您可以保留預設值以用於本快速入門:

    設定 Description
    異地備援 停用 藉由將您的區域與配對區域進行配對,在您的帳戶上啟用或停用全域散發。 您可以在稍後將更多區域新增至您的帳戶。
    多重區域寫入 停用 多重區域寫入功能可讓您利用在全球為資料庫及容器佈建的輸送量。
    可用性區域 停用 可用性區域可協助您進一步改善應用程式的可用性和復原能力。

    注意

    如果您在上一個 [基本] 頁面中選取 [無伺服器] 作為 [容量模式],則無法使用下列選項:

    • 異地備援
    • 多重區域寫入
  6. 您可以選擇在下列索引標籤中設定其他詳細資料:

    • 網路功能。 設定從虛擬網路存取
    • 備份原則。 設定定期連續備份原則。
    • 加密。 使用服務受控金鑰或客戶自控金鑰
    • 標籤。 籤標籤為成對的名稱和數值,可讓您透過將相同標籤套用至多個資源與資源群組,進而分類資源並檢視合併的帳單。
  7. 選取 [檢閱 + 建立]。

  8. 檢閱帳戶設定,然後選取 [建立]。 建立帳戶需要幾分鐘的時間。 請等候入口網站頁面顯示 [您的部署已完成]

    Screenshot shows that your deployment is complete.

  9. 選取 [前往資源] 前往 Azure Cosmos DB 帳戶頁面。

    Screenshot shows the Azure Cosmos DB account page.

在 Azure 中建立函數應用程式

  1. 從 Azure 入口網站功能表或 [首頁] 頁面,選取 [建立資源]

  2. 在 [新增] 頁面中,選取 [計算]>[函數應用程式]

  3. 在 [基本] 頁面中,使用下表中指定的函式應用程式設定。

    設定 建議的值 描述
    訂用帳戶 您的訂用帳戶 用於建立新函數應用程式的訂用帳戶。
    資源群組 myResourceGroup 要在其中建立函數應用程式的新資源群組名稱。 您應該建立新的資源群組,因為在現有的資源群組中建立新的函數應用程式時,存在已知的限制
    函數應用程式名稱 全域唯一的名稱 用以識別新函式應用程式的名稱。 有效的字元是 a-z (不區分大小寫)、0-9-
    您要部署程式碼或容器映像嗎? 代碼 發佈程式碼檔案或 Docker 容器的選項。
    執行階段堆疊 慣用語言 選擇支援您慣用函式程式設計語言的執行階段。 入口網站內編輯僅適用於 JavaScript、PowerShell、Python、TypeScript 和 C# 指令碼。 C# 類別庫和 Java 函式必須在本機開發
    版本 版本號碼 選擇已安裝的執行階段版本。
    區域 慣用區域 選取的區域應靠近您或靠近函式能夠存取的其他服務。
    作業系統 Windows 系統會根據執行階段堆疊選項預先選取作業系統,但您可以視需要變更設定。 入口網站內編輯僅在 Windows 上提供支援。 只有在 Linux 上才支援容器發佈。
    裝載選項和方案 使用量 (無伺服器) 定義如何將資源配置給函式應用程式的主控方案。 在預設 [使用量] 方案中,會根據函式的要求來動態新增資源。 在此無伺服器裝載中,您只需要針對函式有執行的時間來付費。 進階方案也提供動態調整。 在 App Service 方案中執行時,您必須管理函式應用程式的調整
  4. 接受在 [儲存體] 索引標籤上建立新儲存體帳戶的預設選項,並在 [監視] 索引標籤上新建 Application Insight 執行個體。您也可以選擇使用現有的儲存體帳戶或 Application Insights 執行個體。

  5. 選取 [檢閱 + 建立] 以檢閱所選的應用程式設定,然後選取 [建立] 來佈建和部署函數應用程式。

  6. 選取入口網站右上角的 [通知] 圖示,查看是否有 [部署成功] 訊息。

  7. 選取 [前往資源],以檢視您新的函式應用程式。 您也可以選取 [釘選到儀表板]。 釘選可讓您更輕鬆地從儀表板返回此函式應用程式資源。

    Screenshot of deployment notification.

接下來,您要在新的函式應用程式中建立函式。

建立 Azure Cosmos DB 觸發程序

  1. 在函數應用程式中的 [函式] 下,依序選取 [概觀]、[+ 建立]

  2. 在 [選取範本] 下,向下捲動並選擇 [Azure Cosmos DB 儲存體觸發程序] 範本。

  3. 在 [範本詳細資料] 中,使用此資料表中指定的設定來設定新觸發程序,然後選取 [建立]

    設定 建議的值 描述
    新增函式 接受預設名稱 函數的名稱。
    Azure Cosmos DB 帳戶連線 接受預設的新名稱 選取 [新增]、稍早建立的 [資料庫帳戶],然後選取 [確定]。 此動作會建立適用於帳戶連線的應用程式設定。 繫結會使用此設定來連線至資料庫。
    資料庫名稱 工作 資料庫的名稱,該資料庫包含要監視的集合。
    集合名稱 項目 要監視的集合名稱。
    租用的集合名稱 leases 可存放租用的集合名稱。
    若不存在,則建立租用集合 Yes 確定租用集合存在後加以自動建立。

    Azure 會根據提供的值建立 Azure Cosmos DB 觸發的函式。

  4. 若要顯示以範本為基礎的函式程式碼,請選取 [程式碼 + 測試]

    Azure Cosmos DB function template in C#

    此函式範本會將文件數和第一個文件識別碼寫入記錄。

接下來,連線至 Azure Cosmos DB 帳戶,並在 Tasks 資料庫中建立 Items 容器。

建立項目容器

  1. 在瀏覽器的新索引標籤中,開啟 Azure 入口網站的第二個執行個體。

  2. 在入口網站的左側,展開圖示列,在搜尋欄位中輸入 cosmos,然後選取 [Azure Cosmos DB]

    Search for the Azure Cosmos DB service

  3. 選擇您的 Azure Cosmos DB 帳戶,然後選取 [資料總管]

  4. 在 [SQL API] 底下選擇 [工作] 資料庫,然後選取 [新增容器]

    Create a container

  5. 在 [新增容器] 中,使用下圖下方的表格中顯示的設定。

    Define the Tasks container

    設定 建議的值 描述
    資料庫識別碼 工作 新資料庫的名稱。 這必須符合您函式繫結中定義的名稱。
    容器識別碼 項目 新容器的名稱。 這必須符合您函式繫結中定義的名稱。
    分割區索引鍵 /category 可將資料平均分散到每個資料分割的資料分割索引鍵。 選取正確的資料分割索引鍵對於建立高效能容器來說很重要。
    輸送量 400 RU 使用預設值。 如果您想要降低延遲,稍後可以相應增加輸送量。
  6. 按一下 [確定] 以建立 [項目] 容器。 容器可能會在很短的時間內建立。

當函式繫結中指定的容器存在之後,您就能將項目新增至這個新容器,藉以測試函式。

測試函式

  1. 在資料總管中展開新的項目容器,選擇 [項目],然後選取 [新增項目]

    Create an item in Items container

  2. 使用以下內容來取代新項目的內容,然後選擇 [儲存]

    {
        "id": "task1",
        "category": "general",
        "description": "some task"
    }
    
  3. 切換至第一個瀏覽器索引標籤,其中包含您在入口網站中的函式。 展開函式記錄,並確認新文件已經觸發函式。 查看已將 task1 文件識別碼值寫入記錄。

    View message in the logs.

  4. (選擇性) 返回您的文件、進行變更,然後按一下 [更新]。 接著,返回函式記錄,並確認更新也已觸發函式。

清除資源

此集合中的其他快速入門會以本快速入門為基礎。 如果您打算繼續進行後續的快速入門、教學課程或者您在本快速入門中建立的任何服務,請勿清除資源。

在 Azure 中「資源」是指函式應用程式、函式、儲存體帳戶等等。 其會分組為「資源群組」,您可以藉由刪除群組來刪除群組中的所有項目。

您已建立完成這些快速入門所需的資源。 您可能必須支付這些資源,取決於您的帳戶狀態服務定價。 如果您不再需要資源,刪除方式如下:

  1. 在 Azure 入口網站中,移至 [資源群組] 分頁。

    若要從函數應用程式頁面移至該頁面,選取 [概觀] 索引標籤,然後選取 [資源群組] 底下的連結。

    Screenshot that shows select the resource group to delete from the function app page.

    若要從儀表板移至該頁面,請選取 [資源群組],然後選取您用於本文的資源群組。

  2. 在 [資源群組] 分頁中,檢閱包含資源的清單,並確認這些是您想要刪除的項目。

  3. 選取 [刪除資源群組],並遵循指示。

    刪除作業可能需要幾分鐘。 完成時,通知會出現幾秒鐘的時間。 您也可以選取分頁頂端的鈴鐺圖示以檢視通知。

下一步

您已建立要在 Azure Cosmos DB 中新增或修改文件時執行的函式。 如需 Azure Cosmos DB 觸發程序的詳細資訊,請參閱適用於 Azure Functions 的 Azure Cosmos DB 繫結

既然您已建立第一個函式,讓我們將輸出繫結新增至函式,以將訊息寫入儲存體佇列。