クイックスタート: 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. これで、2 番目のクライアントの証明書を作成できるようになりました。

    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. 2 番目のクライアントで使用する拇印を表示するには、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. [構成] ページで、[Enable MQTT broker]\(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 に変更します。 この名前を Username として CONNECT パケットに含める必要があります。

  5. このチュートリアルでは、拇印ベースの認証を使用できます。 最初のクライアント証明書の拇印をプライマリ拇印に含めます。

    Screenshot of client 1 configuration.

  6. ツール バーの [+ 作成する] を選択して、別のクライアントを作成します。

  7. 上記の手順を繰り返して、client2 という名前の 2 番目のクライアントを作成します。 認証名を client2-authn-ID に変更し、2 番目のクライアント証明書の拇印をプライマリ拇印に含めます。

    Screenshot of client 2 configuration.

    Note

    • クイック スタートをシンプルにするために、認証に拇印一致を使用します。 クライアント認証に 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. [Topic space name] (トピック スペース名) で、前の手順で作成したトピック スペースを選択します。

    4. トピック空間上のクライアント・グループにパブリッシャー アクセス許可を付与します。

      Screenshot showing creation of first permission binding.

  4. [作成] を選択してアクセス許可バインドを作成します。

  5. ツールバーの [+ アクセス許可バインド] を選択して、アクセス許可バインド (contososubscriberbinding) をもう 1 つ作成します。

  6. ContosoTopicSpace に示すように、名前を指定し、$all クライアント グループに Topicspace1 に対するサブスクライバー アクセス権を付与します。

    Screenshot showing creation of second permission binding.

  7. [作成] を選択してアクセス許可バインドを作成します。

MQTTX アプリを使用してクライアントを EG 名前空間に接続する

  1. MQTT メッセージの発行またはサブスクライブには、お気に入りのツールを使用できます。 デモの目的で、MQTTX アプリを使用した発行とサブスクライブを示します。これは https://mqttx.app/ からダウンロードできます。

    Screenshot showing MQTTX app left rail to add new client.

  2. client1 を以下のように構成します

    • 名前として client1 を指定します (この値は何でも構いません)

    • クライアント ID として client1-session1 を指定します (CONNECT パケットのクライアント ID はクライアント接続のセッション ID を識別するために使用されます)

    • ユーザー名として client1-authn-IDを指定します。 この値は、Azure portal でクライアントを作成したときに指定したクライアント認証名の値と一致する必要があります。

      重要

      ユーザー名はクライアント メタデータのクライアント認証名と一致する必要があります。

  3. 名前空間の [概要] ページからホスト名を MQTT ホスト名に更新します。

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

  4. ポート8883 に更新します。

  5. SSL/TLS を [オン] に切り替えます。

  6. サービス証明書の検証を確認するには、[SSL Secure] (SSL セキュア) を [オン] に切り替えます。

  7. 自己署名証明書を選択します。

  8. クライアント証明書ファイルのパスを指定します。

  9. クライアント キー ファイルのパスを指定します。

  10. その他の設定は、定義済みの既定値のままで構いません。

    Screenshot showing client 1 configuration part 1 on MQTTX app.

  11. [接続] を選択して、クライアントを MQTT ブローカーに接続します。

  12. 上記の手順を繰り返して、次のように、2 番目のクライアント 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. メッセージは、クライアント 1 で発行済みと表示されます。

    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.

次のステップ