다음을 통해 공유


요청 제한 문제 및 HTTP 403 - 금지된 문제

Azure API Management 문제 해결 시리즈의 문서를 참조하는 이 시나리오는 랩의 다섯 번째 시나리오입니다. 이에 따라 랩 설정 지침을 따라 문제를 다시 만들어야 합니다.

원래 제품 버전: API Management 서비스
원래 KB 번호: 4464928

증상

Resources API는 사용자의 개인 정보, 소셜 미디어 게시물, 의견 및 사진을 가져오고 기계 학습 프로젝트에 대해 반환된 응답을 활용합니다. 이상하게도 사용 며칠 후 GetPosts 작업은 HTTP 403을 throw하기 시작했습니다. 다른 작업은 예상대로 제대로 작동하는 반면 사용할 수 없음 오류입니다.

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

위와는 별도로 HTTP 429 - 두 번째 요청마다 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>
    
  • 두 번째 문제(HTTP 429 - 요청이 너무 많음)의 경우 APIM 검사기 추적을 확인하고 모든 범위에서 구현된 '속도 제한' 또는 'rate-limit-by-key' 정책이 있는지 확인하여 동일한 절차를 수행합니다.

  • 유효 정책을 계산하는 경우 전역 범위(예: '모든 API' 옵션의 '인바운드 처리' 아래)에서 구현된 액세스 제한 정책(rate-limit-by-key)을 확인해야 합니다.

    <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-filterrate-limit-by-key 정책에 대해 자세히 알아보세요.

도움을 요청하십시오.

질문이 있거나 도움이 필요한 경우 지원 요청을 생성하거나Azure 커뮤니티 지원에 문의하세요. Azure 피드백 커뮤니티에 제품 피드백을 제출할 수도 있습니다.