Bạn đang xem tài liệu về Apigee Edge.
Truy cập vào
tài liệu 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 mà bộ đếm của chính sách đó sẽ được cập nhật thông qua chính sách Đặt lại hạn mức. Bạn phải tạo và xác định chính sách Hạn mức mục tiêu này trong cùng một proxy API và chính sách này phải có sẵn trong suốt quy trình.
Ví dụ: giả sử phần tử <Quota> được xác định như bên dưới, nhưng nếu MyQuotaPolicy không được xác định trong API Proxy thì bạn sẽ gặp lỗi nêu 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ể tìm thấy tên của chính sách Hạn mức trong faultstring. Ví dụ: trong faultstring sau, 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 API Proxy nơi xảy ra lỗi. Xác định Chính sách đặt lại hạn mức cụ thể mà Chính sách hạn mức được chỉ định trong phần tử bắt buộc
<Quota>khớp với tên được xác định ở 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ụ minh hoạ ở trên, chính sách Hạn mức
MyQuotaPolicyphải có trong luồng trước khi chính sách Đặt lại hạn mứcReset_Quota_Demothực thi.Vì Chính sách hạn mức
MyQuotaPolicykhô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
Thông báo lỗi mẫu
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 trả về cho ứng dụng 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 giá trị 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. Phần tử này là phần tử bắt buộc và chỉ định số tiề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 nơi xảy ra lỗi và tên của biến tham chiếu không thể phân giải. Bạn có thể tìm thấy cả hai mục này trong phản hồi lỗi.
Ví dụ: trong faultstring sau đây, tên chính sách là
ResetQuotavà giá trị 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:demoTrong tệp XML 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 được 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ó tên tham chiếu 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ó sẵn 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à một trong hai trường hợp sau:
- nằm ngoài phạm vi (không có trong quy trình cụ thể mà chính sách đang được 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ụ minh hoạ ở 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 đề của yêu cầu có tên là 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 truyền dưới dạng một phần của yêu cầu API.Sau đâ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 được dùng trong phần tử
<Allow>trong chính sách Đặt lại hạn mức ở trên là không 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ó sẵn trong quy trình cụ thể, nơi chính sách Đặt lại hạn mức được thực thi.
Để sửa ví dụ nêu trên, bạn có thể sửa đổi yêu cầu để thêm tiêu đề allowcount như minh hoạ dưới đây:
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 phân giải được biến mà thuộc tính ref tham chiếu 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 quy trình proxy API, thì bạn sẽ gặp lỗi nêu 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 nơi tên của biến tham chiếu được chỉ định trong phần tử
<Quota>không thể phân giải đúng cách.Xác định xem biến có được xác định và có sẵn 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à một trong hai trường hợp sau:
- ngoài phạm vi (không có trong quy trình 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ụ minh hoạ dưới đây, tên của chính sách Hạn mức mục tiêu được giả định là được truy xuất từ tiêu đề của yêu cầu có tên là quotapolicy. Tuy nhiên, Edge không thể phân giải 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>Sau đây là một yêu cầu API mẫu không truyền tiêu đề quotapolicy làm 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"Vì tiêu đề quotapolicy không được truyền trong yêu cầu, nên request.header.quotapolicy được dùng trong phần tử
<Quota>trong chính sách Đặt lại hạn mức ở trên là không xác định và không thể phân giải. 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> sẽ phân giải tại 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 thực thi.
Để sửa ví dụ nêu trên, bạn có thể sửa đổi yêu cầu để thêm tiêu đề quotapolicy như minh hoạ dưới đây:
curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json" -H "quotapolicy:MyQuotaPolicy"