다음을 통해 공유


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/#"]

참고 항목

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

다음 단계:

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

빠른 시작:

개념: