자습서: Event Grid 및 Logic Apps를 사용하여 Azure IoT Hub 이벤트에 대한 이메일 알림 보내기

Azure Event Grid를 사용하면 다운스트림 비즈니스 애플리케이션에서 작업을 트리거하여 IoT Hub에서 이벤트에 대응할 수 있습니다.

이 문서에서는 IoT Hub 및 Event Grid를 사용하는 샘플 구성을 안내합니다. 마지막으로 디바이스가 IoT 허브에 연결되거나 연결이 끊길 때마다 Azure 논리 앱에서 알림 이메일을 보내도록 설정합니다. Event Grid를 사용하여 중요한 디바이스 연결 해제에 대한 알림을 적시에 받을 수 있습니다. 메트릭 및 진단이 로그/경고에 표시되는 데 몇 분(예: 20분 이상)이 걸릴 수 있습니다. 중요한 인프라에서 긴 처리 시간이 허용되지 않을 수 있습니다.

Azure를 구독하고 있지 않다면 시작하기 전에 Azure 체험 계정을 만듭니다.

필수 조건

  • Office 365 Outlook 또는 Outlook.com과 같이 Azure Logic Apps에서 지원하는 이메일 공급자의 이메일 계정입니다. 이 이메일 계정은 이벤트 알림을 보내는 데 사용됩니다.

IoT Hub 만들기

포털에서 Azure Cloud Shell 터미널을 사용하여 새 IoT 허브를 빠르게 만들 수 있습니다.

  1. Azure Portal에 로그인합니다.

  2. 페이지 오른쪽 위에 있는 Cloud Shell 단추를 선택합니다.

    Screenshot of how to open the Azure Cloud Shell from the Azure portal.

  3. 다음 명령을 실행하여 새 리소스 그룹을 만듭니다.

    az group create --name {your resource group name} --location westus
    
  4. 다음 명령을 실행하여 IoT 허브를 만듭니다.

    az iot hub create --name {your iot hub name} --resource-group {your resource group name} --sku S1 
    
  5. Cloud Shell 터미널을 최소화합니다. 자습서의 뒷부분에서 셸로 돌아갑니다.

논리 앱 만들기

그런 다음, 논리 앱을 만들고 IoT 허브에서 들어오는 요청을 처리하는 HTTP Event Grid 트리거를 추가합니다.

논리 앱 리소스 만들기

  1. Azure Portal에서 리소스 만들기를 선택한 다음, 검색 상자에서 "논리 앱"을 입력하고, Enter 키를 선택합니다. 결과에서 논리 앱을 선택합니다.

    Screenshot of how to select the logic app from a list of resources.

  2. 다음 화면에서 만들기를 선택합니다.

  3. 구독에서 논리 앱에 고유한 이름을 지정한 다음 IoT Hub와 동일한 구독, 리소스 그룹 및 위치를 선택합니다. 사용량 요금제 형식을 선택합니다.

    Screenshot of how to configure your logic app.

  4. 검토 + 만들기를 선택합니다.

  5. 설정을 확인한 다음, 만들기를 선택합니다.

  6. 리소스가 생성되면 리소스로 이동을 선택합니다.

  7. Logic Apps 디자이너에서 페이지 아래쪽으로 이동하여 템플릿을 확인합니다. 논리 앱을 처음부터 빌드할 수 있도록 비어 있는 논리 앱을 선택합니다.

    Screenshot of the Logic App Designer templates.

트리거 선택

트리거는 논리 앱을 시작하는 특정 이벤트입니다. 이 자습서에서는 워크플로를 시작하는 트리거를 HTTP를 통해 요청을 받습니다.

  1. 커넥터 및 트리거 검색 표시줄에서 HTTP를 입력합니다.

  2. 결과를 스크롤하고 요청 - HTTP 요청을 수신한 경우를 트리거로 선택합니다.

    Select HTTP request trigger

  3. 샘플 페이로드를 사용하여 스키마 생성을 선택합니다.

    Use sample payload

  4. 아래의 json을 복사하고 자리 표시자 값 <>를 고유의 값으로 바꿉니다.

  5. 디바이스 연결 이벤트 스키마 JSON을 텍스트 상자에 붙여넣은 다음, 완료를 선택합니다.

      [{  
       "id": "f6bbf8f4-d365-520d-a878-17bf7238abd8",
       "topic": "/SUBSCRIPTIONS/<azure subscription ID>/RESOURCEGROUPS/<resource group name>/PROVIDERS/MICROSOFT.DEVICES/IOTHUBS/<hub name>",
       "subject": "devices/LogicAppTestDevice",
       "eventType": "Microsoft.Devices.DeviceConnected",
       "eventTime": "2018-06-02T19:17:44.4383997Z",
       "data": {
           "deviceConnectionStateEventInfo": {
             "sequenceNumber":
               "000000000000000001D4132452F67CE200000002000000000000000000000001"
           },
         "hubName": "<hub name>",
         "deviceId": "LogicAppTestDevice",
         "moduleId" : "DeviceModuleID"
       }, 
       "dataVersion": "1",
       "metadataVersion": "1"
     }]
    

    Important

    JSON 코드 조각을 요청 본문 JSON 스키마 상자에 직접 붙여넣지 않고 샘플 페이로드를 사용하여 스키마 생성 링크에서 제공하는 상자에 붙여넣어야 합니다. 샘플 페이로드 링크는 JSON 코드 조각을 기반으로 JSON 콘텐츠를 생성하는 방법을 제공합니다. 요청 본문에서 끝나는 최종 JSON은 JSON 코드 조각과 다릅니다.

    이 이벤트는 디바이스가 IoT 허브에 연결될 때 게시됩니다.

참고 항목

요청에 애플리케이션/json으로 설정된 Content-Type 헤더를 포함해야 한다는 팝업 알림이 표시될 수 있습니다. 이 제안을 안전하게 무시하고 다음 섹션으로 이동할 수 있습니다.

작업 만들기

트리거가 논리 앱 워크플로를 시작한 후에 발생하는 모든 단계가 작업할 대상입니다. 이 자습서의 경우 작업은 메일 공급자의 이메일 알림을 보내는 것입니다.

  1. 새 단계를 선택합니다. 작업 선택을 묻는 창이 나타납니다.

  2. Outlook을 검색합니다.

  3. 전자 메일 공급자에 따라 일치하는 커넥터를 찾아 선택합니다. 이 자습서에서는 Outlook.com을 사용합니다. 다른 이메일 공급자를 위한 단계들도 비슷합니다. 또는 Office 365 Outlook을 사용하여 로그인 단계를 건너뛸 수 있습니다.

    Select email provider connector

  4. 이메일 보내기(V2) 작업을 선택합니다.

  5. 로그인을 선택하고 이메일 계정에 로그인합니다. 를 선택하여 앱이 사용자의 정보에 액세스할 수 있도록 합니다.

  6. 이메일 템플릿을 빌드합니다.

    • 받는 사람: 알림 메일을 받을 메일 주소를 입력합니다. 이 자습서에서는 테스트를 위해 액세스할 수 있는 메일 계정을 사용합니다.

    • 제목: 제목 텍스트를 입력합니다. 제목 텍스트 상자를 클릭한 후 포함할 동적 콘텐츠를 선택할 수 있습니다. 예를 들어 이 자습서에서는 IoT Hub alert: {eventType}을 사용합니다. 동적 콘텐츠가 표시되지 않으면 동적 콘텐츠 추가 하이퍼링크를 선택하여 동적 콘텐츠 보기를 켜거나 끕니다.

    eventType을 선택하면 지금까지의 이메일 양식 출력이 표시됩니다. 이메일 본문을 편집하려면 이메일 보내기(V2)를 선택합니다.

    Screenshot of the condensed body output form.

    • 본문: 메일에 대한 텍스트를 작성합니다. 선택기 도구에서 이벤트 데이터를 기반으로 동적 콘텐츠를 포함할 JSON 속성을 선택합니다. 동적 콘텐츠가 표시되지 않는 경우 본문 텍스트 상자 아래에 있는 동적 콘텐츠 추가 하이퍼링크를 선택합니다. 원하는 필드가 표시되지 않는 경우 동적 콘텐츠 화면에서 자세히를 클릭하여 이전 작업의 필드를 포함합니다.

    이메일 템플릿은 다음 예와 같습니다.

    Screenshot of how to create an event email in the template.

  7. Logic Apps 디자이너에서 저장을 선택합니다.

HTTP URL 복사

Logic Apps Designer를 나가기 전에 논리 앱이 트리거에 대해 수신 대기하는 URL을 복사합니다. 이 URL을 사용하여 Event Grid를 구성합니다.

  1. HTTP 요청을 받을 경우 트리거 구성 상자를 클릭하여 확장합니다.

  2. HTTP POST URL의 값을 그 옆에 있는 복사 단추를 선택하여 복사합니다.

    Copy the HTTP POST URL

  3. 다음 섹션에서 참조할 수 있도록 이 URL을 저장합니다.

IoT Hub 이벤트에 대한 구독 구성

이 섹션에서는 일어나는 순서대로 이벤트를 게시하도록 Azure IoT Hub 를 구성합니다.

  1. Azure Portal에서 IoT Hub로 이동합니다. Azure 대시보드에서 IoT Hub를 선택한 다음 리소스 목록에서 IoT Hub 인스턴스를 선택하여 IoT Hub를 찾을 수 있습니다.

  2. 이벤트를 선택합니다.

    Open the Event Grid details

  3. 이벤트 구독을 선택합니다.

    Create new event subscription

  4. 다음 값을 가진 이벤트 구독을 만듭니다.

    1. 이벤트 구독 세부 정보 섹션에서 다음을 수행합니다.

      1. 이벤트 구독의 이름을 입력합니다.
      2. 이벤트 그리드에 대해 이벤트 그리드 스키마를 선택합니다.
    2. 항목 세부 정보 섹션에서 다음을 수행합니다.

      1. 토픽 유형IoT Hub로 설정되어 있는지 확인합니다.
      2. IoT hub 이름이 원본 리소스 필드의 값으로 설정되어 있는지 확인합니다.
      3. 생성될 시스템 토픽의 이름을 입력합니다. 시스템 항목에 대한 자세한 내용은 시스템 항목 개요를 참조하십시오.
    3. 이벤트 유형 섹션에서 다음을 수행합니다.

      1. 이벤트 유형 필터링 드롭다운을 선택합니다.

      2. 디바이스 연결됨디바이스 연결이 해제됨 확인란만 선택된 상태로 두고 디바이스 생성됨디바이스 삭제됨 확인란을 선택 취소합니다.

        select subscription event types

    4. 엔드포인트 세부 정보 섹션에서 다음을 수행합니다.

      1. 엔드포인트 유형webhook으로 선택합니다.
      2. 엔드포인트 선택하기를 클릭하고 논리 앱에서 복사한 URL을 붙여넣은 다음 선택 사항을 확인합니다.

      select endpoint url

      완료되면 다음 예제와 같은 창이 표시됩니다.

      Screenshot of your 'Create Event Subscription' page in the Azure portal.

  5. 만들기를 실행합니다.

원격 분석을 연결하고 보내는 새 디바이스 시뮬레이션

Azure CLI를 사용하여 디바이스 연결을 신속하게 시뮬레이션하여 논리 앱을 테스트합니다.

  1. Cloud Shell 단추를 선택하여 터미널을 다시 엽니다.

  2. 다음 명령을 실행하여 시뮬레이션된 디바이스 ID를 만듭니다.

    az iot hub device-identity create --device-id simDevice --hub-name {YourIoTHubName}
    

    처리에 1분 정도 걸릴 수 있습니다. JSON 출력물이 만들어지면 콘솔에 표시됩니다.

  3. 다음 명령을 실행하여 디바이스를 IoT Hub에 연결하고 원격 분석을 보내는 것을 시뮬레이션합니다.

    az iot device simulate -d simDevice -n {YourIoTHubName}
    
  4. 시뮬레이션된 디바이스가 IoT Hub에 연결되면 "DeviceConnected" 이벤트를 알리는 이메일을 받게 됩니다.

  5. 시뮬레이션이 완료되면 "DeviceDisconnected" 이벤트를 알리는 이메일을 받게 됩니다.

    Screenshot of the email you should receive.

리소스 정리

이 자습서에서는 Azure 구독에 요금을 부과하는 리소스를 사용했습니다. 자습서를 사용해 보고 결과 테스트를 완료한 경우 유지하지 않으려는 리소스를 사용하지 않도록 설정하거나 삭제합니다.

이 자습서에서 만든 리소스를 모두 삭제하려면 리소스 그룹을 삭제합니다.

  1. 리소스 그룹을 선택한 다음, 이 자습서에서 만든 리소스 그룹을 선택합니다.

  2. [리소스 그룹] 창에서 리소스 그룹 삭제를 선택합니다. 리소스 그룹 이름을 입력하라는 메시지가 표시되면 해당 그룹을 삭제할 수 있습니다. 여기에 포함된 리소스도 모두 제거됩니다.

다음 단계

지원되는 Logic App 커넥터의 전체 목록은

커넥터 개요를 참조하세요.