요청 제한 문제 및 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-filter 및 rate-limit-by-key 정책에 대해 자세히 알아보세요.
도움을 요청하십시오.
질문이 있거나 도움이 필요한 경우 지원 요청을 생성하거나Azure 커뮤니티 지원에 문의하세요. Azure 피드백 커뮤니티에 제품 피드백을 제출할 수도 있습니다.