Azure Resource Graph 使用時のエラーのトラブルシューティング

Azure Resource Graph を使用して Azure リソースをクエリすると、エラーが発生する場合があります。 この記事では、発生する可能性があるさまざまなエラーと、それらの解決方法について説明します。

エラー詳細の検索

ほとんどのエラーは、Azure Resource Graph を使用したクエリ実行中の問題の結果です。 クエリが失敗すると、SDK は失敗したクエリの詳細を提供します。 この情報から問題が示されるので、問題を解決すれば、次回以降のクエリは成功します。

一般エラー

シナリオ:スロットルされた要求

問題

大量に、または頻繁にリソース クエリを実行するお客様により、要求がスロットルされています。

原因

Azure Resource Graph では、タイム ウィンドウに基づいて各ユーザーにクォータ数が割り当てられます。 たとえば、ユーザーは、5 秒間のウィンドウごとに最大 15 のクエリをスロットルなしで送信できます。 クォータ値は多数の要因によって決定され、変更される可能性があります。 詳細については、Azure Resource Graph のスロットルに関する記事をご覧ください。

解像度

スロットルされた要求を処理する方法はいくつかあります。

シナリオ:サブスクリプションが多すぎる

問題

Azure Lighthouse によるクロステナント サブスクリプションを含め、1,000 を超えるサブスクリプションにアクセスできるお客様は、Azure Resource Graph の 1 回の呼び出しですべてのサブスクリプションにわたってデータをフェッチできません。

原因

Azure CLI と PowerShell は、最初の 1,000 サブスクリプションのみを Azure Resource Graph に転送します。 Azure Resource Graph 用の REST API は、クエリを実行するために最大数のサブスクリプションを受け付けます。

解像度

1,000 サブスクリプションの制限を超えないよう、サブスクリプションのサブセットを使用してクエリ要求をバッチ化します。 ソリューションでは PowerShell の Subscription パラメーターを使用しています。

# Replace this query with your own
$query = 'Resources | project type'

# Fetch the full array of subscription IDs
$subscriptions = Get-AzSubscription
$subscriptionIds = $subscriptions.Id

# Create a counter, set the batch size, and prepare a variable for the results
$counter = [PSCustomObject] @{ Value = 0 }
$batchSize = 1000
$response = @()

# Group the subscriptions into batches
$subscriptionsBatch = $subscriptionIds | Group -Property { [math]::Floor($counter.Value++ / $batchSize) }

# Run the query for each batch
foreach ($batch in $subscriptionsBatch){ $response += Search-AzGraph -Query $query -Subscription $batch.Group }

# View the completed results of the query on all subscriptions
$response

シナリオ:サポートされていない Content-Type REST ヘッダー

問題

Azure Resource Graph REST API クエリを実行すると、500 (内部サーバー エラー) 応答が返される。

原因

Azure Resource Graph REST API がサポートしているのは application/jsonContent-Type だけです。 一部の REST ツールやエージェントの既定値は REST API ではサポートされていない text/plain です。

解決方法

Azure Resource Graph のクエリに使用しているツールまたはエージェントが application/json 用に構成された REST API ヘッダー Content-Type を持っていることを確認します。

シナリオ:リスト内のすべてのサブスクリプションに対する読み取りアクセス許可がない

問題

Azure Resource Graph クエリを使用してサブスクリプションの一覧を明示的に渡すと、403 (禁止) の応答が返される。

原因

指定されたすべてのサブスクリプションに対する読み取りアクセス許可を持っていない場合は、ユーザーに適切なセキュリティ権限がないため、要求は拒否されます。

解像度

そのクエリを実行するユーザーが、少なくとも読み取りアクセス権を持っている 1 つ以上のサブスクリプションを、サブスクリプション一覧に含めます。 詳細については、「Azure Resource Graph でのアクセス許可」を参照してください。

次のステップ

問題がわからなかった場合、または問題を解決できない場合は、次のいずれかのチャネルでサポートを受けてください。

  • Azure フォーラムを通じて Azure エキスパートから回答を得ることができます。
  • @AzureSupport に問い合わせる - Microsoft Azure 公式アカウントです。Azure コミュニティを適切なリソース (回答、サポート、エキスパート) に結び付けることで、カスタマー エクスペリエンスを向上します。
  • さらにヘルプが必要であれば、Azure サポート インシデントを送信できます。 その場合は、 Azure サポートのサイト に移動して、 [サポートの要求] をクリックします。