クイックスタート: Azure portal を使用して Event Grid 名前空間で MQTT メッセージを発行してサブスクライブする
このクイック スタートでは、Azure portal を使用して、MQTT ブローカーが有効になっている Event Grid 名前空間を作成し、クライアント、クライアント グループ、トピック空間などのサブ リソースを作成し、トピック空間を公開およびサブスクライブするためのアクセス権をクライアントに付与して、クライアント間でメッセージを公開および受信します。
前提条件
- Azure サブスクリプションをお持ちでない場合は、Azure の無料アカウントを作成してください。
- Azure Event Grid を初めて使用する場合は、このチュートリアルを開始する前に Event Grid の概要を確認してください。
- ポート 8883 がファイアウォールで開放されていることを確認してください。 このチュートリアルのサンプルでは、ポート 8883 を介して通信する MQTT プロトコルを使用しています。 このポートは、企業や教育用のネットワーク環境によってはブロックされている場合があります。
- 拇印を生成してクライアント接続を認証するには、X.509 クライアント証明書が必要です。
サンプルのクライアント証明書と拇印を生成する
まだ証明書がない場合は、step CLI を使用してサンプル証明書を作成できます。 Windows の場合は、手動でインストールすることを検討してください。
Step のインストールが正常に完了したら、ユーザー プロファイル フォルダーでコマンド プロンプトを開く必要があります (Win キー + R キーを押して、「%USERPROFILE%」と入力)。
ルート証明書と中間証明書を作成するには、次のコマンドを実行します。 パスワードは次の手順で使用する必要があるので覚えておいてください。
step ca init --deployment-type standalone --name MqttAppSamplesCA --dns localhost --address 127.0.0.1:443 --provisioner MqttAppSamplesCAProvisioner
生成された 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
拇印を表示するには、Step コマンドを実行します。
step certificate fingerprint client1-authn-ID.pem
これで、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
2 番目のクライアントで使用する拇印を表示するには、Step コマンドを実行します。
step certificate fingerprint client2-authn-ID.pem
名前空間の作成
Azure ポータルにサインインします。
検索バーに「Event Grid 名前空間」と入力し、ドロップ ダウン リストから [Event Grid 名前空間] を選択します。
[Event Grid 名前空間] ページで、ツール バーの [+ 作成] を選択します。
[名前空間の作成] ページで、こちらの手順を実行します。
Azure サブスクリプションを選択します。
既存のリソース グループを選択するか、[新規作成] を選択し、リソース グループの名前を入力します。
名前空間には一意の名前を指定します。 名前空間の名前は DNS エントリを表すので、リージョンごとに一意である必要があります。 画像に示されている名前は使用しないでください。 代わりに、必ず 3 - 50 文字以内で、a - z、A - Z、0 - 9、および
-
のみを含む独自の名前を作成します。Event Grid 名前空間の場所を選択します。 現在、Event Grid 名前空間は一部のリージョンでのみ使用できます。
ページ下部にある [確認と作成] を選択します。
名前空間の作成ページの [確認および作成] タブで、[作成] を選択します。
注意
クイックスタートをシンプルにするため、名前空間の作成には [基本] ページのみを使います。 ウィザードの他のページでネットワーク、セキュリティ、その他の設定を構成する詳細な手順については、「名前空間を作成する」を参照してください。
デプロイが正常に完了したら、[リソースに移動] を選択して、名前空間の Event Grid 概要ページに移動します。
[概要] ページで、MQTT ブローカー が [無効] 状態になっていることがわかります。 MQTT ブローカーを有効にするには、[無効] リンクを選択すると、[構成] ページにリダイレクトされます。
[構成] ページで、[Enable MQTT broker]\(MQTT ブローカーを有効にする\) オプションを選択し、[適用] を選択して設定を適用します。
クライアントの作成
左側のメニューの [MQTT ブローカー] セクションで [クライアント] を選択します。
[クライアント] ページのツールバーで、[+ クライアント] を選択します。
[クライアントの作成] ページで、クライアントの名前を入力します。 クライアント名は、名前空間内で一意である必要があります。
クライアント認証名は、既定でクライアント名に設定されます。 このチュートリアルでは、
client1-authn-ID
に変更します。 この名前をUsername
として CONNECT パケットに含める必要があります。このチュートリアルでは、拇印ベースの認証を使用できます。 最初のクライアント証明書の拇印をプライマリ拇印に含めます。
ツール バーの [+ 作成する] を選択して、別のクライアントを作成します。
上記の手順を繰り返して、
client2
という名前の 2 番目のクライアントを作成します。 認証名をclient2-authn-ID
に変更し、2 番目のクライアント証明書の拇印をプライマリ拇印に含めます。Note
- クイック スタートをシンプルにするために、認証に拇印一致を使用します。 クライアント認証に X.509 CA 証明書チェーンを使用する詳細な手順については、証明書チェーンを使用したクライアント認証に関するページを参照してください。
- また、この演習では、名前空間内のすべてのクライアントを含む既定の
$all
クライアント グループを使用します。 クライアント属性を使用したカスタム クライアント グループの作成の詳細については、クライアント グループに関するページを参照してください。
トピック空間を作成する
左側のメニューの [MQTT ブローカー] セクションで [トピック空間] を選択します。
[トピック空間] ページのツールバーで、[+ トピック空間] を選択します。
[トピック空間の作成] ページで、トピック空間の名前を指定します。
トピック テンプレートに
contosotopics/topic1
を入力し、[作成] を選択してトピック空間を作成します。
アクセス許可バインドを使用したアクセス制御の構成
左側のメニューの [MQTT ブローカー] セクションで [アクセス許可バインド] を選択します。
[アクセス許可バインド] ページのツール バーで、[+ アクセス許可バインド] を選択します。
アクセス許可バインドを次のように構成します。
アクセス許可バインドの名前を指定します。 たとえば、「
contosopublisherbinding
」のように入力します。クライアント グループ名の場合は、$all を選択します。
[Topic space name] (トピック スペース名) で、前の手順で作成したトピック スペースを選択します。
トピック空間上のクライアント・グループにパブリッシャー アクセス許可を付与します。
[作成] を選択してアクセス許可バインドを作成します。
ツールバーの [+ アクセス許可バインド] を選択して、アクセス許可バインド (
contososubscriberbinding
) をもう 1 つ作成します。ContosoTopicSpace に示すように、名前を指定し、$all クライアント グループに Topicspace1 に対するサブスクライバー アクセス権を付与します。
[作成] を選択してアクセス許可バインドを作成します。
MQTTX アプリを使用してクライアントを EG 名前空間に接続する
MQTT メッセージの発行またはサブスクライブには、お気に入りのツールを使用できます。 デモの目的で、MQTTX アプリを使用した発行とサブスクライブを示します。これは https://mqttx.app/ からダウンロードできます。
左側のナビゲーション バーで [+] を選択します。
client1 を以下のように構成します
名前として
client1
を指定します (この値は何でも構いません)クライアント ID として
client1-session1
を指定します (CONNECT パケットのクライアント ID はクライアント接続のセッション ID を識別するために使用されます)ユーザー名として
client1-authn-ID
を指定します。 この値は、Azure portal でクライアントを作成したときに指定したクライアント認証名の値と一致する必要があります。重要
ユーザー名はクライアント メタデータのクライアント認証名と一致する必要があります。
名前空間の [概要] ページからホスト名を MQTT ホスト名に更新します。
ポートを 8883 に更新します。
SSL/TLS を [オン] に切り替えます。
サービス証明書の検証を確認するには、[SSL Secure] (SSL セキュア) を [オン] に切り替えます。
[証明書] として [CA または自己署名証明書] を選択します。
クライアント証明書ファイルのパスを指定します。
クライアント キー ファイルのパスを指定します。
その他の設定は、定義済みの既定値のままで構いません。
[接続] を選択して、クライアントを MQTT ブローカーに接続します。
上記の手順を繰り返して、次のように、2 番目のクライアント client2 に対応する認証情報を指定して、接続します。
MQTTX アプリを使用した発行/サブスクライブ
クライアントを接続した後、client2 に対して [+ 新規サブスクリプション] ボタンを選択します。
トピックとして
contosotopics/topic1
を追加して、[確認] を選択します。 他のフィールドは既存の既定値のままで構いません。左側のレールで client1 を選択します。
client1 の場合は、メッセージ作成ボックスの上に、発行するトピックとして
contosotopics/topic1
を入力します。メッセージを作成します。 次に示すように、任意の形式または JSON を使用できます。
[送信] ボタンを選択します。
メッセージは、クライアント 1 で発行済みと表示されます。
client2 に切り替えます。 client2 でメッセージを受信したことを確認します。