Azure Event Grid의 MQTT 브로커 기능에 있는 토픽 공간

토픽 공간은 토픽 템플릿 집합을 통해 여러 토픽을 나타냅니다. 토픽 템플릿은 MQTT 와일드카드와 함께 변수를 지원하는 MQTT 필터의 확장입니다. 각 토픽 공간은 동일한 클라이언트 집합이 통신하는 데 사용해야 하는 MQTT 토픽을 나타냅니다.

토픽 공간은 각 개별 토픽에 대한 액세스를 관리하는 대신 한 번에 토픽 그룹에 대한 게시 또는 구독 액세스 권한을 부여할 수 있도록 하여 액세스 제어 관리를 간소화하는 데 사용됩니다. MQTT 토픽을 게시하거나 구독하려면 다음을 수행해야 합니다.

  1. MQTT를 통해 통신해야 하는 각 클라이언트에 대한 클라이언트 리소스를 만듭니다.
  2. 동일한 MQTT 토픽을 게시하거나 구독하기 위해 액세스해야 하는 클라이언트가 포함된 클라이언트 그룹을 만듭니다.
  3. 의도한 토픽/토픽 필터를 나타내는 토픽 템플릿이 포함된 토픽 공간을 만듭니다.
  4. 권한 바인딩을 만들어 클라이언트 그룹에 토픽 공간을 게시하거나 구독할 수 있는 액세스 권한을 부여합니다.

MQTT 토픽 필터:

MQTT 토픽 필터는 하나 이상의 세그먼트에 대한 와일드카드를 포함할 수 있는 MQTT 토픽으로, 여러 MQTT 토픽과 일치시킬 수 있습니다. 하나의 토픽 필터가 여러 토픽과 일치할 수 있으므로 구독 요청을 간소화하는 데 사용됩니다.

MQTT 브로커는 다음과 같이 MQTT 사양에 따라 정의된 모든 MQTT 와일드카드를 지원합니다.

  • +: 단일 세그먼트와 일치합니다.
    • 예를 들어 토픽 필터: "machines/+/alert"는 다음 토픽과 일치합니다.
      • machines/temp/alert
      • machines/humidity/alert
  • #: 토픽 끝에 있는 0개 이상의 세그먼트와 일치합니다.
    • 예를 들어 토픽 필터: "machines/#"은 다음 토픽과 일치합니다.
      • 머신
      • machines/temp
      • machines/humidity
      • machines/temp/alert etc.

와일드카드에 대한 자세한 내용은 MQTT 사양의 토픽 와일드카드를 참조하세요.

토픽 템플릿

토픽 템플릿은 MQTT 와일드카드와 함께 변수를 지원하는 MQTT 필터의 확장입니다. 토픽 공간 구성은 또한 클라이언트 그룹 내에서 각 클라이언트의 권한 부여를 제어하여 자체 토픽을 게시하거나 구독할 수 있도록 세분화된 액세스 제어를 제공합니다. 토픽 템플릿이 세분화된 액세스 제어를 제공하는 방법에 대해 자세히 알아봅니다.

토픽 공간 구성:

토픽 공간은 최대 10개의 토픽 템플릿을 그룹화할 수 있습니다. 토픽 템플릿은 MQTT 와일드카드(+ 및 #) 및 다음 변수를 지원합니다.

  • ${client.authenticationName}: 이 변수는 클라이언트의 인증 이름을 나타냅니다. 클라이언트 인증 이름에 대해 자세히 알아봅니다.
  • ${client.attributes.x}: 이 변수는 클라이언트 생성/업데이트 중에 클라이언트에 할당된 특성을 나타냅니다(예: "x"는 특성 키의 정확한 문자열과 같음). 예를 들어 클라이언트에 특성이 있는 경우 토픽 템플릿 "area/${client.attributes.area}/telemetry"를 사용하면 클라이언트 특성> 이 "area:section1"인 클라이언트만 MQTT 토픽 "area/section1/telemetry"에 게시할 수 있습니다. 클라이언트 특성에 대해 자세히 알아봅니다.

:

  • $로 시작하는 토픽은 내부용으로 예약되어 있습니다.

  • 변수는 세그먼트의 일부 또는 전체 세그먼트를 나타낼 수 있지만 둘 이상의 세그먼트를 포함할 수는 없습니다. 예를 들어, 토픽 템플릿에는 "machines/${client.authenticationName|.factory1}/temp" 일치 토픽 "machines/machine1.factory1/temp", "machines/machine2.factory1/temp" 등이 포함될 수 있습니다.

  • 토픽 템플릿은 $ 및 | 특수 문자를 사용하며 사용 중인 셸에 따라 다르게 이스케이프해야 합니다. PowerShell에서 $는 vehicles/${dollar}telemetry/#로 이스케이프할 수 있습니다. PowerShell을 사용하는 경우 다음 예제와 같이 이러한 특수 문자를 이스케이프할 수 있습니다.

    • "vehicles/${client.authenticationName|dollar}/#"

    • vehicles/${client.authenticationName"|"dollar}/#

Azure Portal 구성:

다음 단계를 수행하여 토픽 공간을 만듭니다.

  • Azure Portal에서 네임스페이스로 이동합니다.
  • 토픽 공간 아래에서 +토픽 공간을 선택합니다.
  • 토픽 공간에 이름을 할당합니다.

참고 항목

  • 3~50자로 된 이름을 사용할 수 있습니다.
  • 클라이언트 그룹 이름에는 영숫자, 하이픈(-)이 포함될 수 있으며 공백은 포함될 수 없습니다.
  • +토픽 템플릿 추가를 선택하여 하나 이상의 토픽 템플릿을 추가합니다.
  • 만들기를 실행합니다.

항목 공간 구성의 스크린샷.

Azure CLI 구성:

다음 명령을 사용하여 토픽 공간을 만듭니다.

az eventgrid namespace topic-space create -g myRG --namespace-name myNS -n myTopicSpace --topic-templates ['segment1/+/segment3/${client.authenticationName}', "segment1/${client.attributes.attribute1}/segment3/#"]

참고 항목

토픽 공간 구성 업데이트가 전파되는 데 몇 분 정도 걸릴 수 있습니다.

다음 단계:

인증 및 권한 부여에 관해 자세히 알아보기:

빠른 시작:

개념: