בדף הזה מוסבר איך להגדיר מכסות ל-API. ככלל, השלבים הם:
- מוסיפים את המידע על המכסה לקובץ ההגדרות של gRPC API.
- פורסים את קובץ התצורה של gRPC API.
- פורסים את Extensible Service Proxy (ESP).
דרישות מוקדמות
כנקודת התחלה, בדף הזה מניחים שיש לכם:
- הגדרתם Cloud Endpoints.
- הפריסה של הגדרת נקודות הקצה.
- הטמעתם את העורף של ה-API.
- הגדרתם את ה-API לשימוש במפתח API. הפרמטר הזה נדרש כדי שממשקי ה-API של Endpoints יוכלו לזהות את Google Cloud הפרויקט שאליו משויכת האפליקציה ששולחת את הקריאה. מידע נוסף זמין במאמר בנושא שיתוף ממשקי API שמוגנים באמצעות מפתח API.
הוספת מכסת שימוש לקובץ התצורה של gRPC API
בקטע הבא מוסבר איך להוסיף את ההגדרות הנדרשות לקובץ ההגדרות של gRPC API כדי להגדיר מכסות. לצורך פשטות, בדף הזה קובץ ההגדרה של gRPC API נקרא קובץ api_config.yaml.
מוסיפים את שלושת הקטעים הבאים לקובץ api_config.yaml:
metrics: מדד בעל שם שסופר את הבקשות ל-API. מזינים שם שמתאר את המונה. השם יכול להיות קטגוריה, כמוread-requestsאוwrite-requests. לחלופין, אם מגדירים מכסה לשיטה ספציפית, כדאי לכלול את שם השיטה, לדוגמה,echo-api/echo_requests.
quota.limits: מייצג מגבלה אחת שניתנת לאכיפה במדד עם שם. כאן מגדירים את מספר הבקשות המותר למדד שהגדרתם. נכון לעכשיו, יש תמיכה רק במגבלות לדקה ולפרויקט.
quota.metric_rules:metric_ruleממפה שיטות למדדים (רבים לרבים). בקשה לשיטה מקצה מונה לכל אחד מהמדדים הממופים. כשמשייכים שיטה למדד, תמיד מציינים עלות לבקשה. אתם יכולים להגדיר את העלות של כל שיטה בנפרד. כך אפשר להשתמש בשיטות שונות כדי לצרוך נתונים בקצב שונה מאותו מדד עם שם. אם אין לכם דרישה מורכבת למכסה, אתם יכולים להגדיר את העלות של כל מדד ל-1.
כדי להגדיר מכסות ב-API:
- פותחים את הקובץ
api_config.yamlשל הפרויקט בכלי לעריכת טקסט. מוסיפים את השדה
metricsברמה העליונה של הקובץ (לא מוזח או מקונן), אחרי השדהapis.`metrics: - name: "YOUR_METRIC_NAME" display_name: "YOUR_METRIC_DISPLAY_NAME" value_type: INT64 metric_kind: DELTA`- מחליפים את
YOUR_METRIC_NAMEבשם שמתאר את מונה בקשות ה-API. - מחליפים את
YOUR_METRIC_DISPLAY_NAMEבטקסט שמוצג בדף Endpoints > Services > Quotas כדי לזהות את המדד. - השדה
value_typeחייב להיותINT64. - השדה
metric_kindחייב להיותDELTA.
- מחליפים את
מוסיפים שדה
quotaבאותה רמה כמוmetrics, ומוסיפים שדהlimitsשמוטמע בתוך הקטעquota.quota: limits: - name: "YOUR_LIMIT_NAME" metric: "YOUR_METRIC_NAME" unit: "1/min/{project}" values: STANDARD: VALUE_FOR_THE_LIMIT- מחליפים את
YOUR_LIMIT_NAMEבשם שמתאר את המגבלה. - מחליפים את
YOUR_METRIC_NAMEב-metric.nameשהוגדר קודם. - השדה
unitחייב להיות"1/min/{project}". זהו המזהה של המגבלה לדקה לכל פרויקט. - השדה
valuesחייב להכיל את הערךSTANDARD. - מחליפים את
VALUE_FOR_THE_LIMITבערך של מספר שלם. זהו מספר הבקשות שאפליקציה שמשויכת לפרויקט של צרכן Google Cloud יכולה לשלוח בדקה.
- מחליפים את
אפשר גם להגדיר מדדים נוספים ומגבלות לכל מדד.
מוסיפים שורה עם הזחה מתחת ל-
quota, אחרי הקטעlimits.metric_rulesבקטעmetric_rules, משייכים method למדד שהוגדר קודם, באופן הבא:metric_rules: - metric_costs: YOUR_METRIC_NAME: YOUR_METRIC_COST selector: [METHODS]- מחליפים את
YOUR_METRIC_NAMEב-metric.nameשהוגדר קודם. - מחליפים את
YOUR_METRIC_COSTבמספר שלם. לכל בקשה, מוסיפים למדד של מונה הבקשות את המספר שציינתם בעלות. בשדה
selector, אפשר לציין אחת מהאפשרויות הבאות:- כדי לשייך את כל השיטות בכל ממשקי ה-API ל-
metric_costuseselector: "*" - כדי לשייך את כל השיטות ב-API ל-
metric_cost, משתמשים ב-selector: YOUR_API_NAME.* - כדי לשייך שיטה ספציפית ב-API ל-
metric_costמשתמשים ב-selector: YOUR_API_NAME.YOUR_METHOD_NAME
- כדי לשייך את כל השיטות בכל ממשקי ה-API ל-
- מחליפים את
שומרים את קובץ ה-
api_config.yaml.
דוגמאות להגדרת מכסות
בדוגמאות הבאות מוצגות שלוש דרכים להגדרת מכסות ב-API.
בדוגמה הבאה אפשר לראות איך מגדירים את השדה metric:
metrics: # Define a metric for read requests. - name: "read-requests" display_name: "Read requests" value_type: INT64 metric_kind: DELTA`
בדוגמה הבאה אפשר לראות איך מגדירים את השדות quota ו-limits בקטע quota:
metrics: # Define a metric for read requests. - name: "read-requests" display_name: "Read requests" value_type: INT64 metric_kind: DELTA quota: limits: # Define the limit or the read-requests metric. - name: "read-limit" metric: "read-requests" unit: "1/min/{project}" values: STANDARD: 1000
בדוגמה הבאה אפשר לראות איך מגדירים את השורה metrics אחרי הקטע limits:
metrics:
# Define a metric for read requests.
- name: "read-requests"
display_name: "Read requests"
value_type: INT64
metric_kind: DELTA
quota:
limits:
# Define the limit or the read-requests metric.
- name: "read-limit"
metric: "read-requests"
unit: "1/min/{project}"
values:
STANDARD: 1000
metric_rules:
- metric_costs:
"read-requests": 1
selector: *
פריסת קובץ api_config.yaml ו-ESP
כדי שהמכסה תיכנס לתוקף, אתם צריכים:
- פורסים את הקובץ
api_config.yamlב-Service Management, וכך מעדכנים את ההגדרות ב-Endpoints. שלבים מפורטים מופיעים במאמר בנושא פריסת ההגדרה של Endpoints. - פורסים את ה-ESP. שלבים מפורטים מופיעים במאמר בנושא פריסת קצה העורפי של ה-API.