次の方法で共有


マネージド ID を使用したイベント配信

この記事では、Azure Event Grid システム トピック、カスタム トピック、またはドメインに マネージド サービス ID を 使用する方法について説明します。 これを使用して、Service Bus キューやトピック、イベント ハブ、ストレージ アカウントなど、サポートされている宛先にイベントを転送します。

[前提条件]

  1. システム割り当て ID またはユーザー割り当て ID をシステム トピック、カスタム トピック、またはドメインに割り当てます。

  2. 宛先 (Service Bus キューなど) 上の適切なロール (Service Bus データ送信者など) に ID を追加します。 詳細な手順については、送信先での Azure ロールへの ID の追加に関するページを参照してください。

    現時点では、 プライベート エンドポイントを使用してイベントを配信することはできません。 詳細については、この記事の最後にある 「プライベート エンドポイント 」セクションを参照してください。

ID を使用するイベント サブスクリプションを作成する

マネージド ID を持つ Event Grid カスタム トピックまたはシステム トピックまたはドメインを作成し、その ID を宛先の適切なロールに追加したら、その ID を使用するサブスクリプションを作成する準備が整います。

Azure ポータルを使用する

イベント サブスクリプションを作成すると、[ ENDPOINT DETAILS ]\(エンドポイントの詳細\) セクションで、エンドポイントに対してシステム割り当て ID またはユーザー割り当て ID の使用を有効にするオプションが表示されます。

Service Bus キューを宛先として使用してイベント サブスクリプションを作成するときに、システム割り当て ID を有効にする例を次に示します。

Service Bus キューのイベント サブスクリプションを作成するときに ID を有効にする方法を示すスクリーンショット。

追加機能タブで、デッドレタリングを行うためのシステムが割り当てたIDの使用を有効にすることもできます。

デッドレタリング用のシステム割り当て ID を有効にする方法を示すスクリーンショット。

イベント サブスクリプションの作成後に、マネージド ID を有効にすることができます。 イベント サブスクリプションの [イベント サブスクリプション] ページで、[追加機能] タブに切り替えてオプションを表示します。 デッドレタリング用のアイデンティティをこのページで有効にすることもできます。

既存のイベント サブスクリプションでシステム割り当て ID を有効にする方法を示すスクリーンショット。

トピックでユーザー割り当て ID を有効にしていた場合は、 マネージド ID の種類のドロップダウン リストにユーザー割り当て ID オプションが有効になっていることがわかります。 [マネージド ID の種類] で [ユーザー割り当て済み] を選択した場合は、イベントの配信に使用するユーザー割り当て ID を選択できます。

イベント サブスクリプションでユーザー割り当て ID を有効にする方法を示すスクリーンショット。

Azure CLI を使用した Service Bus キューの利用

このセクションでは、Azure CLI を使用して、システム割り当て ID を使用して Service Bus キューにイベントを配信できるようにする方法について説明します。 ID は Azure Service Bus データ送信者 ロールのメンバーである必要があります。 また、配信不能処理に使用されるストレージ アカウントのストレージ BLOB データ共同作成者ロールのメンバーである必要もあります。

変数の定義

最初に、CLI コマンドで使用する次の変数の値を指定します。

subid="<AZURE SUBSCRIPTION ID>"
rg = "<RESOURCE GROUP of EVENT GRID CUSTOM TOPIC>"
topicname = "<EVENT GRID TOPIC NAME>"

# get the service bus queue resource id
queueid=$(az servicebus queue show --namespace-name <SERVICE BUS NAMESPACE NAME> --name <QUEUE NAME> --resource-group <RESOURCE GROUP NAME> --query id --output tsv)
sb_esname = "<Specify a name for the event subscription>" 

配信にマネージド ID を使用してイベント サブスクリプションを作成する

このサンプル コマンドでは、エンドポイントの種類が Service Bus キューに設定された Event Grid カスタム トピックのイベント サブスクリプションを作成します。

az eventgrid event-subscription create  
    --source-resource-id /subscriptions/$subid/resourceGroups/$rg/providers/Microsoft.EventGrid/topics/$topicname
    --delivery-identity-endpoint-type servicebusqueue  
    --delivery-identity systemassigned 
    --delivery-identity-endpoint $queueid
    -n $sb_esname 

マネージド ID を使用して、配信とデッドレタリングのためのイベント サブスクリプションを作成する

このサンプル コマンドでは、エンドポイントの種類が Service Bus キューに設定された Event Grid カスタム トピックのイベント サブスクリプションを作成します。 また、システム マネージド ID を配信不能処理に使用することも指定します。

storageid=$(az storage account show --name demoStorage --resource-group gridResourceGroup --query id --output tsv)
deadletterendpoint="$storageid/blobServices/default/containers/<BLOB CONTAINER NAME>"

az eventgrid event-subscription create  
    --source-resource-id /subscriptions/$subid/resourceGroups/$rg/providers/Microsoft.EventGrid/topics/$topicname 
    --delivery-identity-endpoint-type servicebusqueue
    --delivery-identity systemassigned 
    --delivery-identity-endpoint $queueid
    --deadletter-identity-endpoint $deadletterendpoint 
    --deadletter-identity systemassigned 
    -n $sb_esnameq 

Azure CLI の使用 - Event Hubs

このセクションでは、Azure CLI を使用して、システム割り当て ID を使用してイベント ハブにイベントを配信できるようにする方法について説明します。 識別情報はAzure Event Hubs データ送信者ロールのメンバーである必要があります。 また、配信不能処理に使用されるストレージ アカウントのストレージ BLOB データ共同作成者ロールのメンバーである必要もあります。

変数の定義

subid="<AZURE SUBSCRIPTION ID>"
rg = "<RESOURCE GROUP of EVENT GRID CUSTOM TOPIC>"
topicname = "<EVENT GRID CUSTOM TOPIC NAME>"

hubid=$(az eventhubs eventhub show --name <EVENT HUB NAME> --namespace-name <NAMESPACE NAME> --resource-group <RESOURCE GROUP NAME> --query id --output tsv)
eh_esname = "<SPECIFY EVENT SUBSCRIPTION NAME>" 

配信にマネージド ID を使用してイベント サブスクリプションを作成する

このサンプル コマンドでは、エンドポイントの種類が Event Hubs に設定された Event Grid カスタム トピックのイベント サブスクリプションを作成します。

az eventgrid event-subscription create  
    --source-resource-id /subscriptions/$subid/resourceGroups/$rg/providers/Microsoft.EventGrid/topics/$topicname 
    --delivery-identity-endpoint-type eventhub 
    --delivery-identity systemassigned 
    --delivery-identity-endpoint $hubid
    -n $sbq_esname 

配信およびデッドレター処理にマネージド ID を使用してイベントサブスクリプションを作成する

このサンプル コマンドでは、エンドポイントの種類が Event Hubs に設定された Event Grid カスタム トピックのイベント サブスクリプションを作成します。 また、システム マネージド ID を配信不能処理に使用することも指定します。

storageid=$(az storage account show --name demoStorage --resource-group gridResourceGroup --query id --output tsv)
deadletterendpoint="$storageid/blobServices/default/containers/<BLOB CONTAINER NAME>"

az eventgrid event-subscription create
    --source-resource-id /subscriptions/$subid/resourceGroups/$rg/providers/Microsoft.EventGrid/topics/$topicname 
    --delivery-identity-endpoint-type servicebusqueue  
    --delivery-identity systemassigned 
    --delivery-identity-endpoint $hubid
    --deadletter-identity-endpoint $eh_deadletterendpoint
    --deadletter-identity systemassigned 
    -n $eh_esname 

Azure CLI - Azure Storage キューを使用する

このセクションでは、Azure CLI を使用して、システム割り当て ID を使用して Azure Storage キューにイベントを配信できるようにする方法について説明します。 ID は、ストレージ アカウントの ストレージ キュー データ メッセージ送信者 ロールのメンバーである必要があります。 また、配信不能処理に使用されるストレージ アカウントのストレージ BLOB データ共同作成者ロールのメンバーである必要もあります。

変数の定義

subid="<AZURE SUBSCRIPTION ID>"
rg = "<RESOURCE GROUP of EVENT GRID CUSTOM TOPIC>"
topicname = "<EVENT GRID CUSTOM TOPIC NAME>"

# get the storage account resource id
storageid=$(az storage account show --name <STORAGE ACCOUNT NAME> --resource-group <RESOURCE GROUP NAME> --query id --output tsv)

# build the resource id for the queue
queueid="$storageid/queueservices/default/queues/<QUEUE NAME>" 

sa_esname = "<SPECIFY EVENT SUBSCRIPTION NAME>" 

配信にマネージド ID を使用してイベント サブスクリプションを作成する

az eventgrid event-subscription create 
    --source-resource-id /subscriptions/$subid/resourceGroups/$rg/providers/Microsoft.EventGrid/topics/$topicname 
    --delivery-identity-endpoint-type storagequeue  
    --delivery-identity systemassigned 
    --delivery-identity-endpoint $queueid
    -n $sa_esname 

配信およびデッドレター処理にマネージド ID を使用してイベントサブスクリプションを作成する

storageid=$(az storage account show --name demoStorage --resource-group gridResourceGroup --query id --output tsv)
deadletterendpoint="$storageid/blobServices/default/containers/<BLOB CONTAINER NAME>"

az eventgrid event-subscription create  
    --source-resource-id /subscriptions/$subid/resourceGroups/$rg/providers/Microsoft.EventGrid/topics/$topicname 
    --delivery-identity-endpoint-type storagequeue  
    --delivery-identity systemassigned 
    --delivery-identity-endpoint $queueid
    --deadletter-identity-endpoint $deadletterendpoint 
    --deadletter-identity systemassigned 
    -n $sa_esname 

プライベート エンドポイント

現時点では、 プライベート エンドポイントを使用してイベントを配信することはできません。 つまり、配信されたイベント トラフィックがプライベート IP 領域を離れてはならない、厳密なネットワーク分離要件がある場合はサポートされません。

ただし、要件で、暗号化されたチャネルを使用してイベントを送信する方法と、パブリック IP 空間を使用する送信者の既知の ID (この場合は Event Grid) が必要な場合は、この記事に示すように、Azure Event Grid カスタム トピックまたはマネージド ID を持つドメインを使用して、Event Hubs、Service Bus、または Azure Storage サービスにイベントを配信できます。 その後、Azure Functions で構成されたプライベート リンクまたは仮想ネットワークにデプロイされた Webhook を使用して、イベントをプルできます。 チュートリアル「 Azure Functions を使用してプライベート エンドポイントに接続する」を参照してください。

この構成では、トラフィックは Event Grid から Event Hubs、Service Bus、または Azure Storage にパブリック IP/インターネット経由で送信されますが、チャネルは暗号化でき、Event Grid のマネージド ID が使用されます。 プライベート リンク経由で Event Hubs、Service Bus、または Azure Storage を使用するように仮想ネットワークにデプロイされた Azure Functions または Webhook を構成した場合、トラフィックのそのセクションは明らかに Azure 内に留まります。

次のステップ

マネージド ID の詳細については、「 Azure リソースのマネージド ID とは」を参照してください。