要求の調整の問題と HTTP 403 - 禁止されている問題
Azure API Management トラブルシューティング シリーズに関する記事を参照して、これはラボの 5 番目のシナリオです。 問題を再現するには、このに従ってラボのセットアップ手順に従っていることを確認します。
元の製品バージョン: API Management サービス
元の KB 番号: 4464928
現象
Resources API は、ユーザーの個人情報、ソーシャル メディアの投稿、コメント、写真を取得し、機械学習プロジェクトに返された応答を利用します。 奇妙なことに、それを使用して数日後、 GetPosts 操作は HTTP 403 - Forbidden エラーをスローし始めましたが、他の操作は期待どおりに正常に動作しています。
{
"statusCode": 403,
"message": "Forbidden"
}
上記とは別に、 HTTP 429 - 要求が多すぎます 1 秒ごとに GetComments 操作を呼び出しているときにエラーが発生しています。 この問題は 10 秒後に自動的に解決されますが、API の最初の呼び出しが再度行われると繰り返されます。 この動作は、他の操作では観察されません。
{
"statusCode": 429,
"message": "レート制限を超えています。 5 秒後にもう一度やり直してください。
}
トラブルシューティングの手順
アクセス制限ポリシーが実装されていると、HTTP 403 - Forbidden エラーがスローされる可能性があります。
APIM インスペクターのトレースを調べると、特定の IP アドレスやアドレス範囲からの呼び出しをフィルター処理 (許可または拒否) する "ip-filter" ポリシーが存在することがわかるはずです。
"ip-filter" ポリシーのスコープを確認するには、 [有効なポリシーの計算 ] ボタンを選択します。 どのスコープでもアクセス制限ポリシーが実装されていない場合は、関連付けられている製品に移動し、[ポリシー] オプションをクリックして、次の検証手順を製品レベルで実行する必要があります。
<inbound> <base /> <choose> <when condition="@(context.Operation.Name.Equals("GetPosts"))"> <ip-filter action="forbid"> <address-range from="0.0.0.0" to="255.255.255.255" /> </ip-filter> </when> </choose> </inbound>
2 番目の問題 (HTTP 429 - 要求が多すぎます) については、APIM インスペクター トレースを確認し、任意のスコープで 'rate-limit' または 'rate-limit-by-key' ポリシーが実装されているかどうかを確認することで、同じ手順に従います。
有効なポリシーを計算する場合は、アクセス制限ポリシー (キーごとのレート制限) がグローバル スコープで実装されていること、つまり [すべての API] オプションの [受信処理] の下に実装されていることがわかります。
<inbound> <choose> <when condition="@(context.Operation.Name.Equals("GetComments"))"> <rate-limit-by-key calls="1" renewal-period="10" increment-condition="@(context.Response.StatusCode == 200)" counter-key="@(context.Request.IpAddress)" /> </when> </choose> </inbound>
APIM の ip-filter および rate-limit-by-key ポリシーの詳細を確認します。
お問い合わせはこちらから
質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。