この記事では、 CloudEvents JSON 形式 で Azure Event Grid にイベントを発行し、プッシュ配信モデルを使用してそれらのイベントを配信する手順について説明します。
具体的には、Azure portal と Curl を使用して Event Grid の名前空間トピックにイベントを発行し、それらのイベントをイベント サブスクリプションから Event Hubs ハンドラーの宛先にプッシュします。 プッシュ配信モデルの詳細については、「 プッシュ配信の概要」を参照してください。
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 またはユーザー割り当てマネージド ID: 名前空間を有効にします。 次のセクションに進み、Azure CLI を使用してマネージド ID を有効にする方法を確認してください。
- Event Hubs 名前空間の Azure Event Hubs データ送信者 ロールに ID を追加し、次のセクションに進み、ロールの割り当てを追加する方法を確認します。
- システム割り当てマネージド ID またはユーザー割り当てマネージド ID を使用するエンドポイントとしてイベント ハブを使用するイベント サブスクリプションを構成します。
このセクションでは、名前空間でシステム割り当てマネージド ID を有効にします。 その他の手順は、このクイックスタートの後半で行います。
[Event Grid 名前空間] ページで、左側のメニューの [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 Data Sender ] を選択し、[ 次へ] を選択します。
- [ メンバー ] タブで、種類の [マネージド ID] を 選択し、[ + メンバーの選択] を選択します。
- [マネージド ID の選択] ページで、マネージド ID の Event Grid 名前空間を選択し、Event Grid 名前空間と同じ名前のマネージド ID を選択します。
- [ マネージド ID の選択 ] ページで、[選択] を 選択します。
- 次に、[ロールの割り当ての追加] ページで、[確認と割り当て] を選択します。
- [ 確認と割り当て ] ページで、[ 確認と割り当て] を選択します。
イベント ハブの作成
- [ Event Hubs 名前空間] ページで、左側のメニューで [Event Hubs ] を選択します。
- [ Event Hubs ] ページで、コマンド バーの [+ イベント ハブ ] を選択します。
- [ イベント ハブの作成 ] ページで、イベント ハブの名前を入力し、[ 確認と作成] を選択します。
- [確認および作成] ページで、 [作成] を選択します。
イベント サブスクリプションの作成
プッシュ配信をサポートする、配信モードを Push に設定するイベント サブスクリプションを作成 します。
- 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
- ジャワ
- ニシキヘビ
- JavaScript
- 進む
- C (送信のみ)
- Apache Storm (受信のみ)