랩 09: Event Grid 이벤트 게시 및 구독

Microsoft Azure 사용자 인터페이스

Microsoft 클라우드 도구의 동적 특성을 고려할 때 이 교육 콘텐츠를 개발한 후 발생하는 Azure UI 변경이 발생할 수 있습니다. 따라서 랩 지침 및 랩 단계가 올바르게 정렬되지 않을 수 있습니다.

Microsoft는 커뮤니티에서 변경해야 할 사항이 있음을 알려줄 때 이 학습 과정을 업데이트합니다. 그러나 클라우드 업데이트가 자주 이루어지기 때문에 이 학습 콘텐츠가 업데이트되기 전에 UI가 변경될 수 있습니다. 이 경우 변경 사항에 적응하고 필요에 따라 랩에서 작업합니다.

Instructions

시작하기 전에

랩 환경에 로그인

다음 자격 증명을 사용하여 Windows 11 VM(가상 머신)에 로그인합니다.

  • 사용자 이름: Admin
  • 암호: Pa55w.rd

참고: 강사가 가상 랩 환경 연결에 대한 지침을 제공합니다.

설치된 애플리케이션 검토

Windows 11 데스크톱에서 작업 표시줄을 찾습니다. 작업 표시줄에는 다음을 포함하여 이 랩에서 사용할 애플리케이션에 대한 아이콘이 포함되어 있습니다.

  • Microsoft Edge
  • Microsoft Visual Studio Code

랩 시나리오

이 랩에서는 Event Grid를 구독하는 데 사용할 컨테이너에서 호스트되는 개념 증명 웹앱으로 시작합니다. 이 앱을 사용하면 이벤트를 제출하고 이벤트가 성공했다는 확인 메시지를 받을 수 있습니다.

아키텍처 다이어그램

Event Grid 이벤트를 게시하고 구독하는 사용자를 보여 주는 아키텍처 다이어그램입니다.

연습 1: Azure 리소스 만들기

작업 1: Azure Portal 열기

  1. 작업 표시줄에서 Microsoft Edge 아이콘을 선택합니다.

  2. 열린 브라우저 창에서 Azure Portal(https://portal.azure.com)로 이동한 다음, 이 랩에 사용할 계정으로 로그인합니다.

    참고: Azure Portal에 처음 로그인하는 경우 포털 둘러보기가 제공됩니다. 둘러보기를 건너뛰고 포털 사용을 시작하려면 시작하기를 선택합니다.

작업 2: Azure Cloud Shell 열기

  1. Azure Portal에서 Cloud Shell 아이콘 Cloud Shell 아이콘를 선택하여 Cloud Shell을 엽니다. Cloud Shell이 기본적으로 PowerShell 세션을 사용하는 경우 Cloud Shell 메뉴에서 Bash로 전환을 선택한 다음 확인을 선택합니다.

    참고: Cloud Shell 아이콘은 더 큼 기호(>)와 밑줄 문자(_)로 표시됩니다.

    Cloud Shell을 처음 시작하는 경우 리소스를 만들라는 일련의 메시지가 표시됩니다. 다음 표에 제시된 작업을 수행합니다.

    프롬프트 작업
    Azure Cloud Shell을 시작합니다 Bash를 선택합니다.
    시작 스토리지 계정 탑재를 선택한 다음 드롭다운에서 스토리지 계정 구독을 선택하고 마지막으로 적용을 선택합니다.
    스토리지 계정 탑재 스토리지 계정을 만듭니다를 선택한 후 다음을 선택합니다.
  2. Azure Portal의 Cloud Shell 명령 프롬프트에서 다음 명령을 실행하여 Azure CLI(Azure 명령줄 인터페이스) 도구의 버전을 가져옵니다.

     az --version
    

작업 3: Microsoft.EventGrid 공급자 등록 검토

  1. Cloud Shell 창에서 다음 명령을 실행하여 “Microsoft.EventGrid” 리소스 공급자가 등록되었는지 확인합니다.

     az provider show --namespace Microsoft.EventGrid --query "registrationState"
    
  2. Microsoft.EventGrid 공급자가 이미 등록되어 있습니다.

  3. Cloud Shell 창을 닫습니다.

작업 4: 사용자 지정 Event Grid 항목 만들기

  1. Azure Portal 탐색 창에서 리소스 만들기를 선택합니다.

  2. 리소스 만들기 창의 검색 서비스 및 마켓플레이스 텍스트 상자에 Event Grid 토픽을 입력한 다음, Enter 키를 선택합니다.

  3. Marketplace 검색 결과 창에서 Event Grid 토픽 결과를 선택한 다음, 만들기를 선택합니다.

  4. 웹앱 만들기 창의 기본 사항 탭에서 다음 작업을 수행하고 다음:

    설정 작업
    구독 드롭다운 목록 기본값을 유지합니다.
    리소스 그룹 드롭다운 목록 새로 만들기를 선택하고 PubSubEvents를 입력한 다음 확인을 선택합니다.
    이름 텍스트 상자 hrtopic [사용자 이름] 을 입력합니다.
    지역 드롭다운 목록 미국 동부를 선택합니다.

    다음 스크린샷은 Basics 탭에 구성된 설정을 보여줍니다.

    토픽 만들기 창에 구성된 설정이 표시된 스크린샷

  5. 고급 탭의 이벤트 스키마 드롭다운 목록에서 Event Grid 스키마 항목이 선택되었는지 확인한 다음 **검토 + **을 만듭니다.

  6. 검토 + 만들기 탭에서 이전 단계에서 선택한 옵션을 검토합니다.

  7. 지정된 구성을 사용하여 Event Grid 토픽을 만들려면 만들기를 선택합니다.

    참고: 랩을 진행하기 전에 Azure가 토픽을 만들 때까지 기다립니다. 토픽이 생성되면 알림을 받게 됩니다.

작업 5: Azure Event Grid 뷰어를 웹앱에 배포하기

  1. Azure Portal 탐색 창에서 리소스 만들기를 선택합니다.

  2. 리소스 만들기 창의 검색 서비스 및 마켓플레이스 텍스트 상자에 웹앱을 입력한 다음, Enter 키를 선택합니다.

  3. 마켓플레이스 검색 결과 창에서 웹앱 결과를 선택한 다음, 만들기를 선택합니다.

  4. 웹앱 만들기 블레이드의 기본 사항 탭에서 다음 작업을 수행한 후 Docker 탭을 선택합니다.

    설정 작업
    구독 드롭다운 목록 기본값을 유지합니다.
    리소스 그룹 드롭다운 목록 목록에서 PubSubEvents를 선택합니다.
    이름 텍스트 상자 eventviewer [사용자 이름] 을 입력합니다.
    게시 섹션 Docker 컨테이너를 선택합니다.
    운영 체제 섹션 Linux를 선택합니다.
    지역 드롭다운 목록 미국 동부를 선택합니다.
    Linux 플랜(미국 동부) 섹션 새로 만들기를 선택하고, 이름 텍스트 상자에 EventPlan을 입력한 다음, 확인을 선택합니다.
    가격 책정 플랜 섹션 기본값을 유지합니다.

    다음 스크린샷은 웹앱 만들기 창에 구성된 설정을 보여 줍니다.

    웹앱 만들기 창에 구성된 설정이 표시된 스크린샷

  5. Docker 탭에서 다음 작업을 수행하고 검토 + 만들기를 선택합니다.

    설정 작업
    옵션 드롭다운 목록 단일 컨테이너를 선택합니다.
    이미지 원본 드롭다운 목록 Docker 허브를 선택합니다.
    액세스 유형 드롭다운 목록 Public을 선택합니다.
    이미지 및 태그 텍스트 상자 microsoftlearning/azure-event-grid-viewer:latest를 입력합니다.

    다음 스크린샷은 Docker 탭에 구성된 설정을 보여 줍니다.

    웹앱 만들기 - Docker 탭에 구성된 설정이 표시된 스크린샷

  6. 검토 + 만들기 탭에서 이전 단계에서 선택한 옵션을 검토합니다.

  7. 지정된 구성을 사용하여 웹앱을 만들려면 만들기를 선택합니다.

    참고: 랩을 계속하기 전에 Azure에서 웹앱을 만들 때까지 기다립니다. 앱이 만들어지면 알림을 받게 됩니다.

검토

이 연습에서는 랩의 나머지 부분에서 사용할 Event Grid 토픽과 웹앱을 만들었습니다.

연습 2: Event Grid 구독 만들기

작업 1: Event Grid 뷰어 웹 애플리케이션 액세스

  1. Azure Portal의 탐색 창에서 리소스 그룹을 선택합니다.

  2. 리소스 그룹 창에서 PubSubEvents 리소스 그룹을 선택합니다.

  3. PubSubEvents 블레이드에서 eventviewer [yourname] 웹앱을 선택하면 개요 섹션이 표시됩니다.

  4. 개요 섹션의 Essentials 창 아래에 기본 도메인의 값을 기록합니다. 이 값은 랩에서 나중에 사용합니다.

  5. 개요 섹션에 있는 동안 찾아보기 단추를 클릭합니다.

  6. 현재 실행 중인 Azure Event Grid 뷰어 웹 애플리케이션을 관찰합니다. 이 웹 애플리케이션은 랩의 나머지 부분에서 실행되도록 둡니다.

    참고: 이 웹 애플리케이션은 이벤트가 엔드포인트로 전송될 때 실시간으로 업데이트됩니다. 이 애플리케이션을 사용하여 랩 전체에서 이벤트를 모니터링합니다.

  7. Azure Portal을 표시하고 있고 현재 열려 있는 브라우저 창으로 돌아갑니다.

작업 2: 새 구독 만들기

  1. Azure Portal의 탐색 창에서 리소스 그룹을 선택합니다.

  2. 리소스 그룹 창에서 이 랩의 앞부분에서 만든 PubSubEvents 리소스 그룹을 선택합니다.

  3. PubSubEvents 창에서 이 랩의 앞부분에서 만든 hrtopic [사용자 이름] Event Grid 토픽을 선택합니다.

  4. Event Grid 항목 블레이드에서 + 이벤트 구독을 선택합니다.

  5. 이벤트 구독 만들기 창에서 다음 작업을 수행한 후, 만들기를 선택합니다.

    설정 작업
    이름 텍스트 상자 basicsub를 입력합니다.
    이벤트 스키마 드롭다운 목록 Event Grid 스키마를 선택합니다.
    엔드포인트 유형 드롭다운 목록 웹 후크를 선택합니다.
    엔드포인트 엔드포인트 구성을 선택합니다. 구독자 엔드포인트 텍스트 상자에 이전에 기록한 웹앱 URL 값을 입력하고, 이것이 https:// 접두사가 사용되는지 확인하고 /api/updates 접미사를 추가한 후에 선택 확인을 선택합니다. 예를 들어, 웹앱 URL 값이 http://eventviewerstudent.azurewebsites.net/이면 구독자 엔드포인트https://eventviewerstudent.azurewebsites.net/api/updates가 됩니다.

    다음 스크린샷은 이벤트 구독 만들기 창에 구성된 설정을 보여 줍니다.

    이벤트 구독 만들기 창에 구성된 설정을 보여 주는 스크린샷

    참고: 랩을 계속하기 전에 Azure에서 구독을 만들 때까지 기다립니다. 구독이 생성되면 알림을 받게 됩니다.

작업 3: 구독 유효성 검사 이벤트 관찰

  1. Azure Event Grid 뷰어 웹 애플리케이션을 표시하는 브라우저 창으로 돌아갑니다.

  2. 구독 만들기 작업의 일부로 만든 Microsoft.EventGrid.SubscriptionValidationEvent 이벤트를 검토합니다.

  3. 이벤트를 선택하여 JSON 콘텐츠를 검토합니다.

  4. Azure Portal을 통해 현재 열려 있는 브라우저 창으로 돌아갑니다.

작업 4: 구독 자격 증명 기록

  1. Azure Portal의 탐색 창에서 리소스 그룹을 선택합니다.

  2. 리소스 그룹 창에서 이 랩의 앞부분에서 만든 PubSubEvents 리소스 그룹을 선택합니다.

  3. PubSubEvents 창에서 이 랩의 앞부분에서 만든 hrtopic [사용자 이름] Event Grid 토픽을 선택합니다.

  4. Event Grid 항목 블레이드에서 항목 엔드포인트 필드의 값을 기록합니다. 이 값은 랩에서 나중에 사용합니다.

  5. 설정 범주에서 액세스 키 링크를 선택합니다.

  6. 액세스 키 섹션에서 키 1 텍스트 상자의 값을 기록합니다. 이 값은 랩에서 나중에 사용합니다.

검토

이 연습에서는 새 구독을 만들고 등록의 유효성을 검사한 다음 토픽에 새 이벤트를 게시하는 데 필요한 자격 증명을 기록했습니다.

연습 3: .NET에서 Event Grid 이벤트 게시

작업 1: .NET 프로젝트 만들기

  1. 시작 화면에서 Visual Studio Code 타일을 선택합니다.

  2. 파일 메뉴에서 폴더 열기를 선택합니다.

  3. 열리는 파일 탐색기 창에서 Allfiles (F):\Allfiles\Labs\09\Starter\EventPublisher로 이동한 후 폴더 선택을 선택합니다.

  4. Visual Studio Code 창의 위쪽 메뉴 모음에서 터미널 메뉴로 이동하여 새 터미널을 선택합니다.

  5. 다음 명령을 실행하여 현재 폴더에 EventPublisher라는 새 .NET 프로젝트를 만듭니다.

     dotnet new console --framework net8.0 --name EventPublisher --output . 
    

    참고: dotnet new 명령은 새 콘솔 프로젝트를 프로젝트와 이름이 같은 폴더에 만듭니다.

  6. 다음 명령을 실행하여 NuGet에서 Azure.Messaging.EventGrid 버전 4.11.0을 가져옵니다.

     dotnet add package Azure.Messaging.EventGrid --version 4.11.0
    

    참고: dotnet add package 명령은 NuGet에서 Microsoft.Azure.EventGrid 패키지를 추가합니다. 더 자세한 내용은 Azure.Messaging.EventGrid를 참조하세요.

  7. 다음 명령을 실행하여 .NET 웹 애플리케이션을 빌드합니다.

     dotnet build
    
  8. 터미널 종료 또는 휴지통 아이콘을 선택하여 현재 열려 있는 터미널 및 관련된 모든 작업을 종료합니다.

작업 2: Program 클래스를 수정하여 Event Grid에 연결

  1. Visual Studio Code 창의 탐색기 창에서 Program.cs 파일을 엽니다.

  2.  Program.cs 파일의 코드 편집기 탭에서 기존 파일의 모든 코드를 삭제합니다.

  3. 다음 코드를 추가합니다.

     using Azure;
     using Azure.Messaging.EventGrid;
     using System;
     using System.Threading.Tasks;    
     public class Program
     {
         private const string topicEndpoint = "<topic-endpoint>";
         /* Update the topicEndpoint string constant by setting its value to the Topic
            Endpoint of the Event Grid topic that you recorded previously in this lab. */
         private const string topicKey = "<topic-key>";
         /* Update the topicKey string constant by setting its value to the Key of the Event Grid topic that you recorded previously in this lab. */     
         public static async Task Main(string[] args)
         {
             //Add Main code here
         }
     }
    
  4. 7행에서 <topic-endpoint> 자리 표시자를 이 랩의 앞부분에서 기록한 Event Grid 항목 엔드포인트의 값으로 바꿉니다.

  5. 10행에서 <topic-key> 자리 표시자를 이 랩의 앞부분에서 기록한 Event Grid 항목 액세스 키 값으로 바꿉니다.

작업 3: 새 이벤트 게시

  1. Program.cs 파일의 Main 메서드를 다음 코드로 바꿉니다.

     public static async Task Main(string[] args)
     {   
         /* To create a new variable named "endpoint" of type "Uri", 
            using the "topicEndpoint" string constant as a constructor parameter */
         Uri endpoint = new Uri(topicEndpoint);
    
         /* To create a new variable named "credential" of type "AzureKeyCredential",
            use the "topicKey" string constant as a constructor parameter. */
         AzureKeyCredential credential = new AzureKeyCredential(topicKey);
    
         /* To create a new variable named "client" of type "EventGridPublisherClient", 
            using the "endpoint" and "credential" variables as constructor parameters */
         EventGridPublisherClient client = new EventGridPublisherClient(endpoint, credential);
    
         /* To create a new variable named "firstEvent" of type "EventGridEvent",
            and populate that variable with sample data */        
         EventGridEvent firstEvent = new EventGridEvent(
             subject: $"New Employee: Alba Sutton",
             eventType: "Employees.Registration.New",
             dataVersion: "1.0",
             data: new
             {
                 FullName = "Alba Sutton",
                 Address = "4567 Pine Avenue, Edison, WA 97202"
             }
         );
    
         /* To create a new variable named "secondEvent" of type "EventGridEvent",
            and populate that variable with sample data */
         EventGridEvent secondEvent = new EventGridEvent(
             subject: $"New Employee: Alexandre Doyon",
             eventType: "Employees.Registration.New",
             dataVersion: "1.0",
             data: new
             {
                 FullName = "Alexandre Doyon",
                 Address = "456 College Street, Bow, WA 98107"
             }
         );
    
         /* To asynchronously invoke the "EventGridPublisherClient.SendEventAsync"
            method using the "firstEvent" variable as a parameter */
         await client.SendEventAsync(firstEvent);
         Console.WriteLine("First event published");
    
         /* To asynchronously invoke the "EventGridPublisherClient.SendEventAsync"
            method using the "secondEvent" variable as a parameter */
         await client.SendEventAsync(secondEvent);
         Console.WriteLine("Second event published");
     }
    

    참고: AzureKeyCredential 에 대해 자세히 알아보기

    참고: Event Grid에 대해 자세히 알아보려면 다음 링크를 클릭합니다.

  2.  Program.cs 파일을 저장합니다.

  3. Visual Studio Code 창의 메뉴 모음에서 터미널을 선택한 다음, 새 터미널을 선택합니다.

  4. 다음 명령을 실행하여 .NET 웹 애플리케이션을 실행합니다.

     dotnet run
    

    참고: 빌드 오류가 있는 경우, Allfiles (F):\Allfiles\Labs\09\Solution\EventPublisher 폴더에 있는 Program.cs 파일을 검토하세요.

  5. 현재 실행 중인 콘솔 애플리케이션의 성공 메시지 출력을 관찰합니다.

  6. 터미널 종료 또는 휴지통 아이콘을 선택하여 현재 열려 있는 터미널 및 관련된 모든 작업을 종료합니다.

작업 4: 게시된 이벤트 살펴보기

  1. Azure Event Grid 뷰어 웹 애플리케이션이 있는 브라우저 창으로 돌아갑니다.

  2. 콘솔 애플리케이션으로 생성한 Employees.Registration.New 이벤트를 검토합니다.

  3. 아무 이벤트나 선택하고 JSON 콘텐츠를 검토합니다.

  4. Azure Portal로 돌아갑니다.

검토

이 연습에서는 .NET 콘솔 애플리케이션을 사용하여 Event Grid 토픽에 새 이벤트를 게시했습니다.