Bạn đang xem tài liệu về Apigee Edge.
Truy cập vào
tài liệu về Apigee X. thông tin
InvalidRLPolicy
Mã lỗi
policies.resetquota.InvalidRLPolicy
Nội dung phản hồi lỗi
{ "fault": { "faultstring": "Invalid rate limit policy quota_policy_name", "detail": { "errorcode": "policies.resetquota.InvalidRLPolicy" } } }
Thông báo lỗi mẫu
{
"fault": {
"faultstring": "Invalid rate limit policy MyQuotaPolicy",
"detail": {
"errorcode": "policies.resetquota.InvalidRLPolicy"
}
}
}
Nguyên nhân
Lỗi này xảy ra nếu Chính sách hạn mức được chỉ định trong phần tử <Quota>
của chính sách Đặt lại hạn mức không được xác định trong proxy API. Phần tử <Quota>
là bắt buộc và xác định chính sách Hạn mức mục tiêu có bộ đếm cần được cập nhật thông qua chính sách Đặt lại hạn mức. Chính sách về hạn mức mục tiêu này phải được tạo và xác định trong cùng một proxy API, đồng thời phải có sẵn trong quy trình.
Ví dụ: giả sử phần tử <Quota>
được xác định như dưới đây, nhưng nếu MyQuotaPolicy
không được xác định trong Proxy API, thì bạn sẽ gặp lỗi trên.
<Quota name="MyQuotaPolicy">
Chẩn đoán
Xác định tên chính sách Hạn mức không hợp lệ được chỉ định trong chính sách Đặt lại hạn mức. Bạn có thể xem tên của chính sách Hạn mức trên chuỗi lỗi. Ví dụ: trong chuỗi lỗi sau đây, tên chính sách Hạn mức là
MyQuotaPolicy:
"faultstring": "Invalid rate limit policy MyQuotaPolicy"
Kiểm tra từng chính sách Đặt lại hạn mức trong Proxy API nơi xảy ra lỗi. Xác định chính sách Đặt lại hạn mức cụ thể, trong đó chính sách về Hạn mức được chỉ định trong phần tử bắt buộc
<Quota>
khớp với tên đã xác định trong Bước 1 ở trên.Ví dụ: Chính sách đặt lại hạn mức sau đây chỉ định một Chính sách hạn mức có tên là
MyQuotaPolicy
, khớp với nội dung trong faultstring:<?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>
Xác định xem Chính sách hạn mức này có được tạo và xác định trong cùng một proxy API hay không. Nếu chính sách Hạn mức không tồn tại trong cùng một proxy API, thì đó là nguyên nhân gây ra lỗi.
Trong ví dụ ở trên, Chính sách hạn mức
MyQuotaPolicy
phải tồn tại trong luồng trước khi Chính sách đặt lại hạn mứcReset_Quota_Demo
thực thi.Vì Chính sách hạn mức
MyQuotaPolicy
không tồn tại trong luồng, nên bạn sẽ nhận được mã lỗi:
"errorcode": "policies.resetquota.InvalidRLPolicy"
Độ phân giải
Đảm bảo rằng Chính sách hạn mức được khai báo trong phần tử <Quota>
được xác định trong proxy API. Chính sách Hạn mức mục tiêu này phải có sẵn khi chính sách Đặt lại hạn mức thực thi.
FailedToResolveAllowCountRef
Mã lỗi
policies.resetquota.FailedToResolveAllowCountRef
Nội dung phản hồi lỗi
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
Ví dụ về thông báo lỗi
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
Lỗi được trả về cho ứng dụng khách sẽ chỉ là: policies.ratelimit.QuotaViolation
.
Nguyên nhân
Lỗi này xảy ra nếu không thể phân giải tham chiếu đến biến chứa số lượng cho phép trong phần tử <Allow>
của chính sách thành một giá trị. Phần tử này là bắt buộc và quy định số tiền cần giảm bộ đếm hạn mức.
Chẩn đoán
Xác định chính sách Đặt lại hạn mức đã xảy ra lỗi và tên của biến tham chiếu không thể giải quyết được. Bạn có thể tìm thấy cả hai mục này trong phản hồi lỗi.
Ví dụ: trong chuỗi lỗi sau, tên chính sách là
ResetQuota
và dữ liệu tham chiếu là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
Trong tệp XML của chính sách Đặt lại hạn mức không thành công, hãy xác minh rằng tên của biến tham chiếu được dùng khớp với tên tham chiếu đã xác định trong phản hồi lỗi (Bước 1 ở trên).
Ví dụ: chính sách sau đây đặt phần tử có tham chiếu tên là
request.header.allowcount
khớp với nội dung trong lỗi:<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>
Xác định xem biến tham chiếu có được xác định và có trong luồng mà chính sách Đặt lại hạn mức thực thi hay không.
Nếu biến là:
- nằm ngoài phạm vi (không có trong luồng cụ thể mà chính sách đang được thực thi) hoặc
- không thể giải quyết (không xác định)
thì đó là nguyên nhân gây ra lỗi.
Trong ví dụ ở trên, giá trị của số lượng được phép trong phần tử
<Allow>
được giả định là được truy xuất từ tiêu đề yêu cầu có tên allowcount. Tuy nhiên, Edge không thể phân giải request.header.allowcount. Điều này xảy ra nếu tiêu đề allowcount không được chuyển như một phần của yêu cầu API.Dưới đây là một yêu cầu API mẫu không truyền tiêu đề allowcount trong yêu cầu:
curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json"
Vì tiêu đề allowcount không được truyền trong yêu cầu, nên biến request.header.allowcount dùng trong phần tử
<Allow>
trong chính sách Đặt lại hạn mức ở trên không được xác định và do đó không thể phân giải. Vì vậy, bạn sẽ nhận được phản hồi lỗi: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
Độ phân giải
Đảm bảo rằng biến được tham chiếu trong phần tử <Allow>
tồn tại/được xác định và có trong luồng cụ thể, nơi chính sách Đặt lại hạn mức thực thi.
Để sửa ví dụ ở trên, bạn có thể sửa đổi yêu cầu để thêm tiêu đề allowcount như sau:
curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json" -H "allowcount:30"
FailedToResolveRLPolicy
Mã lỗi
policies.resetquota.FailedToResolveRLPolicy
Nội dung phản hồi lỗi
{
"fault": {
"faultstring": "Failed to resolve rate limit policy",
"detail": {
"errorcode": "policies.resetquota.FailedToResolveRLPolicy"
}
}
}
Thông báo lỗi mẫu
{
"fault": {
"faultstring": "Failed to resolve rate limit policy",
"detail": {
"errorcode": "policies.resetquota.FailedToResolveRLPolicy"
}
}
}
Nguyên nhân
Lỗi này xảy ra nếu không thể phân giải biến được tham chiếu bằng thuộc tính ref
trong phần tử <Quota>
.
Ví dụ: nếu thuộc tính ref
được đặt thành request.header.quotapolicy
trong phần tử <Quota>
nhưng không có trong luồng proxy API, thì bạn sẽ gặp lỗi trên.
<Quota ref="request.header.quotapolicy">
Chẩn đoán
Kiểm tra từng chính sách Đặt lại hạn mức trong Proxy API nơi xảy ra lỗi và xác định chính sách Đặt lại hạn mức mà tên của biến tham chiếu được chỉ định trong phần tử
<Quota>
không thể được phân giải đúng cách.Xác định xem biến đó có được xác định và có sẵn trong quy trình thực thi chính sách Đặt lại hạn mức hay không.
Nếu biến là:
- ngoài phạm vi (không có trong luồng cụ thể mà chính sách thực thi) hoặc
- không thể phân giải (chưa được xác định)
thì đó là nguyên nhân gây ra lỗi.
Trong ví dụ bên dưới, bạn nên truy xuất tên của chính sách Hạn mức mục tiêu từ tiêu đề yêu cầu có tên là quotapolicy. Tuy nhiên, Edge không thể giải quyết request.header.quotapolicy. Điều này xảy ra nếu tiêu đề quotapolicy không được truyền trong yêu cầu 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>
Dưới đây là một yêu cầu API mẫu không vượt qua tiêu đề quotapolicy như một phần của yêu cầu:
curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json"
Do tiêu đề quotapolicy không được chuyển như một phần của yêu cầu, tham chiếu request.header.quotapolicy sử dụng trong phần tử
<Quota>
trong chính sách Đặt lại hạn mức ở trên không xác định và không thể giải quyết. Do đó, bạn sẽ nhận được phản hồi lỗi:"errorcode": "policies.resetquota.FailedToResolveRLPolicy"
Độ phân giải
Đảm bảo rằng thuộc tính ref
được tham chiếu trong phần tử <Quota>
được phân giải trong thời gian chạy và có sẵn trong quy trình cụ thể nơi chính sách Đặt lại hạn mức sẽ thực thi.
Để sửa ví dụ ở trên, bạn có thể sửa đổi yêu cầu để thêm tiêu đề quotapolicy như sau:
curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json" -H "quotapolicy:MyQuotaPolicy"