Azure Functions 및 Azure Cosmos DB를 사용하여 구조화되지 않은 데이터 저장Store unstructured data using Azure Functions and Azure Cosmos DB

Azure Cosmos DB는 구조화되지 않은 데이터 및 JSON 데이터를 저장하기 좋습니다.Azure Cosmos DB is a great way to store unstructured and JSON data. Cosmos DB를 Azure Functions와 함께 사용하면 관계형 데이터베이스에 데이터를 저장하는 데 필요한 것보다 훨씬 적은 코드를 사용하여 쉽고 빠르게 데이터를 저장할 수 있습니다.Combined with Azure Functions, Cosmos DB makes storing data quick and easy with much less code than required for storing data in a relational database.

참고

이때 Azure Cosmos DB 트리거, 입력 바인딩 및 출력 바인딩은 SQL API 및 Graph API 계정에서만 작동합니다.At this time, the Azure Cosmos DB trigger, input bindings, and output bindings work with SQL API and Graph API accounts only.

Azure Functions에서 입력 및 출력 바인딩은 함수에서 외부 서비스 데이터로 연결하기 위한 선언적 방식을 제공합니다.In Azure Functions, input and output bindings provide a declarative way to connect to external service data from your function. 이 문서에서는 구조화되지 않은 데이터를 Azure Cosmos DB 문서에 저장하는 출력 바인딩을 추가하여 기존 함수를 업데이트하는 방법에 대해 알아봅니다.In this article, learn how to update an existing function to add an output binding that stores unstructured data in an Azure Cosmos DB document.

사전 요구 사항Prerequisites

이 자습서를 완료하려면 다음이 필요합니다.To complete this tutorial:

이 항목에서는 Azure Portal에서 첫 번째 함수 만들기에서 만든 리소스를 시작점으로 사용합니다.This topic uses as its starting point the resources created in Create your first function from the Azure portal. 아직 만들지 않았다면 지금 이러한 단계를 수행하여 함수 앱을 만듭니다.If you haven't already done so, please complete these steps now to create your function app.

Azure Cosmos DB 계정 만들기Create an Azure Cosmos DB account

출력 바인딩을 만들기 전에 SQL API를 사용하는 Azure Cosmos DB 계정이 있어야 합니다.You must have an Azure Cosmos DB account that uses the SQL API before you create the output binding.

  1. Azure Portal 메뉴 또는 페이지에서 리소스 만들기 를 선택합니다.From the Azure portal menu or the Home page, select Create a resource.

  2. 새로 만들기 페이지에서 Azure Cosmos DB 를 검색하여 선택합니다.On the New page, search for and select Azure Cosmos DB.

  3. Azure Cosmos DB 페이지에서 만들기 를 선택합니다.On the Azure Cosmos DB page, select Create.

  4. Azure Cosmos DB 계정 만들기 페이지에서 새 Azure Cosmos 계정에 대한 기본 설정을 입력합니다.On the Create Azure Cosmos DB Account page, enter the basic settings for the new Azure Cosmos account.

    설정Setting Value 설명Description
    SubscriptionSubscription 구독 이름Subscription name 이 Azure Cosmos 계정에 사용하려는 Azure 구독을 선택합니다.Select the Azure subscription that you want to use for this Azure Cosmos account.
    리소스 그룹Resource Group 리소스 그룹 이름Resource group name 리소스 그룹을 선택하거나 새로 만들기 를 선택한 후, 새 리소스 그룹에 고유한 이름을 입력합니다.Select a resource group, or select Create new, then enter a unique name for the new resource group.
    계정 이름Account Name 고유한 이름A unique name Azure Cosmos 계정을 식별하는 이름을 입력합니다.Enter a name to identify your Azure Cosmos account. URI를 만들기 위해 제공하는 이름에 documents.azure.com 이 추가되므로 고유한 이름을 사용합니다.Because documents.azure.com is appended to the name that you provide to create your URI, use a unique name.

    이름은 소문자, 숫자 및 하이픈(-) 문자만 포함할 수 있으며,The name can only contain lowercase letters, numbers, and the hyphen (-) character. 길이는 3~44자여야 합니다.It must be between 3-44 characters in length.
    APIAPI 만들 계정 형식The type of account to create Core(SQL) 를 선택하여 문서 데이터베이스를 만들고 SQL 구문을 사용하여 쿼리합니다.Select Core (SQL) to create a document database and query by using SQL syntax.

    API는 만들 계정의 형식을 결정합니다.The API determines the type of account to create. Azure Cosmos DB는 문서 데이터용 Core(SQL) 및 MongoDB, 그래프 데이터용 Gremlin, Azure Table 및 Cassandra, 이렇게 5가지 API를 제공합니다.Azure Cosmos DB provides five APIs: Core (SQL) and MongoDB for document data, Gremlin for graph data, Azure Table, and Cassandra. 현재 각 API에 대한 별도의 계정을 만들어야 합니다.Currently, you must create a separate account for each API.
    용량 모드Capacity mode 프로비저닝된 처리량 또는 서버리스Provisioned throughput or Serverless 프로비저닝된 처리량 을 선택하여 프로비저닝된 처리량 모드에서 계정을 만듭니다.Select Provisioned throughput to create an account in provisioned throughput mode. 서버리스 를 선택하여 서버리스 모드에서 계정을 만듭니다.Select Serverless to create an account in serverless mode.
    체험 계층 할인 적용Apply Free Tier Discount 적용 또는 적용 안 함Apply or Do not apply Azure Cosmos DB 체험 계층을 사용하는 경우 처음에는 400RU/초 및 5GB의 스토리지가 계정에 무료로 제공됩니다.With Azure Cosmos DB free tier, you will get the first 400 RU/s and 5 GB of storage for free in an account. 체험 계층에 대해 자세히 알아보세요.Learn more about free tier.
    위치Location 사용자와 가장 가까운 지역The region closest to your users Azure Cosmos DB 계정을 호스트할 지리적 위치를 선택합니다.Select a geographic location to host your Azure Cosmos DB account. 데이터에 가장 빨리 액세스할 수 있도록 사용자와 가장 가까운 위치를 사용합니다.Use the location that is closest to your users to give them the fastest access to the data.
    계정 유형Account Type 프로덕션 또는 비프로덕션Production or Non-Production 계정이 프로덕션 워크로드에 사용되는 경우 프로덕션 을 선택합니다.Select Production if the account will be used for a production workload. 계정이 비프로덕션(예: 개발, 테스트, QA 또는 준비)에 사용되는 경우 비프로덕션 을 선택합니다.Select Non-Production if the account will be used for non-production, e.g. development, testing, QA, or staging. 이는 포털 환경을 조정하지만 기본 Azure Cosmos DB 계정에는 영향을 주지 않는 Azure 리소스 태그 설정입니다.This is an Azure resource tag setting that tunes the Portal experience but does not affect the underlying Azure Cosmos DB account. 이 값은 언제든지 변경할 수 있습니다.You can change this value anytime.

    참고

    Azure 구독당 최대 1개의 체험 계층 Azure Cosmos DB 계정을 사용할 수 있으며 계정을 만들 때 옵트인해야 합니다.You can have up to one free tier Azure Cosmos DB account per Azure subscription and must opt-in when creating the account. 체험 계층 할인을 적용하는 옵션이 표시되지 않으면 구독의 다른 계정에서 이미 체험 계층을 사용하도록 설정되었음을 의미합니다.If you do not see the option to apply the free tier discount, this means another account in the subscription has already been enabled with free tier.

    참고

    용량 모드서버리스 를 선택한 경우 다음 옵션을 사용할 수 없습니다.The following options are not available if you select Serverless as the Capacity mode:

    • 체험 계층 할인 적용Apply Free Tier Discount
    • 지리적 중복Geo-redundancy
    • 다중 지역 쓰기Multi-region Writes

    Azure Cosmos DB에 대한 새 계정 페이지

  5. 검토 + 만들기 를 선택합니다.Select Review + create. 네트워크태그 섹션은 건너뛰어도 됩니다.You can skip the Network and Tags sections.

  6. 계정 설정을 검토한 다음, 만들기 를 선택합니다.Review the account settings, and then select Create. 계정을 만드는 데 몇 분이 걸립니다.It takes a few minutes to create the account. 포털 페이지에 배포가 완료됨 이 표시되기를 기다립니다.Wait for the portal page to display Your deployment is complete.

    Azure Portal 알림 창

  7. 리소스로 이동 을 선택하여 Azure Cosmos DB 계정 페이지로 이동합니다.Select Go to resource to go to the Azure Cosmos DB account page.

    Azure Cosmos DB 계정 페이지

출력 바인딩 추가Add an output binding

  1. Azure Portal에서 이전에 만든 함수 앱으로 이동하여 선택합니다.In the Azure portal, navigate to and select the function app you created previously.

  2. Functions 를 선택한 다음, HttpTrigger 함수를 선택합니다.Select Functions, and then select the HttpTrigger function.

    Azure Portal에서 Http 함수를 선택합니다.

  3. 통합+ 출력 추가 를 선택합니다.Select Integration and + Add output.

    Azure Cosmos DB 출력 바인딩을 추가합니다.

  4. 다음 표에 지정된 대로 출력 만들기 설정을 사용합니다.Use the Create Output settings as specified in the table:

    Azure Cosmos DB 출력 바인딩을 구성합니다.

    설정Setting 제안 값Suggested value DescriptionDescription
    바인딩 형식Binding Type Azure Cosmos DBAzure Cosmos DB Azure Cosmos DB에 대한 출력 바인딩을 만들도록 선택하는 바인딩 형식의 이름입니다.Name of the binding type to select to create the output binding to Azure Cosmos DB.
    문서 매개 변수 이름Document parameter name taskDocumenttaskDocument 코드에서 Cosmos DB 개체를 참조하는 이름.Name that refers to the Cosmos DB object in code.
    데이터베이스 이름Database name taskDatabasetaskDatabase 문서를 저장할 데이터베이스의 이름.Name of database to save documents.
    컬렉션 이름Collection name taskCollectiontaskCollection 데이터베이스 컬렉션 이름.Name of the database collection.
    true이면 Cosmos DB 데이터베이스 및 컬렉션을 만듭니다.If true, creates the Cosmos DB database and collection Yes 아직 컬렉션이 없으므로 지금 만듭니다.The collection doesn't already exist, so create it.
    Cosmos DB 계정 연결Cosmos DB account connection 새 설정New setting 새로 만들기 를 선택한 다음, 이전에 만든 Azure Cosmos DB 계정데이터베이스 계정 을 선택한 후, 확인 을 선택합니다.Select New, then choose Azure Cosmos DB Account and the Database account you created earlier, and then select OK. 계정 연결에 대한 애플리케이션 설정이 만들어집니다.Creates an application setting for your account connection. 이 설정은 데이터베이스에 연결하는 바인딩에서 사용됩니다.This setting is used by the binding to connection to the database.
  5. 확인 을 선택하여 바인딩을 만듭니다.Select OK to create the binding.

함수 코드 업데이트Update the function code

선택한 언어로 기존 함수 코드를 다음 코드로 바꿉니다.Replace the existing function code with the following code, in your chosen language:

기존 C# 함수를 다음 코드로 바꿉니다.Replace the existing C# function with the following code:

#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 개체의 필드에 할당합니다.This code sample reads the HTTP Request query strings and assigns them to fields in the taskDocument object. taskDocument 바인딩은 이 바인딩 매개 변수의 개체 데이터 중에서 바인딩된 문서 데이터베이스에 저장할 데이터를 보냅니다.The taskDocument binding sends the object data from this binding parameter to be stored in the bound document database. 함수가 처음으로 실행될 때 데이터베이스가 생성됩니다.The database is created the first time the function runs.

함수 및 데이터베이스 테스트Test the function and database

  1. 테스트/실행 을 선택합니다.Select Test/Run. 쿼리 아래에서 + 매개 변수 추가 를 선택하고 쿼리 문자열에 다음 매개 변수를 추가합니다.Under Query, select + Add parameter and add the following parameters to the query string:

    • name
    • task
    • duedate

    함수 테스트.

  2. 실행 을 선택하고 200 상태가 반환되는지 확인합니다.Select Run and verify that a 200 status is returned.

    스크린샷은 실행을 선택한 후 강조 표시된 HTTP 응답 코드 200 상태를 보여줍니다.

  3. Azure Portal에서 Azure Cosmos DB 를 검색하여 선택합니다.In the Azure portal, search for and select Azure Cosmos DB.

    Cosmos DB 서비스 검색.

  4. Azure Cosmos DB 계정을 선택한 다음, Data Explorer 를 선택합니다.Choose your Azure Cosmos DB account, then select Data Explorer.

  5. TaskCollection 노드를 확장하고, 새 문서를 선택하고, 문서에 일부 추가 메타데이터와 함께 쿼리 문자열 값이 포함되어 있는지 확인합니다.Expand the TaskCollection nodes, select the new document, and confirm that the document contains your query string values, along with some additional metadata.

    문서에서 문자열 값을 확인.

Azure Cosmos DB에 구조화되지 않은 데이터를 저장하는 HTTP 트리거에 바인딩을 성공적으로 추가했습니다.You've successfully added a binding to your HTTP trigger to store unstructured data in an Azure Cosmos DB.

리소스 정리Clean up resources

이전 단계에서 Azure 리소스를 리소스 그룹에 만들었습니다.In the preceding steps, you created Azure resources in a resource group. 이러한 리소스가 나중에 필요하지 않을 경우에는 리소스 그룹을 삭제하여 해당 리소스를 삭제할 수 있습니다.If you don't expect to need these resources in the future, you can delete them by deleting the resource group.

Azure Portal 메뉴 또는 페이지에서 리소스 그룹 을 선택합니다.From the Azure portal menu or Home page, select Resource groups. 그런 다음, 리소스 그룹 페이지에서 myResourceGroup 을 선택합니다.Then, on the Resource groups page, select myResourceGroup.

myResourceGroup 페이지에서 나열된 리소스가 삭제하려는 리소스인지 확인합니다.On the myResourceGroup page, make sure that the listed resources are the ones you want to delete.

리소스 그룹 삭제 를 선택하고, 텍스트 상자에서 myResourceGroup 을 입력하여 확인한 다음, 삭제 를 선택합니다.Select Delete resource group, type myResourceGroup in the text box to confirm, and then select Delete.

다음 단계Next steps

Cosmos DB 데이터베이스에 바인딩하는 자세한 내용은 Azure Functions Cosmos DB 바인딩을 참조하세요.For more information about binding to a Cosmos DB database, see Azure Functions Cosmos DB bindings.