次の方法で共有


配信不能な場所の設定と再試行ポリシー

イベント サブスクリプションの作成時には、イベント配信の設定をカスタマイズできます。 この記事では、配信不能の場所の設定方法と、再試行の設定のカスタマイズ方法を示します。 これらの機能については、「Event Grid によるメッセージの配信と再試行」をご覧ください。

注意

メッセージの配信、再試行、配信不能の詳細については、「Event Grid によるメッセージの配信と再試行」を参照してください。

配信不能の場所の設定

配信不能の場所を設定するには、エンドポイントに配信できなかったイベントを保持するためストレージ アカウントが必要です。 この例では、既存のストレージ アカウントのリソース ID を取得します。 ここでは、配信不能エンドポイント用にそのストレージ アカウント内のコンテナーを使用するイベント サブスクリプションを作成します。

この記事のコマンドを実行する前に、ストレージ アカウントを作成し、ストレージに BLOB コンテナーを作成する必要があります。 Event Grid によってこのコンテナーに BLOB が作成されます。 BLOB の名前には、Event Grid サブスクリプションの名前をすべて大文字にしたものが含まれます。 たとえば、サブスクリプションの名前が My-Blob-Subscription の場合、配信不能 BLOB の名前には MY-BLOB-SUBSCRIPTION が含まれます (myblobcontainer/MY-BLOB-SUBSCRIPTION/2019/8/8/5/111111111-1111-1111-1111-111111111111.json)。 この動作は、Azure サービス間での大文字と小文字の処理の違いから保護するためのものです。 この例の .../2019/8/8/5/... は、0 が埋め込まれていない日付と時刻 (UTC) を表します: .../YYYY/MM/DD/HH/...。 作成された配信不能 BLOB には、1 つ以上のイベントの配列が含まれます。これは、配信不能を処理する際に考慮すべき重要な動作です。

Azure portal

イベント サブスクリプションの作成時に、次の図に示すように、[追加機能] タブで配信不能を有効にできます。 この機能を有効にした後、配信不能イベントを保持する BLOB コンテナーと、BLOB ストレージを持つ Azure サブスクリプションを指定します。

必要に応じて、配信不能に対するシステム割り当てマネージド ID またはユーザー割り当てマネージド ID を有効にできます。 マネージド ID は、ストレージへのイベントの書き込みを許可する「ロールベースのアクセス制御 (RBAC) ロール」のメンバーである必要があります。

イベント サブスクリプションの配信不能構成を示すスクリーンショット。

配信不能を有効にして、既存のイベント サブスクリプション設定の構成もできます。 イベント サブスクリプションの [イベント サブスクリプション] ページで、[追加機能] タブに切り替えて、次の図に示すように配信不能設定を表示します。

既存のイベント サブスクリプションの配信不能構成を示すスクリーンショット。

Azure CLI

containername=testcontainer

topicid=$(az eventgrid topic show --name demoTopic -g gridResourceGroup --query id --output tsv)
storageid=$(az storage account show --name demoStorage --resource-group gridResourceGroup --query id --output tsv)

az eventgrid event-subscription create \
  --source-resource-id $topicid \
  --name <event_subscription_name> \
  --endpoint <endpoint_URL> \
  --deadletter-endpoint $storageid/blobServices/default/containers/$containername

配信不能処理を無効にするには、コマンドを再実行してイベント サブスクリプションを作成しますが、deadletter-endpoint の値は指定しないでください。 イベント サブスクリプションを削除する必要はありません。

Note

ローカル コンピューターで Azure CLI をお使いの場合は、Azure CLI バージョン 2.0.56 以降を使ってください。 Azure CLI の最新バージョンをインストールする手順については、「Azure CLI のインストール」を参照してください。

PowerShell

$containername = "testcontainer"

$topicid = (Get-AzEventGridTopic -ResourceGroupName gridResourceGroup -Name demoTopic).Id
$storageid = (Get-AzStorageAccount -ResourceGroupName gridResourceGroup -Name demostorage).Id

New-AzEventGridSubscription `
  -ResourceId $topicid `
  -EventSubscriptionName <event_subscription_name> `
  -Endpoint <endpoint_URL> `
  -DeadLetterEndpoint "$storageid/blobServices/default/containers/$containername"

配信不能処理を無効にするには、コマンドを再実行してイベント サブスクリプションを作成しますが、DeadLetterEndpoint の値は指定しないでください。 イベント サブスクリプションを削除する必要はありません。

Note

ローカル コンピューターで Azure PowerShell をお使いの場合は、Azure PowerShell バージョン 1.1.0 以降を使ってください。 Azure のダウンロード サイトから最新の Azure PowerShell をダウンロードしてインストールしてください。

再試行ポリシーの設定

Event Grid サブスクリプションの作成時には、Event Grid がイベント配信を試行する期間の値を設定できます。 既定では、Event Grid は 24 時間 (1,440 分) または 30 回試行します。 Event Grid サブスクリプションには、これらの値のいずれかを設定できます。 イベントの有効期限の値は 1 から 1440 までの整数にする必要があります。 最大再試行回数は 1 から 30 までの整数にする必要があります。

再試行のスケジュールを構成することはできません。

Azure portal

イベント サブスクリプションの作成時に、[追加機能] タブで再試行ポリシー設定を構成できます。

イベント サブスクリプションの再試行ポリシー構成を示すスクリーンショット。

既存のイベント サブスクリプションの再試行ポリシー設定の構成もできます。 イベント サブスクリプションの [イベント サブスクリプション] ページで、[追加機能] タブに切り替えて、次の図に示すように再試行ポリシー設定を表示します。

既存のイベント サブスクリプションの再試行ポリシー構成を示すスクリーンショット。

Azure CLI

イベントの Time to Live を 1440 分以外の値に設定するには、次のコマンドを使用します。

az eventgrid event-subscription create \
  -g gridResourceGroup \
  --topic-name <topic_name> \
  --name <event_subscription_name> \
  --endpoint <endpoint_URL> \
  --event-ttl 720

最大再試行回数を 30 以外の値に設定するには、次のコマンドを使用します。

az eventgrid event-subscription create \
  -g gridResourceGroup \
  --topic-name <topic_name> \
  --name <event_subscription_name> \
  --endpoint <endpoint_URL> \
  --max-delivery-attempts 18

注意

event-ttlmax-deliver-attempts の両方を設定した場合、Event Grid は期限切れについて最初の設定を使用して、イベント配信を停止するタイミングを判別します。 たとえば、Time-to-live (TTL) を 30 分に設定し、配信の最大試行回数を 5 回に設定したとします。 イベントは、30 分経っても、または 5 回試しても (どちらか先の方) 配信されない場合、配信不能になります。 指数的再試行スケジュールでは、最大配信試行回数を 10 に設定した場合、30 分の TTL に達する前に最大で 6 回配信が試みられます。したがって、最大試行回数を 10 に設定しても、この場合は影響を受けず、イベントは 30 分後に配信不能になります。

PowerShell

イベントの Time to Live を 1440 分以外の値に設定するには、次のコマンドを使用します。

$topicid = (Get-AzEventGridTopic -ResourceGroupName gridResourceGroup -Name demoTopic).Id

New-AzEventGridSubscription `
  -ResourceId $topicid `
  -EventSubscriptionName <event_subscription_name> `
  -Endpoint <endpoint_URL> `
  -EventTtl 720

最大再試行回数を 30 以外の値に設定するには、次のコマンドを使用します。

$topicid = (Get-AzEventGridTopic -ResourceGroupName gridResourceGroup -Name demoTopic).Id

New-AzEventGridSubscription `
  -ResourceId $topicid `
  -EventSubscriptionName <event_subscription_name> `
  -Endpoint <endpoint_URL> `
  -MaxDeliveryAttempt 18

注意

event-ttlmax-deliver-attempts の両方を設定した場合、Event Grid は期限切れについて最初の設定を使用して、イベント配信を停止するタイミングを判別します。 たとえば、Time-to-live (TTL) を 30 分に設定し、配信の最大試行回数を 5 回に設定したとします。 イベントは、30 分経っても、または 5 回試しても (どちらか先の方) 配信されない場合、配信不能になります。 指数的再試行スケジュールでは、最大配信試行回数を 10 に設定した場合、30 分の TTL に達する前に最大で 6 回配信が試みられます。したがって、最大試行回数を 10 に設定しても、この場合は影響を受けず、イベントは 30 分後に配信不能になります。