이 자습서에서는 Event Grid 사용자 지정 항목을 사용하여 Azure Event Grid 네임스페이스에서 받은 MQTT 메시지를 Azure 함수로 라우팅합니다.
Azure 구독이 없는 경우 평가판에 등록할 수 있습니다.
Event Grid 트리거를 사용하여 Azure 함수 만들기
Visual Studio Code를 사용하여 Azure 함수 만들기의 지침을 따르지만 HTTP 트리거를 사용하는 대신 Azure Event Grid 트리거를 사용합니다.
중요합니다
동일한 지역에 모든 리소스를 만듭니다.
다음 예제와 유사한 코드가 표시됩니다.
using System;
using Azure.Messaging;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Logging;
namespace Company.Function
{
public class MyEventGridTriggerFunc
{
private readonly ILogger<MyEventGridTriggerFunc> _logger;
public MyEventGridTriggerFunc(ILogger<MyEventGridTriggerFunc> logger)
{
_logger = logger;
}
[Function(nameof(MyEventGridTriggerFunc))]
public void Run([EventGridTrigger] CloudEvent cloudEvent)
{
_logger.LogInformation("Event type: {type}, Event subject: {subject}", cloudEvent.Type, cloudEvent.Subject);
}
}
}
이 Azure 함수는 이 자습서의 뒷부분에서 토픽의 구독에 대한 이벤트 처리기로 사용합니다.
비고
이 자습서는 .NET 8.0(격리된) 런타임 스택을 사용하는 Azure 함수로 테스트되었습니다.
Event Grid 토픽 만들기(사용자 지정 항목)
Event Grid 토픽을 만듭니다. Azure Portal을 사용하여 사용자 지정 항목 만들기를 참조하세요. Event Grid 토픽을 만들 때 고급 탭에서 이벤트 스키마에 대해 클라우드 이벤트 스키마 v1.0을 선택합니다.
비고
이 자습서의 모든 위치에서 클라우드 이벤트 스키마 v1.0 을 사용합니다.
함수를 사용하여 토픽에 구독 추가
이 단계에서는 이전에 만든 Azure 함수를 사용하여 Event Grid 토픽에 대한 구독을 만듭니다.
Event Grid 토픽 페이지에서 구독을 선택합니다.
이벤트 구독 만들기 페이지에서 다음 단계를 수행합니다.
이벤트 구독의 이름을 입력합니다.
이벤트 스키마의 경우 클라우드 이벤트 스키마 1.0을 선택합니다.
엔드포인트 유형에 대해 Azure 함수를 선택합니다.
그런 다음, 엔드포인트 구성을 선택합니다.
Azure 함수 선택 페이지에서 다음 단계를 수행합니다.
구독에 대해 Azure 구독을 선택합니다.
리소스 그룹의 경우 Azure 함수가 있는 리소스 그룹을 선택합니다.
함수 앱의 경우 함수가 있는 Functions 앱을 선택합니다.
슬롯의 경우 프로덕션을 선택합니다.
Function의 경우 Azure Function을 선택합니다.
그런 다음, 선택 확인을 선택합니다.
이벤트 구독 만들기 페이지에서 만들기를 선택합니다.
이벤트 구독 페이지에 만든 구독이 표시됩니다.
네임스페이스, 클라이언트, 토픽 공간 및 권한 바인딩 만들기
빠른 시작: Azure 포털에서 Event Grid 네임스페이스를 사용하여 MQTT 메시지를 게시하고 구독하는 지침을 따라 다음을 수행하세요.
- Event Grid 네임스페이스를 만듭니다.
- 두 개의 클라이언트를 만듭니다.
- 토픽 공간을 만듭니다.
- 게시자 및 구독자 권한 바인딩을 만듭니다.
- MQTTX 앱을 사용하여 테스트하여 클라이언트가 메시지를 보내고 받을 수 있는지 확인합니다.
네임스페이스에 대한 관리 ID 사용
이 섹션에서는 Event Grid 네임스페이스에 대해 시스템 할당 관리 ID를 사용하도록 설정합니다. 그런 다음 Event Grid 사용자 지정 토픽에 대한 보내기 권한을 ID에 부여합니다. 그런 다음, 메시지를 사용자 지정 토픽으로 라우팅할 수 있습니다. 사용자 지정 항목의 Event Grid 데이터 발신자 역할에 관리 ID를 추가하여 사용하도록 설정합니다.
Event Grid 네임스페이스 페이지에서 ID를 선택합니다. 켜기 및 저장을 선택합니다.
Event Grid 사용자 지정 토픽으로 이동하세요.
왼쪽 탐색 모음에서 Access 컨트롤 을 선택합니다.
액세스 제어 페이지에서 추가를 선택한 다음 역할 할당 추가를 선택합니다.
역할 할당 추가 마법사의 역할 페이지에서 Event Grid 데이터 보낸 사람 역할을 선택하고 다음을 선택합니다.
역할 할당 추가의 구성원 페이지에서 관리 ID를 선택한 다음 멤버 선택을 선택합니다.
관리 ID 선택 페이지에서 다음 단계를 수행합니다.
Azure 구독을 선택합니다.
관리 ID의 경우 Event Grid 네임스페이스를 선택합니다.
Event Grid 네임스페이스와 이름이 같은 관리 ID를 선택합니다.
선택합니다.
역할 할당 추가 페이지에서 다음을 선택합니다.
검토 + 할당 페이지에서 설정을 검토한 다음 검토 + 할당을 선택합니다.
사용자 지정 토픽을 통해 Azure 함수로 라우팅 메시지 구성
이 섹션에서는 받은 메시지가 사용자가 만든 사용자 지정 토픽으로 라우팅되도록 Event Grid 네임스페이스에 대한 라우팅을 구성합니다.
Event Grid 네임스페이스 페이지에서 라우팅을 선택합니다.
라우팅 페이지에서 라우팅 사용을 선택합니다.
토픽 유형에 대해 사용자 지정 토픽을 선택합니다.
토픽의 경우 이 자습서에 대해 만든 사용자 지정 항목을 선택합니다.
배달을 위한 관리 ID의 경우 시스템 할당을 선택합니다.
적용을 선택합니다.
MQTTX를 사용하여 테스트 MQTT 메시지 보내기
테스트 MQTT 메시지를 네임스페이스로 보내고 함수가 메시지를 받는지 확인합니다.
MQTTX 앱을 사용하여 게시 및 구독의 지침에 따라 Event Grid 네임스페이스에 몇 가지 테스트 메시지를 보냅니다.
이벤트 또는 메시지의 흐름은 다음과 같습니다.
MQTTX는 Event Grid 네임스페이스의 토픽 공간으로 메시지를 보냅니다.
메시지는 구성한 사용자 지정 토픽으로 라우팅됩니다.
메시지는 Azure 함수인 이벤트 구독으로 전달됩니다.
로깅 기능을 사용하여 함수가 이벤트를 수신했는지 확인합니다.