Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến 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" } } }
Ví dụ về thông báo lỗi
{
"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 và phải có sẵn trong luồng.
Ví dụ: giả sử phần tử <Quota>
được định nghĩa như hì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, 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ảy ra. 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 về Hạn mức có tên
MyQuotaPolicy
khớp với nội dung trong chuỗi lỗi:<?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 quy trình trước khi thực thi chính sách Đặt lại hạn mứcReset_Quota_Demo
.Vì Chính sách về hạn mức
MyQuotaPolicy
không tồn tại trong luồng, 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 về hạn mức đã khai báo trong phần tử <Quota>
được xác định trong
Proxy API. Chính sách về hạn mức mục tiêu này phải được cung cấp khi áp dụng chính sách Đặt lại hạn mức mục tiêu
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ề ứng dụng sẽ đơn giản là: policies.ratelimit.QuotaViolation
.
Nguyên nhân
Lỗi này xảy ra nếu tham chiếu đến biến chứa số lượng cho phép trong
hệ thống không thể phân giải phần tử <Allow>
của chính sách thành một giá trị. Chiến dịch 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 đã xảy ra lỗi và tên của biến tham chiếu không thể được phân giải. Bạn có thể tìm thấy cả hai mục này trong phần phản hồi lỗi.
Ví dụ: trong faultstring sau đây, tên chính sách là
ResetQuota
và 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 tham chiếu biến được sử 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 xác định và có sẵn trong luồng trong mà chính sách Đặt lại hạn mức sẽ thực thi.
Nếu biến là:
- ngoài phạm vi (không áp dụng trong quy trình cụ thể nơi 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>
phải đượ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à yêu cầu API mẫu không vượt qua phần tiêu đề allowcount 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 đề allowcount không được chuyển như một phần của yêu cầu, biến request.header.allowcount được dùng trong phần tử
<Allow>
trong phần Đặt lại ở trên Chính sách về hạn mức chưa được xác định nên không thể giải quyết. 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 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 thực thi chính sách Đặt lại hạn mức.
Để sửa ví dụ nêu trên, bạn có thể sửa đổi yêu cầu để bao gồm 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"
}
}
}
Ví dụ về thông báo lỗi
{
"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 là request.header.quotapolicy
trong giá trị
<Quota>
nhưng không có trong luồng proxy API, thì bạn sẽ nhận được
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, trong đó có tên của tham chiếu biến được chỉ định trong phần tử
<Quota>
không thể được giải quyết đúng cách.Xác định xem biến đó đã được định nghĩa và có sẵn trong luồng mà từ đó Việc đặt lại chính sách về hạn mức sẽ thực thi.
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ể giải quyết (không xác định)
thì đó là nguyên nhân gây ra lỗi.
Trong ví dụ bên dưới, tên của chính sách Hạn mức mục tiêu phải là được truy xuất từ tiêu đề yêu cầu có tên quotapolicy. Tuy nhiên, Edge không thể để giải quyết request.header.quotapolicy. Điều này xảy ra nếu chính sách hạn mức của tiêu đề không được chuyển như một phần của 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 quotapolicy tiêu đề dưới dạng 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 được dùng trong phần tử
<Quota>
trong phần Đặt lại ở trên Chính sách về hạn mức 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>
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 sẽ thực thi.
Để sửa ví dụ hiển thị ở trên, bạn có thể sửa đổi yêu cầu để bao gồ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"