Apigee 및 Apigee Hybrid 문서입니다.
Apigee Edge 문서 보기
InvalidRLPolicy
오류 코드
policies.resetquota.InvalidRLPolicy
오류 응답 본문
{ "fault": { "faultstring": "Invalid rate limit policy quota_policy_name", "detail": { "errorcode": "policies.resetquota.InvalidRLPolicy" } } }
오류 메시지 예
{
"fault": {
"faultstring": "Invalid rate limit policy MyQuotaPolicy",
"detail": {
"errorcode": "policies.resetquota.InvalidRLPolicy"
}
}
}
원인
이 오류는 할당량 재설정 정책의 <Quota>
요소에 지정된 할당량 정책이 API 프록시에 정의되지 않은 경우에 발생합니다. <Quota>
요소는 필수이며 할당량 재설정 정책을 통해 카운터를 업데이트해야 하는 대상 할당량 정책을 식별합니다. 이 대상 할당량 정책은 동일한 API 프록시 내에서 생성 및 정의되어야 하며 흐름 중에 사용할 수 있어야 합니다.
예를 들어 <Quota>
요소가 아래와 같이 정의되어 있지만 API 프록시에서 MyQuotaPolicy
가 정의되지 않은 경우 위의 오류가 발생합니다.
<Quota name="MyQuotaPolicy">
진단
할당량 재설정 정책에 지정된 잘못된 할당량 정책 이름을 식별합니다. faultstring에서 할당량 정책의 이름을 찾을 수 있습니다. 예를 들어 다음 faultstring에서 할당량 정책 이름은
MyQuotaPolicy:
입니다."faultstring": "Invalid rate limit policy MyQuotaPolicy"
오류가 발생한 API 프록시의 각 할당량 재설정 정책을 확인합니다. 필수 요소
<Quota>
내에 지정된 할당량 정책이 위의 1단계에서 식별한 이름과 일치하는 특정 재설정 할당량 정책을 식별합니다.예를 들어 다음 할당량 재설정 정책은 faultstring에 있는 이름과 일치하는
MyQuotaPolicy
라는 할당량 정책을 지정합니다.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ResetQuota async="false" continueOnError="false" enabled="true" name="Reset_Quota_Demo"> <DisplayName>Reset_Quota_Demo</DisplayName> <Properties/> <Quota name="MyQuotaPolicy"> <Identifier name="identifierName" ref="request.header.identifier"> <Allow>100</Allow> </Identifier> </Quota> </ResetQuota>
이 할당량 정책이 동일한 API 프록시 내에서 생성 및 정의되었는지 확인합니다. 할당량 정책이 동일한 API 프록시 내에 존재하지 않는다면, 이는 오류의 원인이 됩니다.
위의 예시에서 할당량 재설정 정책
Reset_Quota_Demo
가 실행되기 전에 할당량 정책MyQuotaPolicy
는 흐름에 있어야 합니다.흐름에 할당량 정책
MyQuotaPolicy
가 존재하지 않으므로 다음의 오류 코드가 수신됩니다.
"errorcode": "policies.resetquota.InvalidRLPolicy"
해결 방법
<Quota>
요소에 선언된 할당량 정책이 API 프록시에 정의되어 있는지 확인합니다. 할당량 재설정 정책이 실행될 때 이 대상 할당량 정책을 사용할 수 있어야 합니다.
FailedToResolveAllowCountRef
오류 코드
policies.resetquota.FailedToResolveAllowCountRef
오류 응답 본문
Failed to resolve allow count reference reference_name for identifier identifier_name in ResetQuotaStepDefinition:policy_name;API Proxy:proxy_name;Revision: revision_number;Environment:env_name;Organization:org_name
오류 메시지 예
Failed to resolve allow count reference request.header.allowcount for identifier
identifierName in ResetQuotaStepDefinition:ResetQuota;API Proxy:Reset_Quota;
Revision:10;Environment:test;Organization:demo
참고: 위의 오류 메시지는 클라이언트에 응답으로 전송되지 않습니다. Trace 도구에서만 할당량 재설정 정책의 오류로 표시됩니다. 샘플 스크린샷은 아래에 나와 있습니다.
클라이언트에 반환되는 오류는 다음과 같습니다. policies.ratelimit.QuotaViolation
원인
이 오류는 정책의 <Allow>
요소에서 허용 횟수를 포함하는 변수에 대한 참조를 값으로 확인할 수 없는 경우에 발생합니다. 이 요소는 필수이며 줄일 할당량 카운터의 양을 지정합니다.
진단
오류가 발생한 할당량 재설정 정책과 확인할 수 없는 참조 변수의 이름을 식별합니다. 이러한 두 항목은 모두 오류 응답에서 찾을 수 있습니다.
예를 들어 다음 faultstring에서 정책 이름은
ResetQuota
이고 참조는request.header.allowcount
입니다.Failed to resolve allow count reference request.header.allowcount for identifier identifierName in ResetQuotaStepDefinition:ResetQuota;API Proxy:Reset_Quota; Revision:10;Environment:test;Organization:demo
실패한 할당량 정책 XML에서, 사용된 참조 변수의 이름이 오류 응답(위의 1단계)에서 식별된 참조 이름과 일치하는지 확인합니다.
예를 들어 다음 정책은 오류에서 식별된 이름과 일치하는
request.header.allowcount
라는 참조로 요소를 설정합니다.<ResetQuota async="false" continueOnError="false" enabled="true" name="ResetQuota"> <DisplayName>ResetQuota</DisplayName> <Properties/> <Quota name="MyQuotaPolicy"> <Identifier name="identifierName"> <Allow ref="request.header.allowcount"/> </Identifier> </Quota> </ResetQuota>
참조 변수가 정의되어 있으며 할당량 재설정 정책이 실행되는 흐름에서 사용할 수 있는지 확인합니다.
변수가 다음 중 하나인 경우
- 범위를 벗어난 경우(정책이 실행 중인 특정 흐름에서 사용할 수 없음)
- 확인할 수 없는 경우(정의되지 않음)
이는 오류의 원인이 됩니다.
위의 예시에서
<Allow>
요소의 허용 횟수 값은 allowcount라는 요청 헤더에서 가져와야 합니다. 하지만 Apigee는 request.header.allowcount를 확인할 수 없습니다. 이 문제는 헤더 allowcount가 API 요청의 일부로 전달되지 않은 경우에 발생합니다.다음은 헤더 allowcount를 요청의 일부로 전달하지 않는 샘플 API 요청입니다.
curl -v http://your_host_alias/v1/reset_quota -H "Content-Type: application/json"
여기서 your_host_alias는 재정의 파일의
virtualhosts.hostAliases
속성에 구성된 대로 API에 액세스하는 데 사용되는 공개 도메인입니다. 구성 재정의 지정을 참조하세요.헤더 allowcount는 요청의 일부로 전달되지 않으므로, 위의 할당량 재설정 정책의 요소
<Allow>
에서 사용된 변수 request.header.allowcount는 정의되지 않고 확인할 수 없습니다. 따라서 다음과 같은 오류 응답이 수신됩니다.Failed to resolve allow count reference request.header.allowcount for identifier identifierName in ResetQuotaStepDefinition:ResetQuota;API Proxy:Reset_Quota; Revision:10;Environment:test;Organization:demo
해결 방법
<Allow>
요소에서 참조된 변수가 존재하거나 정의되었으며 이를 할당량 재설정 정책이 실행되는 특정 흐름에서 사용 가능한지 확인합니다.
위에 표시된 예시를 수정하려면 아래와 같이 요청에 allowcount 헤더가 포함되도록 요청을 수정하면 됩니다.
curl -v http://your_host_alias/v1/reset_quota -H "Content-Type: application/json" -H "allowcount:30"
여기서 your_host_alias는 재정의 파일의 virtualhosts.hostAliases
속성에 구성된 대로 API에 액세스하는 데 사용되는 공개 도메인입니다.
구성 재정의 지정을 참조하세요.
FailedToResolveRLPolicy
오류 코드
policies.resetquota.FailedToResolveRLPolicy
오류 응답 본문
{
"fault": {
"faultstring": "Failed to resolve rate limit policy",
"detail": {
"errorcode": "policies.resetquota.FailedToResolveRLPolicy"
}
}
}
오류 메시지 예
{
"fault": {
"faultstring": "Failed to resolve rate limit policy",
"detail": {
"errorcode": "policies.resetquota.FailedToResolveRLPolicy"
}
}
}
원인
이 오류는 <Quota>
요소의 ref
속성에서 참조한 변수를 확인할 수 없을 때 발생합니다.
예를 들어 ref
속성이 <Quota>
요소에서 request.header.quotapolicy
로 설정되었지만 API 프록시 흐름에서 사용할 수 없는 경우 위의 오류가 발생합니다.
<Quota ref="request.header.quotapolicy">
진단
오류가 발생한 API 프록시의 할당량 재설정 정책을 검토하고
<Quota>
요소에 지정된 참조 변수의 이름을 제대로 확인할 수 없는 할당량 재설정 정책을 확인합니다.변수가 정의되어 있으며 할당량 재설정 정책이 실행되는 흐름에서 사용할 수 있는지 확인합니다.
변수가 다음 중 하나인 경우
- 범위를 벗어난 경우(정책이 실행되는 특정 흐름에서 사용할 수 없음)
- 확인할 수 없는 경우(정의되지 않음)
이는 오류의 원인이 됩니다.
아래 예시에서 대상 할당량 정책의 이름은 quotapolicy라는 요청 헤더에서 가져와야 합니다. 하지만 Apigee는 request.header.quotapolicy를 확인할 수 없습니다. 이 문제는 헤더 quotapolicy가 API 요청의 일부로 전달되지 않은 경우에 발생합니다.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ResetQuota async="false" continueOnError="false" enabled="true" name="Reset_Quota_Demo"> <DisplayName>Reset_Quota_Demo</DisplayName> <Properties/> <Quota ref="request.header.quotapolicy"> <Identifier name="identifierName" ref="request.header.identifier"> <Allow>100</Allow> </Identifier> </Quota> </ResetQuota>
다음은 헤더 quotapolicy를 요청의 일부로 전달하지 않는 샘플 API 요청입니다.
curl -v http://your_host_alias/v1/reset_quota -H "Content-Type: application/json"
여기서 your_host_alias는 재정의 파일의
virtualhosts.hostAliases
속성에 구성된 대로 API에 액세스하는 데 사용되는 공개 도메인입니다. 구성 재정의 지정을 참조하세요.헤더 quotapolicy는 요청의 일부로 전달되지 않으므로, 위의 할당량 재설정 정책의 요소
<Quota>
에서 사용된 참조 request.header.quotapolicy는 정의되지 않고 확인할 수 없습니다. 따라서 다음과 같은 오류 응답이 수신됩니다."errorcode": "policies.resetquota.FailedToResolveRLPolicy"
해결 방법
<Quota>
요소에 참조된 속성 ref
가 런타임 시 확인되고 할당량 재설정 정책이 실행되는 특정 흐름에서 사용 가능한지 확인합니다.
위에 표시된 예시를 수정하려면 아래와 같이 요청에 quotapolicy 헤더가 포함되도록 요청을 수정하면 됩니다.
curl -v http://your_host_alias/v1/reset_quota -H "Content-Type: application/json" -H "quotapolicy:MyQuotaPolicy"
여기서 your_host_alias는 재정의 파일의 virtualhosts.hostAliases
속성에 구성된 대로 API에 액세스하는 데 사용되는 공개 도메인입니다.
구성 재정의 지정을 참조하세요.