Share via


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

Azure Cosmos DB는 구조화되지 않은 데이터 및 JSON 데이터를 저장하기 좋습니다. Azure Cosmos DB를 Azure Functions와 함께 사용하면 관계형 데이터베이스에 데이터를 저장하는 데 필요한 것보다 훨씬 적은 코드를 사용하여 쉽고 빠르게 데이터를 저장할 수 있습니다.

참고 항목

이때 Azure Cosmos DB 트리거, 입력 바인딩 및 출력 바인딩은 SQL API 및 Graph API 계정에서만 작동합니다.

Azure Functions에서 입력 및 출력 바인딩은 함수에서 외부 서비스 데이터로 연결하기 위한 선언적 방식을 제공합니다. 이 문서에서는 구조화되지 않은 데이터를 Azure Cosmos DB 문서에 저장하는 출력 바인딩을 추가하여 기존 함수를 업데이트하는 방법에 대해 알아봅니다.

필수 조건

이 자습서를 완료하려면 다음이 필요합니다.

이 항목에서는 Azure Portal에서 첫 번째 함수 만들기에서 만든 리소스를 시작점으로 사용합니다. 아직 만들지 않았다면 지금 이러한 단계를 수행하여 함수 앱을 만듭니다.

Azure Cosmos DB 계정 만들기

출력 바인딩을 만들기 전에 SQL API를 사용하는 Azure Cosmos DB 계정이 있어야 합니다.

  1. Azure Portal 메뉴 또는 페이지에서 리소스 만들기를 선택합니다.

  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
    • 테이블
    • Apache Gremlin, 그래프 데이터용

    API for NoSQL에 대한 자세한 내용은 Azure Cosmos DB 시작을 참조하세요.

  4. Azure Cosmos DB 계정 만들기 페이지에서 새 Azure Cosmos DB 계정에 대한 기본 설정을 입력합니다.

    설정 Description
    구독 구독 이름 이 Azure Cosmos DB 계정에 사용할 Azure 구독을 선택합니다.
    리소스 그룹 리소스 그룹 이름 리소스 그룹을 선택하거나 새로 만들기를 선택한 후, 새 리소스 그룹에 고유한 이름을 입력합니다.
    어카운트 이름 고유 이름 Azure Cosmos DB 계정을 식별하는 이름을 입력합니다. URI를 만들기 위해 제공하는 이름에 documents.azure.com이 추가되므로 고유한 이름을 사용합니다. 이름에는 소문자, 숫자, 하이픈(-) 문자만 사용할 수 있습니다. 3~44자여야 합니다.
    위치 사용자와 가장 가까운 지역 Azure Cosmos DB 계정을 호스트할 지리적 위치를 선택합니다. 데이터에 가장 빨리 액세스할 수 있도록 사용자와 가장 가까운 위치를 사용합니다.
    용량 모드 프로비저닝된 처리량 또는 서버리스 프로비저닝된 처리량을 선택하여 프로비저닝된 처리량 모드에서 계정을 만듭니다. 서버리스를 선택하여 서버리스 모드에서 계정을 만듭니다.
    Azure Cosmos DB 체험 계층 할인 적용 적용 또는 적용 안 함 Azure Cosmos DB 무료 계층을 사용하는 경우 처음에는 1000RU/초 및 25GB의 스토리지가 계정에 무료로 제공됩니다. 체험 계층에 대해 자세히 알아보세요.
    총 계정 처리량 제한 선택 여부 이 계정에서 프로비전할 수 있는 총 처리량을 제한합니다. 이 한도는 프로비전된 처리량과 관련된 예기치 않은 요금을 방지합니다. 계정을 만든 후 이 한도를 업데이트하거나 제거할 수 있습니다.

    Azure 구독당 최대 1개의 무료 계층 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.

출력 바인딩 추가

  1. Azure Portal에서 이전에 만든 함수 앱으로 이동하여 선택합니다.

  2. Functions를 선택한 다음, HttpTrigger 함수를 선택합니다.

    Select your Http function in the Azure portal.

  3. 통합+ 출력 추가를 선택합니다.

    Add an Azure Cosmos DB output binding.

  4. 다음 표에 지정된 대로 출력 만들기 설정을 사용합니다.

    Configure Azure Cosmos DB output binding.

    설정 제안 값 설명
    바인딩 형식 Azure Cosmos DB Azure Cosmos DB에 대한 출력 바인딩을 만들도록 선택하는 바인딩 형식의 이름입니다.
    문서 매개 변수 이름 taskDocument 코드에서 Azure Cosmos DB 개체를 나타내는 이름입니다.
    데이터베이스 이름 taskDatabase 문서를 저장할 데이터베이스의 이름.
    컬렉션 이름 taskCollection 데이터베이스 컬렉션 이름.
    true인 경우 Azure Cosmos DB 데이터베이스 및 컬렉션을 만듭니다. 아직 컬렉션이 없으므로 지금 만듭니다.
    Azure Cosmos DB 계정 연결 새 설정 새로 만들기를 선택한 다음, 이전에 만든 Azure Cosmos DB 계정데이터베이스 계정을 선택한 후, 확인을 선택합니다. 계정 연결에 대한 애플리케이션 설정이 만들어집니다. 이 설정은 데이터베이스에 연결하는 바인딩에서 사용됩니다.
  5. 확인을 선택하여 바인딩을 만듭니다.

함수 코드 업데이트

선택한 언어로 기존 함수 코드를 다음 코드로 바꿉니다.

기존 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 바인딩은 이 바인딩 매개 변수의 개체 데이터 중에서 바인딩된 문서 데이터베이스에 저장할 데이터를 보냅니다. 함수가 처음으로 실행될 때 데이터베이스가 생성됩니다.

함수 및 데이터베이스 테스트

  1. 테스트/실행을 선택합니다. 쿼리 아래에서 + 매개 변수 추가를 선택하고 쿼리 문자열에 다음 매개 변수를 추가합니다.

    • name
    • task
    • duedate

    Test the function.

  2. 실행을 선택하고 200 상태가 반환되는지 확인합니다.

    Screenshot shows the HTTP response code 200 status highlighted after selecting Run.

  3. Azure Portal에서 Azure Cosmos DB를 검색하여 선택합니다.

    Search for the Azure Cosmos DB service.

  4. Azure Cosmos DB 계정을 선택한 다음, Data Explorer를 선택합니다.

  5. TaskCollection 노드를 확장하고, 새 문서를 선택하고, 문서에 일부 추가 메타데이터와 함께 쿼리 문자열 값이 포함되어 있는지 확인합니다.

    Verify the string values in your document.

Azure Cosmos DB 인스턴스에 구조화되지 않은 데이터를 저장하는 HTTP 트리거에 바인딩을 성공적으로 추가했습니다.

리소스 정리

이전 단계에서는 리소스 그룹에서 Azure 리소스를 만들었습니다. 나중에 이러한 리소스가 필요하지 않은 경우에 리소스 그룹을 삭제하여 삭제할 수 있습니다.

Azure Portal 메뉴 또는 페이지에서 리소스 그룹을 선택합니다. 그런 다음, 리소스 그룹 페이지에서 myResourceGroup을 선택합니다.

myResourceGroup 페이지에서 나열된 리소스가 삭제하려는 리소스인지 확인합니다.

리소스 그룹 삭제를 선택하고, 텍스트 상자에서 myResourceGroup을 입력하여 확인한 다음, 삭제를 선택합니다.

다음 단계

Azure Cosmos DB 인스턴스 바인딩에 대한 자세한 내용은 Azure Functions Azure Cosmos DB 바인딩을 참조하세요.