שימוש ב-API – המלצות
בדף הזה מוסבר איך להציג ולנהל המלצות ב-Recommender באמצעות פקודות gcloud או REST API.
אינטראקציה אופיינית עם Recommender API:
הצגת רשימת ההמלצות לפרויקט ספציפי.
מסמנים המלצה שמתכוונים ליישם באמצעות הסמל
claimed, או מסמנים המלצה שלא מתכוונים ליישם באמצעות הסמלdismissed.מיישמים את ההמלצה. אפשר לעשות את זה באופן אוטומטי באמצעות Active Assist במסוף Google Cloud , או באופן ידני באמצעות פקודות Google Cloud CLI, קריאות ל-API בארכיטקטורת REST או כלים אחרים.
כשמיישמים את ההמלצה באופן ידני, הפקודות או הקריאות שבהן משתמשים הן ספציפיות לסוג המשאב. לדוגמה, כדי לשנות את הגודל של מכונת VM בתגובה להמלצה של שירות ההמלצות על גודל מכונת VM, משתמשים בפקודות
gcloudשל Compute Engine או בקריאות ל-API בארכיטקטורת REST של Compute Engine.כשמבצעים את הפעולות האלה, מזהים את משאב היעד באמצעות הערך של השדה
resourceבמערךOperationsGroupבישותRecommendationשמוחזרת. השדה הזה הוא בפורמט הבא://API_NAME/RESOURCE_PATH
לדוגמה:
//compute.googleapis.com/projects/example-project/zones/us-central1-a/instances/instance-1
מסמנים את ההמלצה כ
succeededאו כfailed.
חשוב לזכור שאפשר לבצע פעולות רק בהמלצות שאוחזרו באמצעות ה-API, באמצעות ה-API או BigQuery Export.
במאמרי העזרה בנושא Active Assist או בנושא שירות ההמלצות הרלוונטי מוסבר איך לשנות את הסטטוס של ההמלצות במסוףGoogle Cloud .
הגדרת פרויקט ברירת מחדל
אם עדיין לא עשיתם את זה, מגדירים את פרויקט ברירת המחדל:
gcloud config set project PROJECT_ID
כאשר PROJECT_ID הוא מזהה הפרויקט.
הגדרה של משתני סביבה
הגדרת משתני סביבה לאינטראקציות עם מערכת ההמלצות:
PROJECT=TARGET_PROJECT_ID LOCATION=LOCATION_ID RECOMMENDER=RECOMMENDER_ID
where:
TARGET_PROJECT_ID הוא הפרויקט שרוצים להציג את ההמלצות לגביו. זה יכול להיות פרויקט שונה מהפרויקט הנוכחי.
- בפקודות
gcloud, צריך להשתמש במזהה הפרויקט - בבקשות API, אפשר להשתמש במספר הפרויקט או במזהה הפרויקט. מומלץ להזין מספר פרויקט.
מספר הפרויקט מוחזר בתשובות גם מה-API וגם מפקודות
gcloud.- בפקודות
LOCATION_ID הוא Google Cloud המיקום שבו נמצאים המשאבים שמשויכים להמלצות (לדוגמה,
globalאוus-central1-a).RECOMMENDER_ID הוא מזהה שירות ההמלצות המוגדר במלואו (לדוגמה,
google.compute.instance.MachineTypeRecommender).
במאמר שירותי המלצות יש טבלה עם קישורים למידע על כל שירות המלצות, כולל מיקומים נתמכים ומזהים של שירותי המלצות.
הגדרת ההרשאות
צריכות להיות לכם הרשאות גישה להמלצות בפרויקט היעד.
- מגישי בקשות שכוללים פרויקט לחיוב בבקשה שלהם. הפרויקט שצוין בבקשה צריך להיות בניהול תקין, ולמשתמש צריך להיות תפקיד בפרויקט שכולל את ההרשאה
serviceusage.services.use. התפקיד Service Usage Consumer כולל את ההרשאה הנדרשת. - לכל כלי להמלצות נדרשות הרשאות ספציפיות. בקטע שירותי המלצות יש טבלה עם קישורים למידע על כל שירות המלצות, כולל ההרשאות הנדרשות.
המלצות לרשימות
כפי שמוצג בכרטיסייה gcloud Beta, אפשר לראות רשימה של כל ההמלצות לפרויקט בלי לציין מיקום או כלי להמלצות. התכונה הזו נמצאת בגרסת טרום-השקה (Preview).
כדי להשתמש בתכונה של GA, צריך לציין פרויקט, מיקום ומערכת המלצות. פרטים נוספים זמינים בכרטיסייה gcloud.
gcloud Beta
כתבו:
gcloud beta recommender recommendations list \
--project=${PROJECT} \
--format=FORMAT
כאשר FORMAT הוא פורמט פלט נתמך של gcloud, כמו json.
לדוגמה:
gcloud beta recommender recommendations list \
--project=example-project \
--format=json
gcloud
כתבו:
gcloud recommender recommendations list \
--project=${PROJECT} \
--location=${LOCATION} \
--recommender=${RECOMMENDER} \
--format=FORMAT
כאשר FORMAT הוא gcloud
פורמט פלט נתמך (לדוגמה, json).
לדוגמה:
gcloud recommender recommendations list \
--project=example-project \
--location=us-central1-a \
--recommender=google.compute.instance.MachineTypeRecommender \
--format=json
REST
כתבו:
curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: ${PROJECT}" \
"https://recommender.googleapis.com/v1/projects/${PROJECT}/locations/${LOCATION}/recommenders/${RECOMMENDER}/recommendations"
לדוגמה:
curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: example-project" \
"https://recommender.googleapis.com/v1/projects/example-project/locations/us-central1-a/recommenders/google.compute.instance.MachineTypeRecommender/recommendations"
הפעולה הזו מחזירה את ההמלצות הנוכחיות לגבי גודל המכונה הווירטואלית בפרויקט היעד כרשימה של ישויות Recommendation בפורמט שצוין.
הפלט אמור להיראות כך:
[
{
"content": {
"operationGroups": [
{
"operations": [
{
"action": "test",
"path": "/machineType",
"resource": "//compute.googleapis.com/projects/example-project/zones/us-central1-a/instances/instance-1",
"resourceType": "compute.googleapis.com/Instance",
"valueMatcher": {
"matchesPattern": ".*zones/us-central1-a/machineTypes/n1-standard-4"
}
},
{
"action": "replace",
"path": "/machineType",
"resource": "//compute.googleapis.com/projects/example-project/zones/us-central1-a/instances/instance-1",
"resourceType": "compute.googleapis.com/Instance",
"value": "zones/us-central1-a/machineTypes/custom-2-5120"
}
]
}
]
},
"description": "Save cost by changing machine type from n1-standard-4 to custom-2-5120.",
"etag": "\"280b34810bba8a1a\"",
"lastRefreshTime": "2019-06-28T06:49:21Z",
"name": "projects/32428390823/locations/us-central1-a/recommenders/google.compute.instance.MachineTypeRecommender/recommendations/a523ff7e-ed03-4143-a3a5-5b396b99cba9",
"primaryImpact": { ... },
"stateInfo": {
"state": "ACTIVE"
},
"recommenderSubtype": "CHANGE_MACHINE_TYPE"
}
]
שימו לב שההמלצות שמוחזרות כוללות את השדות הבאים:
השדה
nameבפורמט הבא:projects/PROJECT_ID/locations/LOCATION/recommenders/RECOMMENDER_ID/recommendations/RECOMMENDATION_ID
כאשר RECOMMENDATION_ID הוא המזהה הייחודי של ההמלצה
שדה
etagשמשויך למצב הנוכחי של ההמלצה.
כשמפנים להמלצה באמצעות פקודות Google Cloud CLI או קריאות ל-API בארכיטקטורת REST, צריך לציין גם את מזהה ההמלצה וגם את ה-etag. כך מוודאים שפעולות יתבצעו רק אם ההמלצה לא שונתה מאז הפעם האחרונה שאחזרתם אותה.
שינוי המצב של המלצה
אפשר לסמן המלצה כהמלצה שיושמה כדי לציין שאתם מתכוונים להחיל את השינויים המומלצים על המשאב המשויך. כשמאשרים המלצה, שם המשתמש שלכם מוקצה כגורם המבצע של ההמלצה, והכלי להמלצות לא מעדכן את ההמלצה בתוכן חדש יותר.
אפשר לסמן המלצה כהמלצה שנדחתה כדי לציין שאין לכם כוונה ליישם את השינויים המומלצים במשאב המשויך, או שאתם לא רוצים שההמלצה תמשיך להופיע. כשדוחים המלצה, היא לא מופיעה יותר כהמלצה פעילה. יכול להיות שהכלי להמלצות ימשיך לעדכן את ההמלצה עם תוכן חדש יותר.
אחרי שמיישמים המלצה, אפשר לסמן אותה כהצלחה או ככישלון.
כדי לשנות את הסטטוס של המלצה:
gcloud
כתבו:
gcloud recommender recommendations STATE_CHANGE \
RECOMMENDATION_ID \
--project=${PROJECT} \
--location=${LOCATION} \
--recommender=${RECOMMENDER} \
--etag=ETAG \
--state-metadata=STATE_METADATA \
--format=FORMAT
כאשר:
- STATE_CHANGE הוא השינוי שרוצים לבצע בהמלצה.
הערכים התקינים הם:
mark-claimedכדי לסמן את ההמלצה כהמלצה שיושמה.mark-dismissedכדי לסמן שההמלצה נדחתה.mark-succeededכדי לסמן שההמלצה יושמה בהצלחה.-
mark-failedכדי לסמן שההמלצה נכשלה.
- RECOMMENDATION_ID הוא מזהה של המלצה שאוחזרה מקריאה קודמת לפונקציה list recommendations.
- ETAG הוא ה-etag שמוחזר ומייצג את מצב ההמלצה
- STATE_METADATA הם מטא-נתונים אופציונליים לגבי הפעולה. מציינים את המטא-נתונים כרשימה מופרדת בפסיקים של זוגות KEY=VALUE. האפשרות הזו זמינה כשמסמנים שהמלצה מסוימת בוצעה, הצליחה או נכשלה.
לדוגמה:
gcloud recommender recommendations mark-succeeded \
a523ff7e-ed03-4143-a3a5-5b396b99cba9 \
--project=example-project \
--location=us-central1-a \
--recommender=google.compute.instance.MachineTypeRecommender \
--etag='"5e3a63cccf1e0964"' \
--state-metadata=priority=high,tracking_number=12345 \
--format=json
REST
מזינים את הפרטים הבאים
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: ${PROJECT}" \
--data-binary @- \
https://recommender.googleapis.com/v1/projects/${PROJECT}/locations/${LOCATION}/recommenders/${RECOMMENDER}/recommendations/RECOMMENDATION_ID:STATE_CHANGE \
<< EOM
{
"etag": "ETAG"
"stateMetadata": STATE_METADATA
}
EOM
where:
- RECOMMENDATION_ID הוא מזהה של המלצה שאוחזרה מקריאה קודמת לפונקציה list recommendations.
- STATE_CHANGE הוא השינוי שרוצים לבצע בהמלצה.
הערכים התקינים הם:
markClaimedכדי לסמן את ההמלצה כהמלצה שיושמה.markDismissedכדי לסמן שההמלצה נדחתה.markSucceededכדי לסמן שההמלצה יושמה בהצלחה.-
markFailedכדי לסמן שההמלצה נכשלה.
- ETAG הוא ה-etag שמוחזר ומייצג את מצב ההמלצה
- STATE_METADATA הוא שדה אופציונלי עם מטא-נתונים נוספים על הפעולה. מציינים את המטא-נתונים כזוגות
key:value. השדה הזה זמין כשמסמנים המלצה כהמלצה שיושמה, הצליחה או נכשלה.
לדוגמה:
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: example-project" \
--data-binary @- \
https://recommender.googleapis.com/v1/projects/example-project/locations/us-central1-a/recommenders/google.compute.instance.MachineTypeRecommender/recommendations/8f20d509-83d2-45d2-8152-1b8d5d7d5831:markSucceeded \
<< EOM
{
"etag": "\"280b34810bba8a1a\""
"stateMetadata": {
"priority" : "high",
"tracking_number": "12345"
}
}
EOM
הפעולה הזו מחזירה את היישות Recommendation בפורמט שצוין אחרי שהפעולה בוצעה.
הפלט אמור להיראות כך:
{
"content": {
"operationGroups": [ ... ]
},
"description": "Save cost by changing machine type from n1-standard-4 to custom-2-5120.",
"etag": "\"5e3a63cccf1e053c\"",
"lastRefreshTime": "2019-06-28T06:49:21Z",
"name": "projects/32428390823/locations/us-central1-a/recommenders/google.compute.instance.MachineTypeRecommender/recommendations/a523ff7e-ed03-4143-a3a5-5b396b99cba9",
"primaryImpact": { ... },
"stateInfo": {
"state": "SUCCEEDED",
"stateMetadata": {
"priority" : "high",
"tracking_number": "12345"
}
}
}
שימו לב שהערך של השדה state השתנה ל-SUCCEEDED.