次の方法で共有


名前空間トピックを使用して 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) エントリの一部であるため、一意である必要があります。

  1. Azure Portal に移動します。

  2. トピックの検索バーに「Event Grid Namespaces」と入力し、結果から [Event Grid Namespaces] を選択します。

    Azure portal の検索バーを示すスクリーンショット。

  3. [Event Grid 名前空間] ページで、コマンド バーの [+ 作成] を選択します。 コマンド バーの [作成] ボタンが選択されている [Event Grid 名前空間] ページを示すスクリーンショット。

  4. [名前空間の作成] ページで、これらの手順を実行します。

    1. 名前空間を作成する [Azure サブスクリプション] を選択します。
    2. [新規作成] を選んで新しいリソース グループを作成するか、既存のリソース グループを選びます。
    3. 名前空間の名前を入力します。
    4. リソース グループを作成する [場所] を選択します。
    5. 次に [確認と作成] を選択します。
      [名前空間の作成] ページを示すスクリーンショット。
    6. [確認および作成] ページで、 [作成] を選択します。
  5. デプロイに成功したら、[デプロイメント] ページで [リソースに移動] を選択します。

アクセス キーを取得する

  1. [Event Grid 名前空間] ページで、左側のメニューの [アクセス キー] を選択します。
  2. アクセス キーの横にあるコピー ボタンを選択します。 [アクセス キー] タブが選択されている [Event Grid 名前空間] ページを示すスクリーンショット。
  3. アクセス キーを任意の場所に保存します。 後ほど、このクイックスタートで使用します。

Event Grid 名前空間でマネージド ID を有効にする

Event Grid 名前空間でシステム割り当てマネージド ID を有効にします。 マネージド ID を使用して Event Hubs 名前空間のイベント ハブにイベントを配信するには、これらの手順を実行します。

  1. システム割り当てまたはユーザー割り当てマネージド ID を有効にします: 「名前空間」。 Azure CLI を使用してマネージド ID を有効にする方法を確認するには、次のセクションまで読み進めてください。
  2. Event Hubs 名前空間の Azure Event Hubs データ送信者の役割に ID を追加する。次のセクションに進み、ロールの割り当てを追加する方法を確認してください。
  3. システム割り当てまたはユーザー割り当てマネージド ID を使用するように、イベント ハブをエンドポイントとして使用するイベント サブスクリプションを構成します。

このセクションでは、名前空間でシステム割り当てマネージド ID を有効にします。 もう一方の手順は、クイックスタートの後ろの方で行います。

  1. [Event Grid 名前空間] ページで、左側のメニューの [ID] を選択します。

  2. [ID] ページの [状態][オン] を選択します。

  3. コマンド バーで、 保存 を選択します。

    [Event Grid 名前空間] ページの [ID] タブを示すスクリーンショット。

名前空間にトピックを作成する

名前空間エンドポイントに発行されたすべてのイベントを保持するために使用するトピックを作成します。

  1. 左側のメニューで [トピック] を選択します。
  2. [トピック] ページで、コマンド バーの [+ トピック] を選択します。 [トピック] ページを示すスクリーンショット。
  3. [トピックの作成] ページで、次の手順に従います。
    1. トピックの名前を入力します。
    2. [作成] を選択します
      [トピックの作成] ページを示すスクリーンショット。

Event Hubs 名前空間を作成します

名前空間トピックのプッシュ配信サブスクリプションのためのハンドラーの宛先として使用される Event Hubs リソースを作成します。 以下の手順は、インターネット ブラウザーの別のタブまたは別のウィンドウで行います。 Azure portal に移動し、前に使用したのと同じ資格情報と同じ Azure サブスクリプションを使用してサインインします。

  1. 検索バーに「Event Hubs」と入力し、[Event Hubs] を選択します。
  2. [Event Hubs] ページで、コマンド バーの [+ 作成] を選択します。
  3. [名前空間の作成] ページで、これらの手順を実行します。
    1. Event Grid 名前空間を作成するために使用した Azure サブスクリプションを選択します。
    2. 先ほど使用したリソース グループを選択します。
    3. Event Hubs 名前空間の名前を入力します。
    4. Event Grid 名前空間に使用したのと同じ場所を選択します。
    5. [価格] レベルでは [Basic] を選択します。
    6. [Review + create](レビュー + 作成) を選択します。 [Event Hubs 名前空間の作成] ページを示すスクリーンショット。
    7. [Review](レビュー) ページで、 [Create](作成) を選択します。
  4. [デプロイ] ページで、デプロイの成功後に [リソースへ移動] を選択します。

Event Grid マネージド ID を Event Hubs データ送信者ロールに追加する

  1. [Event Hubs 名前空間] ページで、左側のメニューの [アクセス制御 (IAM)] を選択します。
  2. コマンド バーで、[追加] ->[ロールの割り当てを追加] を選択します。 [アクセス制御] タブが選択されている [Event Hubs 名前空間] ページを示すスクリーンショット。
  3. [ロールの割り当ての追加] ページで、Event Hubs データ送信者を検索し、ロールの一覧から [Azure Event Hubs データ送信者] を選択した後、[次へ] を選択します。 [ロールの割り当てを追加] ページを示すスクリーンショット。
  4. [メンバー] タブで、種類として [マネージド ID] を選択した後、[+ メンバーの選択] を選択します。 [ロールの割り当てを追加] ページの [メンバー] タブを示すスクリーンショット。
  5. [マネージド ID の選択] ページで、[マネージド ID][Event Grid 名前空間] を選択した後、Event Grid 名前空間と同じ名前のマネージド ID を選択します。 [マネージド ID の選択] ページを示すスクリーンショット。
  6. [マネージド ID の選択] ページで、[選択] を選択します。 選択したマネージド ID を示すスクリーンショット。
  7. 次に、[ロールの割り当ての追加] ページで、[確認と割り当て] を選択します。 [マネージド ID] が選択されている [ロール割り当てを追加] ページを示すスクリーンショット。
  8. [確認と割り当て] ページで、[確認と割り当て] を選択します。

イベント ハブの作成

  1. [Event Hubs 名前空間] ページで、左側のメニューから [Event Hubs] を選択します。
  2. [Event Hubs] ページで、コマンド バーの [+ イベント ハブ] を選択します。 [+ イベント ハブ] が選択された [Event Hubs] ページを示すスクリーンショット。
  3. [イベント ハブの作成] ページで、イベント ハブの名前を入力した後、[確認と作成] を選択します。 [イベント ハブの作成] ページを示すスクリーンショット。
  4. [確認および作成] ページで、 [作成] を選択します。

イベント サブスクリプションの作成

プッシュ配信をサポートする "プッシュ" に配信モードを設定するイベント サブスクリプションを作成します。

  1. [Event Hubs 名前空間] ページが開いているタブまたはウィンドウから [Event Grid 名前空間] ページが開いているタブまたはウィンドウに切り替えます。
  2. [Event Grid 名前空間] ページで、左側のメニューの [トピック] を選択します。
  3. [トピック] ページで、先ほどの手順で作成したトピックを選択します。
  4. コマンド バーの [+ サブスクリプション] を選択します。 [サブスクリプションの作成] ボタンが選択されている [トピック] ページを示すスクリーンショット。
  5. [イベント サブスクリプションの作成] ページで、次の手順に従います。
    1. [基本] タブで、イベント サブスクリプションの名前を入力します。
    2. イベント配信モードで [プッシュ] を選択します。
    3. [エンドポイントの種類][イベント ハブ] が選択されていることを確認します。
    4. [エンドポイントを構成する] を選択します。 配信モードに [プッシュ] が選択されている [サブスクリプションの作成] ページを示すスクリーンショット。
    5. [イベント ハブの選択] ページで、以下の手順に従います。
      1. イベント ハブがある Azure サブスクリプションリソース グループを選択します。
      2. Event Hubs 名前空間イベント ハブを選択します。
      3. 次に、[選択の確認] を選択します。 [イベント ハブの選択] ページを示すスクリーンショット。
    6. [サブスクリプションの作成] ページに戻り、[マネージド ID の種類][システム割り当て] を選択します。 [マネージド ID の種類] に [システム割り当て] が設定された [サブスクリプションの作成] ページを示すスクリーンショット。
    7. [作成] を選択します

トピックにイベントを送信する

ここで、このセクションの手順に従って、名前空間トピックにサンプル イベントを送信します。

  1. Azure portal で Cloud Shell を起動します。 [Bash] に切り替えます。

    Cloud Shell を示すスクリーンショット。

  2. Cloud Shell で次のコマンドを実行して、名前空間のアクセス キーを保持する変数を宣言します。 このクイックスタートの前半でアクセス キーをメモしました。

    key=ACCESSKEY
    
  3. 発行操作 URI を保持する変数を宣言します。 NAMESPACENAME を Event Grid 名前空間の名前に、TOPICNAME をトピックの名前に置き換えます。

    publish_operation_uri=https://NAMESPACENAME.eastus-1.eventgrid.azure.net/topics/TOPICNAME:publish?api-version=2023-06-01-preview
    
  4. 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 の仕様に関するページを参照してください。

  5. 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 リソースを作成して構成しました。 イベント ハブからイベントを取得するためのステップ バイ ステップの手順については、次のチュートリアルを参照してください。