빠른 시작: Azure Portal을 사용하여 Event Grid 네임스페이스에서 MQTT 메시지 게시 및 구독

이 문서에서는 Azure Portal을 사용하여 다음 작업을 수행합니다.

  1. Event Grid 네임스페이스 만들기 및 MQTT 브로커 사용
  2. 클라이언트, 클라이언트 그룹, 토픽 공간과 같은 하위 리소스 만들기
  3. 클라이언트에 토픽 공간을 게시 및 구독할 수 있는 액세스 권한 부여
  4. 클라이언트 간에 메시지 게시 및 수신

필수 조건

  • Azure 구독이 없는 경우 Azure 무료 계정을 만듭니다.
  • Azure Event Grid를 처음 사용하는 경우 이 자습서를 시작하기 전에 Event Grid 개요를 읽어 보세요.
  • 방화벽에서 포트 8883이 열려 있는지 확인합니다. 이 자습서의 샘플은 포트 8883을 통해 통신하는 MQTT 프로토콜을 사용합니다. 이 포트는 일부 회사 및 교육용 네트워크 환경에서 차단될 수 있습니다.
  • 지문을 생성하고 클라이언트 연결을 인증하려면 X.509 클라이언트 인증서가 필요합니다.

샘플 클라이언트 인증서 및 지문 생성

인증서가 아직 없는 경우 step CLI를 사용하여 샘플 인증서를 만들 수 있습니다. Windows용으로 수동으로 설치하는 것이 좋습니다.

Step을 성공적으로 설치한 후 사용자 프로필 폴더에서 명령 프롬프트를 열어야 합니다(Win+R에서 %USERPROFILE% 입력).

  1. 루트 및 중간 인증서를 만들려면 다음 명령을 실행합니다. 다음 단계에서 사용해야 하므로 암호를 기억하세요.

    step ca init --deployment-type standalone --name MqttAppSamplesCA --dns localhost --address 127.0.0.1:443 --provisioner MqttAppSamplesCAProvisioner
    
  2. 생성된 CA 파일을 사용하여 첫 번째 클라이언트에 대한 인증서를 만듭니다. 명령에서 인증서 및 비밀 파일에 올바른 경로를 사용해야 합니다.

    step certificate create client1-authn-ID client1-authn-ID.pem client1-authn-ID.key --ca .step/certs/intermediate_ca.crt --ca-key .step/secrets/intermediate_ca_key --no-password --insecure --not-after 2400h
    
  3. 지문을 보려면 Step 명령을 실행합니다.

    step certificate fingerprint client1-authn-ID.pem
    
  4. 이제 두 번째 클라이언트에 대한 인증서를 만듭니다.

    step certificate create client2-authn-ID client2-authn-ID.pem client2-authn-ID.key --ca .step/certs/intermediate_ca.crt --ca-key .step/secrets/intermediate_ca_key --no-password --insecure --not-after 2400h
    
  5. 두 번째 클라이언트와 함께 사용할 지문을 보려면 Step 명령을 실행합니다.

    step certificate fingerprint client2-authn-ID.pem
    

네임스페이스 만들기

  1. Azure 포털에 로그인합니다.

  2. 검색 창에서 Event Grid 네임스페이스를 입력한 다음, 드롭다운 목록에서 Event Grid 네임스페이스를 선택합니다.

    Screenshot of searching for Event Grid namespace on Azure portal.

  3. Event Grid 네임스페이스 페이지의 도구 모음에서 + 만들기를 선택합니다.

  4. 네임스페이스 만들기 페이지에서 다음 단계를 수행합니다.

    1. Azure 구독을 선택합니다.

    2. 기존 리소스 그룹을 선택하거나 새 새로 만들기를 선택하고 리소스 그룹의 이름을 입력합니다.

    3. 네임스페이스에 고유한 이름을 제공합니다. 네임스페이스 이름은 DNS 항목을 나타내므로 지역별로 고유해야 합니다. 이미지에 표시된 이름은 사용하지 마십시오. 대신 고유한 이름을 만듭니다. 3~50자 사이로 a-z, A-Z, 0-9 및 - 값만 포함해야 합니다.

    4. Event Grid 네임스페이스의 위치를 선택합니다. 현재, Event Grid 네임스페이스는 선택한 지역에서만 사용할 수 있습니다.

      Screenshot showing Event Grid namespace create flow basics tab.

  5. 페이지 아래쪽에서 검토 + 만들기를 선택합니다.

  6. 네임스페이스 만들기 페이지의 검토 + 만들기 탭에서 만들기를 선택합니다.

    참고 항목

    빠른 시작을 간단하게 유지하기 위해 기본 사항 페이지만 사용하여 네임스페이스를 만듭니다. 마법사의 다른 페이지에서 네트워크, 보안 및 기타 설정을 구성하는 방법에 대한 자세한 단계는 네임스페이스 만들기를 참조하세요.

  7. 배포가 성공하면 리소스로 이동을 선택하여 네임스페이스에 대한 Event Grid 네임스페이스 개요 페이지로 이동합니다.

  8. 개요 페이지를 보면 MQTT 브로커사용 안 함 상태로 표시됩니다. MQTT 브로커를 사용하도록 설정하려면 사용 안 함 링크를 선택합니다. 그러면 구성 페이지로 리디렉션됩니다.

  9. 구성 페이지에서 MQTT 브로커 사용 옵션을 선택한 다음 적용을 선택하여 설정을 적용합니다.

    Screenshot showing Event Grid namespace configuration page to enable MQTT.

클라이언트 만들기

  1. 왼쪽 메뉴의 MQTT 브로커 섹션에서 클라이언트를 선택합니다.

  2. 클라이언트 페이지의 도구 모음에서 + 클라이언트를 선택합니다.

    Screenshot of the Clients page with Add button selected.

  3. 클라이언트 만들기 페이지에서 클라이언트의 이름을 입력합니다. 클라이언트 이름은 네임스페이스에서 고유해야 합니다.

  4. 클라이언트 인증 이름은 기본적으로 클라이언트 이름이 설정됩니다. 이 자습서에서는 client1-authn-ID로 변경합니다. 이 이름을 CONNECT 패킷에서 Username으로 포함해야 합니다.

  5. 이 자습서에서는 지문 기반 인증을 사용합니다. 기본 지문에 첫 번째 클라이언트 인증서의 지문을 포함합니다.

    Screenshot of client 1 configuration.

  6. 도구 모음에서 만들기 선택하여 다른 클라이언트를 만듭니다.

  7. 위의 단계를 반복하여 client2라는 두 번째 클라이언트를 만듭니다. 인증 이름을 client2-authn-ID로 변경하고 기본 지문두 번째 클라이언트 인증서의 지문을 포함합니다.

    Screenshot of client 2 configuration.

    참고 항목

    • 빠른 시작을 단순하게 유지하기 위해 인증에 지문 일치를 사용합니다. 클라이언트 인증에 X.509 CA 인증서 체인을 사용하기 위한 자세한 단계는 인증서 체인 사용하여 클라이언트 인증을 참조하세요.
    • 또한 이 연습의 네임스페이스에 있는 모든 클라이언트를 포함하는 기본 $all 클라이언트 그룹을 사용합니다. 클라이언트 특성을 사용하여 사용자 지정 클라이언트 그룹을 만드는 방법에 대한 자세한 내용은 클라이언트 그룹을 참조하세요.

토픽 공간 만들기

  1. 왼쪽 메뉴의 MQTT 브로커 섹션에서 토픽 공간을 선택합니다.

  2. 토픽 공간 페이지의 도구 모음에서 + 토픽 공간을 선택합니다.

    Screenshot of Topic spaces page with create button selected.

  3. 토픽 공간 만들기 페이지에서 토픽 공간의 이름을 제공합니다.

  4. + 토픽 템플릿 추가를 선택합니다.

    Screenshot of Create topic space with the name.

  5. 토픽 템플릿에 contosotopics/topic1을 입력한 다음 만들기를 선택하여 토픽 공간을 만듭니다.

    Screenshot of topic space configuration.

권한 바인딩을 사용하여 액세스 제어 구성

  1. 왼쪽 메뉴의 MQTT 브로커 섹션에서 권한 바인딩을 선택합니다.

  2. 권한 바인딩 페이지의 도구 모음에서 + 권한 바인딩을 선택합니다.

    Screenshot that shows the Permission bindings page with the Create button selected.

  3. 다음과 같이 권한 바인딩을 구성합니다.

    1. 권한 바인딩의 이름을 제공합니다. 예: contosopublisherbinding.

    2. 클라이언트 그룹 이름$all을 선택합니다.

    3. 토픽 공간 이름에 이전 단계에서 만든 토픽 공간을 선택합니다.

    4. 클라이언트 그룹에 토픽 공간에 대한 게시자 권한을 부여합니다.

      Screenshot showing creation of first permission binding.

  4. 만들기를 선택하여 권한 바인딩을 만듭니다.

  5. 도구 모음에서 + 권한 바인딩을 선택하여 하나 이상의 권한 바인딩(contososubscriberbinding)을 만듭니다.

  6. 표시된 대로 이름을 입력하고 $all 클라이언트 그룹에 ContosoTopicSpace에 대한 구독자 액세스 권한을 부여합니다.

    Screenshot showing creation of second permission binding.

  7. 만들기를 선택하여 권한 바인딩을 만듭니다.

MQTTX 앱을 사용하여 EG 네임스페이스에 클라이언트 연결

  1. MQTT 메시지 게시/구독의 경우 원하는 도구를 사용할 수 있습니다. 데모 목적으로 게시/구독은 https://mqttx.app/에서 다운로드할 수 있는 MQTTX 앱을 사용하여 표시됩니다.

    Screenshot showing MQTTX app left rail to add new client.

  2. 다음과 같이 client1을 구성합니다.

    • 이름client1(임의의 값을 사용할 있음)

    • 클라이언트 IDclient1-session1(CONNECT 패킷의 클라이언트 ID는 클라이언트 연결에 대한 세션 ID를 식별하는 데 사용됨)

    • 사용자 이름client1-authn-ID. 이 값은 Azure Portal에서 클라이언트를 만들 때 지정한 클라이언트 인증 이름의 값과 일치해야 합니다.

      Important

      사용자 이름은 클라이언트 메타데이터의 클라이언트 인증 이름과 일치해야 합니다.

  3. 네임스페이스의 개요 페이지에서 호스트 이름을 MQTT 호스트 이름으로 업데이트합니다.

    Screenshot showing Event Grid namespace overview page, which has MQTT hostname.

  4. 포트8883으로 업데이트합니다.

  5. SSL/TLS를 켜짐으로 전환합니다.

  6. SSL Secure를 켜짐으로 전환하여 서비스 인증서 유효성 검사를 보장합니다.

  7. 인증서자체 서명됨으로 선택합니다.

  8. 클라이언트 인증서 파일의 경로를 제공합니다.

  9. 클라이언트 키 파일의 경로를 제공합니다.

  10. 나머지 설정은 미리 정의된 기본값 그대로 둘 수 있습니다.

    Screenshot showing client 1 configuration part 1 on MQTTX app.

  11. 연결을 선택하여 클라이언트를 MQTT 브로커에 연결합니다.

  12. 위의 단계를 반복하여 표시된 인증 정보를 사용하여 두 번째 클라이언트 client2를 연결합니다.

    Screenshot showing client 2 configuration part 1 on MQTTX app.

    Screenshot showing client 2 configuration part 2 on MQTTX app.

MQTTX 앱을 사용하여 게시/구독

  1. 클라이언트를 연결한 후, client2에서 + 새 구독 단추를 선택합니다.

  2. contosotopics/topic1을 토픽으로 추가하고 확인을 선택합니다. 다른 필드는 기존의 기본값 그대로 둘 수 있습니다.

    Screenshot showing subscription topic configuration on MQTTX app.

  3. 왼쪽 레일에서 client1을 선택합니다.

  4. client1의 메시지 작성 상자 위에서 게시할 토픽으로 contosotopics/topic1을 입력합니다.

  5. 메시지를 작성합니다. 임의의 형식 또는 표시된 대로 JSON을 사용할 수 있습니다.

  6. 보내기 단추를 선택합니다.

    Screenshot showing message publishing on the topic in MQTTX app.

  7. 메시지는 client1에 게시된 것으로 표시되어야 합니다.

    Screenshot showing message published on the topic in MQTTX app.

  8. client2로 전환합니다. client2가 메시지를 받았는지 확인합니다.

    Screenshot showing the message received by the subscribing client on MQTTX app.

다음 단계