Azure Cosmos DB에 의해 트리거되는 함수 만들기

데이터가 Azure Cosmos DB에 추가되거나 변경될 때 트리거되는 함수를 Azure Portal에서 만드는 방법에 대해 알아봅니다. Azure Cosmos DB에 대한 자세한 내용은 Azure Cosmos DB: Azure Functions를 통한, 서버를 사용하지 않는 데이터베이스 컴퓨팅을 참조하세요.

참고 항목

포털 내 편집은 JavaScript, PowerShell 및 C# 스크립트 함수에 대해서만 지원됩니다. Python 내부 편집은 사용량 계획에서 실행하는 경우에만 지원됩니다. 가능하면 항상 로컬에서 함수를 개발해야 합니다.

Azure Portal의 함수 코드 편집 관련 제한 사항에 대해 자세히 알아보려면 Azure Portal의 개발 제한 사항을 참조하세요.

필수 조건

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

  • Azure 구독이 아직 없는 경우 시작하기 전에 체험 계정을 만듭니다.

참고 항목

Azure Cosmos DB 바인딩은 Azure Cosmos DB for NoSQL에서만 사용할 수 있습니다. Azure Cosmos DB for Table에 대한 지원은 확장 5.x부터 Table 스토리지 바인딩을 사용하여 제공됩니다. 다른 모든 Azure Cosmos DB API의 경우 Azure Cosmos DB for MongoDB, Azure Cosmos DB for CassandraAzure Cosmos DB for Apache Gremlin을 비롯해 API에 정적 클라이언트를 사용하여 함수에서 데이터베이스에 액세스해야 합니다.

Azure에 로그인

Azure 계정을 사용하여 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.

Azure에서 함수 앱 만들기

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

  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 임대를 저장하는 컬렉션의 이름입니다.
    임대 컬렉션이 없는 경우 만들기 임대 컬렉션이 있는지 확인하고 자동으로 만듭니다.

    Azure는 제공된 값을 기준으로 Azure Cosmos DB 트리거 함수를 만듭니다.

  4. 템플릿 기반 함수 코드를 표시하려면 코드 + 테스트를 선택합니다.

    Azure Cosmos DB function template in C#

    이 함수 템플릿은 문서 수와 첫 번째 문서 ID를 로그에 기록합니다.

다음으로, Azure Cosmos DB 계정에 연결하고 Tasks 데이터베이스에 Items 컨테이너를 만듭니다.

항목 컨테이너 만들기

  1. Azure Portal의 두 번째 인스턴스를 브라우저의 새 탭에서 엽니다.

  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

    설정 제안 값 설명
    데이터베이스 ID 작업 새 데이터베이스에 대한 이름입니다. 함수 바인딩에 정의된 이름과 일치해야 합니다.
    컨테이너 ID 아이템 새 컨테이너의 이름입니다. 함수 바인딩에 정의된 이름과 일치해야 합니다.
    파티션 키 /category 각 파티션에 데이터를 균등하게 배포하는 파티션 키입니다. 올바른 파티션 키를 선택하는 것은 성능이 뛰어난 컨테이너를 만드는 데 중요합니다.
    처리량 400RU 기본 값을 사용합니다. 대기 시간을 줄여야 하는 경우, 나중에 처리량을 늘리면 됩니다.
  6. 확인을 클릭하여 항목 컨테이너를 만듭니다. 컨테이너가 생성될 때까지 잠시 시간이 걸릴 수 있습니다.

함수 바인딩에 지정된 컨테이너가 있으면 이 새 컨테이너에 항목을 추가하여 함수를 테스트할 수 있습니다.

함수 테스트

  1. Data Explorer에서 새 항목 컨테이너를 확장하고 항목을 선택한 다음, 새 항목을 선택합니다.

    Create an item in Items container

  2. 새 문서의 콘텐츠를 다음 콘텐츠로 바꾼 다음, 저장을 선택합니다.

    {
        "id": "task1",
        "category": "general",
        "description": "some task"
    }
    
  3. 포털에서 함수를 포함하고 있는 첫 번째 브라우저 탭으로 전환합니다. 함수 로그를 확장하고 새 문서가 함수를 트리거했는지 확인합니다. task1 문서 ID 값이 로그에 기록되었는지 살펴봅니다.

    View message in the logs.

  4. (선택 사항) 다시 문서로 돌아가서 변경 작업을 수행하고 업데이트를 클릭합니다. 그런 다음, 함수 로그로 돌아가서 업데이트도 함수를 트리거했는지 확인합니다.

리소스 정리

이 컬렉션의 다른 빠른 시작은 이 빠른 시작을 기반으로 구성됩니다. 이후의 빠른 시작, 자습서 또는 기타 이 빠른 시작에서 만든 서비스를 사용하여 작업하려는 경우 이 빠른 시작에서 만든 리소스를 정리하지 않습니다.

Azure에서 리소스란 함수 앱, 함수, 스토리지 계정 등을 의미합니다. 리소스는 리소스 그룹으로 그룹화되며 그룹을 삭제하면 그룹의 모든 항목을 삭제할 수 있습니다.

이러한 빠른 시작을 완료하기 위해 리소스를 만들었습니다. 이러한 리소스에 대한 요금이 계정 상태서비스 가격 책정에 따라 청구될 수 있습니다. 리소스가 더 이상 필요하지 않게 되면 다음과 같이 삭제합니다.

  1. Azure Portal에서 리소스 그룹 페이지로 이동합니다.

    함수 앱 페이지에서 해당 페이지로 이동하려면 개요 탭을 선택한 다음, 리소스 그룹 아래의 링크를 선택합니다.

    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 바인딩을 참조하세요.

첫 번째 함수를 만들었으므로, Storage 큐에 메시지를 작성하는 함수에 출력 바인딩을 추가해 보겠습니다.