名前空間トピックを使用して Azure Event Hubs にイベントを配信する - Azure portal
この記事では、CloudEvents JSON 形式でイベントを Azure Event Grid に発行し、プル配信モデルを使用してそれらのイベントを配信する詳細な手順について説明します。
具体的には、Azure portal と Curl を使用して、イベントを Event Grid の名前空間トピックに発行し、それらのイベントをイベント サブスクリプションから Event Hubs ハンドラーの宛先にプッシュします。 プッシュ配信モデルの詳細については、プッシュ配信の概要に関するページを参照してください。
Azure サブスクリプションをお持ちでない場合は、開始する前に Azure 無料アカウントを作成してください。
Event Grid 名前空間を作成する
Event Grid 名前空間は、イベントの投稿先となるユーザー定義のエンドポイントになります。 次の例では、Azure Cloud Shell の Bash を利用し、リソース グループに名前空間が作成されます。 名前空間名は、ドメイン ネーム システム (DNS) エントリの一部であるため、一意である必要があります。
Azure Portal に移動します。
トピックの検索バーに「
Event Grid Namespaces
」と入力し、結果から [Event Grid Namespaces
] を選択します。[名前空間の作成] ページで、これらの手順を実行します。
デプロイに成功したら、[デプロイメント] ページで [リソースに移動] を選択します。
アクセス キーを取得する
- [Event Grid 名前空間] ページで、左側のメニューの [アクセス キー] を選択します。
- アクセス キーの横にあるコピー ボタンを選択します。
- アクセス キーを任意の場所に保存します。 後ほど、このクイックスタートで使用します。
Event Grid 名前空間でマネージド ID を有効にする
Event Grid 名前空間でシステム割り当てマネージド ID を有効にします。 マネージド ID を使用して Event Hubs 名前空間のイベント ハブにイベントを配信するには、これらの手順を実行します。
- システム割り当てまたはユーザー割り当てマネージド ID を有効にします: 「名前空間」。 Azure CLI を使用してマネージド ID を有効にする方法を確認するには、次のセクションまで読み進めてください。
- Event Hubs 名前空間の Azure Event Hubs データ送信者の役割に ID を追加する。次のセクションに進み、ロールの割り当てを追加する方法を確認してください。
- システム割り当てまたはユーザー割り当てマネージド ID を使用するように、イベント ハブをエンドポイントとして使用するイベント サブスクリプションを構成します。
このセクションでは、名前空間でシステム割り当てマネージド ID を有効にします。 もう一方の手順は、クイックスタートの後ろの方で行います。
名前空間にトピックを作成する
名前空間エンドポイントに発行されたすべてのイベントを保持するために使用するトピックを作成します。
Event Hubs 名前空間を作成します
名前空間トピックのプッシュ配信サブスクリプションのためのハンドラーの宛先として使用される Event Hubs リソースを作成します。 以下の手順は、インターネット ブラウザーの別のタブまたは別のウィンドウで行います。 Azure portal に移動し、前に使用したのと同じ資格情報と同じ Azure サブスクリプションを使用してサインインします。
- 検索バーに「Event Hubs」と入力し、[Event Hubs] を選択します。
- [Event Hubs] ページで、コマンド バーの [+ 作成] を選択します。
- [名前空間の作成] ページで、これらの手順を実行します。
- [デプロイ] ページで、デプロイの成功後に [リソースへ移動] を選択します。
Event Grid マネージド ID を Event Hubs データ送信者ロールに追加する
- [Event Hubs 名前空間] ページで、左側のメニューの [アクセス制御 (IAM)] を選択します。
- コマンド バーで、[追加] ->[ロールの割り当てを追加] を選択します。
- [ロールの割り当ての追加] ページで、Event Hubs データ送信者を検索し、ロールの一覧から [Azure Event Hubs データ送信者] を選択した後、[次へ] を選択します。
- [メンバー] タブで、種類として [マネージド ID] を選択した後、[+ メンバーの選択] を選択します。
- [マネージド ID の選択] ページで、[マネージド ID] の [Event Grid 名前空間] を選択した後、Event Grid 名前空間と同じ名前のマネージド ID を選択します。
- [マネージド ID の選択] ページで、[選択] を選択します。
- 次に、[ロールの割り当ての追加] ページで、[確認と割り当て] を選択します。
- [確認と割り当て] ページで、[確認と割り当て] を選択します。
イベント ハブの作成
- [Event Hubs 名前空間] ページで、左側のメニューから [Event Hubs] を選択します。
- [Event Hubs] ページで、コマンド バーの [+ イベント ハブ] を選択します。
- [イベント ハブの作成] ページで、イベント ハブの名前を入力した後、[確認と作成] を選択します。
- [確認および作成] ページで、 [作成] を選択します。
イベント サブスクリプションの作成
プッシュ配信をサポートする "プッシュ" に配信モードを設定するイベント サブスクリプションを作成します。
- [Event Hubs 名前空間] ページが開いているタブまたはウィンドウから [Event Grid 名前空間] ページが開いているタブまたはウィンドウに切り替えます。
- [Event Grid 名前空間] ページで、左側のメニューの [トピック] を選択します。
- [トピック] ページで、先ほどの手順で作成したトピックを選択します。
- コマンド バーの [+ サブスクリプション] を選択します。
- [イベント サブスクリプションの作成] ページで、次の手順に従います。
トピックにイベントを送信する
ここで、このセクションの手順に従って、名前空間トピックにサンプル イベントを送信します。
Azure portal で Cloud Shell を起動します。 [Bash] に切り替えます。
Cloud Shell で次のコマンドを実行して、名前空間のアクセス キーを保持する変数を宣言します。 このクイックスタートの前半でアクセス キーをメモしました。
key=ACCESSKEY
発行操作 URI を保持する変数を宣言します。
NAMESPACENAME
を Event Grid 名前空間の名前に、TOPICNAME
をトピックの名前に置き換えます。publish_operation_uri=https://NAMESPACENAME.eastus-1.eventgrid.azure.net/topics/TOPICNAME:publish?api-version=2023-06-01-preview
CloudEvents に準拠したサンプル イベントを作成します。
event=' { "specversion": "1.0", "id": "'"$RANDOM"'", "type": "com.yourcompany.order.ordercreatedV2", "source" : "/mycontext", "subject": "orders/O-234595", "time": "'`date +%Y-%m-%dT%H:%M:%SZ`'", "datacontenttype" : "application/json", "data":{ "orderId": "O-234595", "url": "https://yourcompany.com/orders/o-234595"}} '
data
要素がイベントのペイロードです。 このフィールドには、適切な形式の JSON であればどのようなものでも格納することができます。 イベントに含めることができるプロパティ (コンテキスト属性とも呼ばれます) の詳細については、CloudEvents の仕様に関するページを参照してください。CURL を使用してイベントをトピックに送信します。 CURL は、HTTP 要求を送信するユーティリティです。
curl -X POST -H "Content-Type: application/cloudevents+json" -H "Authorization:SharedAccessKey $key" -d "$event" $publish_operation_uri
Azure portal で Event Hubs 名前空間ページに移動し、ページを更新して、グラフの受信メッセージ数でイベントを受信したことが示されていることを確認します。
次のステップ
この記事では、Event Grid 名前空間と Event Hubs リソースを作成して構成しました。 イベント ハブからイベントを取得するためのステップ バイ ステップの手順については、次のチュートリアルを参照してください。
- .NET Core
- Java
- Python
- JavaScript
- Go
- C (送信のみ)
- Apache Storm (受信のみ)