要求調整の問題と HTTP 403 - 禁止された問題

Azure API Management トラブルシューティング シリーズに関する記事を参照して、これはラボの 5 番目のシナリオです。 問題を再現するには、 この手順に従ってラボのセットアップ手順に従っていることを確認します。

元の製品バージョン: API Management サービス
元の KB 番号: 4464928

現象

Resources API は、ユーザーの個人情報、ソーシャル メディアの投稿、コメント、写真を取得し、機械学習プロジェクトに返される応答を利用します。 奇妙なことに、それを使用して数日後に、 GetPosts 操作は HTTP 403 - 禁止 エラーをスローし始めましたが、他の操作は期待どおりに正常に動作しています。

{
"statusCode": 403,
"message": "Forbidden"
}

上記とは別に、 HTTP 429 も発生しています。1 秒ごとに GetComments 操作を呼び出すときに要求エラーが多すぎます。 この問題は 10 秒後に自動的に解決されますが、API の最初の呼び出しが再度行われると再発します。 動作は、他の操作では観察されません。

{
"statusCode": 429,
"message": "レート制限を超えています。 5 秒でもう一度やり直してください。
}

トラブルシューティングの手順

  • HTTP 403 - アクセス制限ポリシーが実装されている場合、禁止エラーがスローされる可能性があります。

  • 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 ポリシーと キーごとのレート制限 ポリシーの詳細を参照してください。

お問い合わせはこちらから

質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。