使用 Azure Functions 和 Azure Cosmos DB 儲存非結構化資料
Azure Cosmos DB 是儲存非結構化和 JSON 資料的好方法。 當 Azure Cosmos DB 與 Azure Functions 合併之後,就能輕鬆快速地儲存資料,而使用的程式碼比起在關聯式資料庫中儲存資料所需的程式碼更少。
注意
此時,Azure Cosmos DB 觸發程序、輸入繫結,以及輸出繫結只會使用 SQL API 和圖形 API 帳戶。
在 Azure Functions 中,輸入和輸出繫結會提供宣告式方法,以便從函式連線到外部服務資料。 在本文中,了解如何更新現有的函式,以新增可在 Azure Cosmos DB 文件中儲存非結構化資料的輸出繫結。
必要條件
完成本教學課程:
本文會使用 作為在 Azure 入口網站 中建立第一個函式中所建立資源的起點。 如果您尚未這麼做,請立即完成這些步驟以建立函式應用程式。
建立 Azure Cosmos DB 帳戶
在建立輸出繫結之前,您必須先擁有使用 SQL API 的 Azure Cosmos DB 帳戶。
從 Azure 入口網站功能表或 [首頁] 頁面,選取 [建立資源]。
搜尋 Azure Cosmos DB。 選取 [建立]>[Azure Cosmos DB]。
在 [建立 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。
在 [建立 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 帳戶,而且必須在建立帳戶時選擇加入。 若您並未看到套用免費層折扣的選項,則訂用帳戶中的另一個帳戶已透過免費層啟用。
注意
如果您選取 [無伺服器] 作為容量模式,則無法使用下列選項:
- 套用免費層折扣
- 限制帳戶總輸送量
在 [全域散發] 索引標籤中,設定下列詳細資料。 您可以保留預設值以用於本快速入門:
設定 值 Description 異地備援 停用 藉由將您的區域與配對區域進行配對,在您的帳戶上啟用或停用全域散發。 您可以在稍後將更多區域新增至您的帳戶。 多重區域寫入 停用 多重區域寫入功能可讓您利用在全球為資料庫及容器佈建的輸送量。 可用性區域 停用 可用性區域可協助您進一步改善應用程式的可用性和復原能力。 注意
如果您在上一個 [基本] 頁面中選取 [無伺服器] 作為 [容量模式],則無法使用下列選項:
- 異地備援
- 多重區域寫入
您可以選擇在下列索引標籤中設定其他詳細資料:
選取 [檢閱 + 建立]。
檢閱帳戶設定,然後選取 [建立]。 建立帳戶需要幾分鐘的時間。 請等候入口網站頁面顯示 [您的部署已完成]。
選取 [前往資源] 前往 Azure Cosmos DB 帳戶頁面。
新增輸出繫結
在 Azure 入口網站中,瀏覽至您先前建立的函式應用程式,並加以選取。
選取 [函式],然後選取 HttpTrigger 函式。
選取 [整合] 和 [+ 新增輸出]。
使用表格中指定的 [建立輸出] 設定:
設定 建議的值 描述 繫結類型 Azure Cosmos DB 要選取用來建立 Azure Cosmos DB 之輸出繫結的繫結類型名稱。 文件參數名稱 taskDocument 在程式碼中參考 Azure Cosmos DB 物件的名稱。 資料庫名稱 taskDatabase 用於儲存文件的資料庫名稱。 集合名稱 taskCollection 資料庫集合的名稱。 如果為 true,就會建立 Azure Cosmos DB 資料庫和集合 Yes 集合尚未存在,因此加以建立。 Azure Cosmos DB 帳戶連線 新增設定 選取 [新增],並選擇 [Azure Cosmos DB 帳戶] 和您先前建立的 [資料庫帳戶],然後選取 [確定]。 建立適用於帳戶連線的應用程式設定。 繫結會使用此設定來連線至資料庫。 選取 [確定] 以建立繫結。
更新函式程式碼
將現有函式程式碼取代為下列採用您所選語言的程式碼:
使用下列程式碼來取代現有的 C# 函式:
#r "Newtonsoft.Json"
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
public static IActionResult Run(HttpRequest req, out object taskDocument, ILogger log)
{
string name = req.Query["name"];
string task = req.Query["task"];
string duedate = req.Query["duedate"];
// We need both name and task parameters.
if (!string.IsNullOrEmpty(name) && !string.IsNullOrEmpty(task))
{
taskDocument = new
{
name,
duedate,
task
};
return (ActionResult)new OkResult();
}
else
{
taskDocument = null;
return (ActionResult)new BadRequestResult();
}
}
此程式碼範例會讀取 HTTP 要求查詢字串,並將它們指派給 taskDocument
物件中的欄位。 taskDocument
繫結會從此繫結參數傳送物件資料,以便儲存在繫結的文件資料庫中。 第一次執行函式時會建立資料庫。
測試函式和資料庫
選取 [測試/執行]。 在 [查詢] 底下選取 [+ 新增參數],並將下列參數新增至查詢字串:
name
task
duedate
選取 [執行] 並確認會傳回 200 狀態。
在 Azure 入口網站中,搜尋並選取 Azure Cosmos DB。
選擇您的 Azure Cosmos DB 帳戶,然後選取 [資料總管]。
展開 TaskCollection 節點,選取新文件,並確認文件包含您的查詢字串值,以及一些額外的中繼資料。
您已成功將繫結新增至可在 Azure Cosmos DB 執行個體中儲存非結構化資料的 HTTP 觸發程序。
清除資源
在上述步驟中,您已建立資源群組中的 Azure 資源。 如果您預期未來不需要這些資源,則可以藉由刪除資源群組予以刪除。
從 Azure 入口網站功能表或 [首頁] 頁面,選取 [資源群組]。 然後,在 [資源群組] 頁面上,選取 [myResourceGroup]。
在 [myResourceGroup] 頁面上,確定所列出的資源是您想要刪除的項目。
選取 [刪除資源群組],在文字方塊中輸入 myResourceGroup,然後選取 [刪除]。
下一步
如需繫結至 Azure Cosmos DB 執行個體的詳細資訊,請參閱 Azure Functions Azure Cosmos DB 繫結。
- Azure Functions 觸發程序和繫結概念
了解 Functions 與其他服務整合的方式。 - Azure Functions 開發人員參考
提供更多有關 Functions 執行階段的技術資訊,以及可供撰寫函數程式碼及定義觸發程序和繫結時參考。 - 撰寫 Azure Functions 並在本機進行測試
說明在本機開發函式的選項。