Resource Manager の要求のスロットルThrottling Resource Manager requests

Resource Manager では、Azure のサブスクリプションおよびテナントごとに、最大で 1 時間あたり 12,000 件の読み取り要求と 1 時間あたり 1,200 件の書き込み要求が許可されています。For each Azure subscription and tenant, Resource Manager allows up to 12,000 read requests per hour and 1,200 write requests per hour. これらの制限は、要求を行うプリンシパル ID と、サブスクリプション ID またはテナント ID の範囲に設定されます。These limits are scoped to the principal ID making the requests and the subscription ID or tenant ID. 複数のプリンシパル ID から要求が発信されると、サブスクリプションまたはテナント全体の制限は、1 時間あたり 12,000 件および 1,200 件を超えます。If your requests come from more than one principal ID, your limit across the subscription or tenant is greater than 12,000 and 1,200 per hour.

要求は、サブスクリプションまたはテナントに適用されます。Requests are applied to either your subscription or your tenant. サブスクリプション要求 (サブスクリプション内のリソース グループの取得など) では、サブスクリプション ID を渡す必要があります。Subscription requests are ones the involve passing your subscription ID, such as retrieving the resource groups in your subscription. テナント要求 (有効な Azure の場所の取得など) には、サブスクリプション ID は含まれません。Tenant requests don't include your subscription ID, such as retrieving valid Azure locations.

これらの制限は、各 Azure Resource Manager インスタンスに適用されます。These limits apply to each Azure Resource Manager instance. すべての Azure リージョンに複数のインスタンスがあり、Azure Resource Manager はすべての Azure リージョンにデプロイされます。There are multiple instances in every Azure region, and Azure Resource Manager is deployed to all Azure regions. このため、ユーザーの要求は、通常は多数の異なるインスタンスによって処理されるため、実際の上限はこれらの制限よりも大幅に高くなります。So, in practice, limits are effectively much higher than these limits, as user requests are usually serviced by many different instances.

アプリケーションまたはスクリプトがこれらの上限に達した場合、要求をスロットルする必要があります。If your application or script reaches these limits, you need to throttle your requests. この記事では、上限に達する前に残りの要求数を確認する方法と、上限に達したときの対処方法について説明します。This article shows you how to determine the remaining requests you have before reaching the limit, and how to respond when you've reached the limit.

上限に達すると、HTTP 状態コード 429 Too many requests が返されます。When you reach the limit, you receive the HTTP status code 429 Too many requests.

注意

この記事は、新しい Azure PowerShell Az モジュールを使用するために更新されました。This article has been updated to use the new Azure PowerShell Az module. Az モジュールと AzureRM の互換性の詳細については、「Introducing the new Azure PowerShell Az module (新しい Azure PowerShell Az モジュールの概要)」を参照してください。To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. インストール手順については、Azure PowerShell のインストール を参照してください。For installation instructions, see Install Azure PowerShell.

残りの要求数Remaining requests

残りの要求数を確認するには、応答ヘッダーを調べます。You can determine the number of remaining requests by examining response headers. 読み取り要求では、残りの読み取り要求数の値がヘッダーに返されます。Read requests return a value in the header for the number of remaining read requests. 書き込み要求には、残りの書き込み要求数の値が含まれます。Write requests include a value for the number of remaining write requests. これらの値を確認できる応答ヘッダーを次の表に示します。The following table describes the response headers you can examine for those values:

応答ヘッダーResponse header 説明Description
x-ms-ratelimit-remaining-subscription-readsx-ms-ratelimit-remaining-subscription-reads サブスクリプション スコープの残りの読み取り要求数。Subscription scoped reads remaining. この値は読み取り操作で返されます。This value is returned on read operations.
x-ms-ratelimit-remaining-subscription-writesx-ms-ratelimit-remaining-subscription-writes サブスクリプション スコープの残りの書き込み要求数。Subscription scoped writes remaining. この値は書き込み操作で返されます。This value is returned on write operations.
x-ms-ratelimit-remaining-tenant-readsx-ms-ratelimit-remaining-tenant-reads テナント スコープの残りの読み取り要求数。Tenant scoped reads remaining
x-ms-ratelimit-remaining-tenant-writesx-ms-ratelimit-remaining-tenant-writes テナント スコープの残りの書き込み要求数。Tenant scoped writes remaining
x-ms-ratelimit-remaining-subscription-resource-requestsx-ms-ratelimit-remaining-subscription-resource-requests サブスクリプション スコープの残りのリソースの種類の要求数。Subscription scoped resource type requests remaining.

このヘッダー値は、サービスが既定の上限をオーバーライドした場合にのみ返されます。This header value is only returned if a service has overridden the default limit. Resource Manager は、サブスクリプションの読み取り要求数または書き込み要求数の代わりにこの値を追加します。Resource Manager adds this value instead of the subscription reads or writes.
x-ms-ratelimit-remaining-subscription-resource-entities-readx-ms-ratelimit-remaining-subscription-resource-entities-read サブスクリプション スコープの残りのリソースの種類収集要求数。Subscription scoped resource type collection requests remaining.

このヘッダー値は、サービスが既定の上限をオーバーライドした場合にのみ返されます。This header value is only returned if a service has overridden the default limit. この値は、残りの収集要求数 (リソースのリストの取得) を示します。This value provides the number of remaining collection requests (list resources).
x-ms-ratelimit-remaining-tenant-resource-requestsx-ms-ratelimit-remaining-tenant-resource-requests テナント スコープの残りのリソースの種類の要求数。Tenant scoped resource type requests remaining.

このヘッダーはテナント レベルの要求専用であり、サービスが既定の上限をオーバーライドした場合にのみ追加されます。This header is only added for requests at tenant level, and only if a service has overridden the default limit. Resource Manager は、テナントの読み取り要求数または書き込み要求数の代わりにこの値を追加します。Resource Manager adds this value instead of the tenant reads or writes.
x-ms-ratelimit-remaining-tenant-resource-entities-readx-ms-ratelimit-remaining-tenant-resource-entities-read テナント スコープの残りのリソースの種類収集要求数。Tenant scoped resource type collection requests remaining.

このヘッダーはテナント レベルの要求専用であり、サービスが既定の上限をオーバーライドした場合にのみ追加されます。This header is only added for requests at tenant level, and only if a service has overridden the default limit.

ヘッダー値の取得Retrieving the header values

コードまたはスクリプトでこれらのヘッダー値を取得する方法は、任意のヘッダー値を取得する方法と変わりはありません。Retrieving these header values in your code or script is no different than retrieving any header value.

たとえば、C# では、次のコードを使用して response という名前の HttpWebResponse オブジェクトからヘッダー値を取得します。For example, in C#, you retrieve the header value from an HttpWebResponse object named response with the following code:

response.Headers.GetValues("x-ms-ratelimit-remaining-subscription-reads").GetValue(0)

PowerShell では、Invoke-WebRequest 操作からヘッダー値を取得します。In PowerShell, you retrieve the header value from an Invoke-WebRequest operation.

$r = Invoke-WebRequest -Uri https://management.azure.com/subscriptions/{guid}/resourcegroups?api-version=2016-09-01 -Method GET -Headers $authHeaders
$r.Headers["x-ms-ratelimit-remaining-subscription-reads"]

詳細な PowerShell の例については、サブスクリプションの Resource Manager の制限を確認する方法に関するページを参照してください。For a complete PowerShell example, see Check Resource Manager Limits for a Subscription.

デバッグのために残りの要求数を確認する場合は、PowerShell コマンドレットで -Debug パラメーターを指定します。If you want to see the remaining requests for debugging, you can provide the -Debug parameter on your PowerShell cmdlet.

Get-AzResourceGroup -Debug

次の応答値を含む多くの値が返されます。Which returns many values, including the following response value:

DEBUG: ============================ HTTP RESPONSE ============================

Status Code:
OK

Headers:
Pragma                        : no-cache
x-ms-ratelimit-remaining-subscription-reads: 11999

書き込み制限数を取得するには、書き込み操作を使用します。To get write limits, use a write operation:

New-AzResourceGroup -Name myresourcegroup -Location westus -Debug

次の値を含む多くの値が返されます。Which returns many values, including the following values:

DEBUG: ============================ HTTP RESPONSE ============================

Status Code:
Created

Headers:
Pragma                        : no-cache
x-ms-ratelimit-remaining-subscription-writes: 1199

Azure CLI では、より詳細なオプションを使用してヘッダー値を取得します。In Azure CLI, you retrieve the header value by using the more verbose option.

az group list --verbose --debug

次の値を含む多くの値が返されます。Which returns many values, including the following values:

msrest.http_logger : Response status: 200
msrest.http_logger : Response headers:
msrest.http_logger :     'Cache-Control': 'no-cache'
msrest.http_logger :     'Pragma': 'no-cache'
msrest.http_logger :     'Content-Type': 'application/json; charset=utf-8'
msrest.http_logger :     'Content-Encoding': 'gzip'
msrest.http_logger :     'Expires': '-1'
msrest.http_logger :     'Vary': 'Accept-Encoding'
msrest.http_logger :     'x-ms-ratelimit-remaining-subscription-reads': '11998'

書き込み制限数を取得するには、書き込み操作を使用します。To get write limits, use a write operation:

az group create -n myresourcegroup --location westus --verbose --debug

次の値を含む多くの値が返されます。Which returns many values, including the following values:

msrest.http_logger : Response status: 201
msrest.http_logger : Response headers:
msrest.http_logger :     'Cache-Control': 'no-cache'
msrest.http_logger :     'Pragma': 'no-cache'
msrest.http_logger :     'Content-Length': '163'
msrest.http_logger :     'Content-Type': 'application/json; charset=utf-8'
msrest.http_logger :     'Expires': '-1'
msrest.http_logger :     'x-ms-ratelimit-remaining-subscription-writes': '1199'

次の要求を送信するまでの待機Waiting before sending next request

要求の上限に達すると、Resource Manager は HTTP 状態コード 429 とヘッダー値 Retry-After を返します。When you reach the request limit, Resource Manager returns the 429 HTTP status code and a Retry-After value in the header. Retry-After 値は、アプリケーションが次の要求を送信するまでに待機 (またはスリープ) する必要がある時間 (秒数) を示します。The Retry-After value specifies the number of seconds your application should wait (or sleep) before sending the next request. この再試行値が経過する前に要求を送信した場合、要求は処理されず、新しい再試行値が返されます。If you send a request before the retry value has elapsed, your request isn't processed and a new retry value is returned.

次の手順Next steps