אתם יכולים להציג ולשאול על ערכי מטא נתונים של מופעי מחשוב כדי להגדיר את האפליקציות, לנהל את מופעי המחשוב, לבצע אופטימיזציה של הביצועים ולפתור בעיות בהגדרות. כל מכונה לחישוב ב-Compute Engine של Cloud de Confiance by S3NSשומרת את המטא-נתונים שלה בשרת מטא-נתונים ייעודי. למכונות הווירטואליות שלכם יש גישה אוטומטית למטא-נתונים האלה דרך ה-API של שרת המטא-נתונים, בלי צורך בהרשאה נוספת. במאמר הזה מוסבר איך להריץ שאילתות על מטא-נתונים באופן פרוגרמטי מתוך מופע של מחשוב, ואיך להציג מטא-נתונים מותאמים אישית.
אם נתקלתם בשגיאות בגישה לשרת המטא-נתונים, כדאי לעיין במאמר פתרון בעיות בגישה לשרת המטא-נתונים.
לפני שמתחילים
- במכונות וירטואליות של Windows Server, צריך להשתמש ב-PowerShell 3.0 ואילך.
מומלץ להשתמש ב-
ctrl+vכדי להדביק את בלוקי הקוד שהועתקו. - כדאי לעיין במושגי היסוד של הגדרת מטא-נתונים של מכונות וירטואליות ב-Compute Engine, סיווג וסידור שלהם. מידע נוסף זמין במאמר מידע על מטא-נתונים של מכונות וירטואליות.
-
אם עדיין לא עשיתם את זה, תצטרכו להגדיר אימות.
אימות הוא תהליך שבו מאמתים את הזהות שלכם כדי לקבל גישה לממשקי API ולשירותים של Cloud de Confiance by S3NS . כדי להריץ קוד או דוגמאות מסביבת פיתוח מקומית, אפשר לבצע אימות ל-Compute Engine באחת מהדרכים הבאות:
צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות בדף הזה:
המסוף
כשמשתמשים במסוף Cloud de Confiance כדי לגשת לשירותים ולממשקי ה-API, לא צריך להגדיר אימות. Cloud de Confiance by S3NS
gcloud
-
התקינו את ה-CLI של Google Cloud ואז היכנסו ל-CLI של gcloud באמצעות הזהות המאוחדת שלכם. אחרי שנכנסתם לחשבון, אתחלו את ה-CLI של Google Cloud באמצעות הפקודה הבאה:
gcloud init
-
- הגדרת אזור ותחום כברירת מחדל
-
התקינו את ה-CLI של Google Cloud.
-
הגדירו שה-CLI של gcloud ישתמש בזהות המאוחדת שלכם.
-
יוצרים פרטי כניסה לאימות מקומי עבור חשבון המשתמש:
gcloud auth application-default login
אם מוחזרת שגיאת אימות ואתם משתמשים בספק זהויות חיצוני (IdP), ודאו ש נכנסתם ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
Python
כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של Python שבדף הזה, מתקינים ומפעילים את ה-CLI של gcloud, ואז מגדירים את Application Default Credentials באמצעות פרטי הכניסה של המשתמש.
מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
REST
כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של API בארכיטקטורת REST שבדף הזה, צריך להשתמש בפרטי הכניסה שאתם נותנים ל-CLI של gcloud.
התקינו את ה-CLI של Google Cloud ואז היכנסו ל-CLI של gcloud באמצעות הזהות המאוחדת שלכם.
מידע נוסף מופיע במאמר אימות לשימוש ב-REST במסמכי האימות של Cloud de Confiance .
התפקידים הנדרשים
כדי להציג מטא-נתונים בהתאמה אישית מחוץ ל-VM באמצעות מסוף Cloud de Confiance , Google Cloud CLI או REST, צריך את התפקידים וההרשאות הבאים: אם אתם שולחים שאילתות למטא-נתונים באופן פרוגרמטי מתוך המכונה הווירטואלית, אתם צריכים רק את התפקידים וההרשאות להתחברות למכונה הווירטואלית.
כדי לקבל את ההרשאות שדרושות בשביל להציג מטא-נתונים בהתאמה אישית מחוץ למכונה הווירטואלית, אתם צריכים לבקש מהאדמין לתת לכם את תפקידי ה-IAM הבאים:
- Compute Instance Admin (v1) (
roles/compute.instanceAdmin.v1) במכונה הווירטואלית או בפרויקט -
אם המכונות הווירטואליות משתמשות בחשבונות שירות: משתמש בחשבון שירות (
roles/iam.serviceAccountUser) בחשבון השירות או בפרויקט
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
התפקידים המוגדרים מראש האלה כוללים את ההרשאות שנדרשות כדי להציג מטא-נתונים מותאמים אישית מחוץ למכונה הווירטואלית. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
כדי להציג מטא-נתונים בהתאמה אישית מחוץ למכונה הווירטואלית, נדרשות ההרשאות הבאות:
-
כדי להציג מטא-נתונים מותאמים אישית של פרויקט:
compute.projects.getבפרויקט -
כדי להציג מטא-נתונים מותאמים אישית של אזור:
compute.instanceSettings.getבהגדרות המכונה באזור הנדרש בפרויקט -
כדי להציג מטא-נתונים מותאמים אישית של מכונה וירטואלית:
compute.instances.getבמכונה הווירטואלית -
אם המכונות הווירטואליות משתמשות בחשבונות שירות:
iam.serviceAccounts.actAsבחשבונות השירות או בפרויקט
יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
שאילתות פרוגרמטיות למטא-נתונים
אפשר לגשת לכל המטא-נתונים על ידי שליחת שאילתה לגבי רשומות של ערכי מטא-נתונים באופן פרוגרמטי מתוך מכונה וירטואלית של Linux או Windows. מתוך המכונה הווירטואלית, אפשר לשלוח שאילתות לערכי המטא-נתונים באופן פרוגרמטי באחת מהדרכים הבאות, באמצעות כלים כמו curl ב-Linux או Invoke-RestMethod ב-Windows:
- שאילתה על רשומה אחת של מטא-נתונים
- שאילתה על רשימת מטא-נתונים של ספרייה
- קבלת אסימוני גישה ספציפיים מסוג OAuth2
- שאילתות על שינויים במטא-נתונים באמצעות התכונה
wait-for-change
נקודות הקצה של שרת המטא-נתונים
כדי לשלוח שאילתות למטא-נתונים באופן פרוגרמטי מתוך מכונת VM, אפשר להשתמש בנקודות הקצה הבאות של שרת המטא-נתונים:
- בכל המכונות הווירטואליות, אפשר לשלוח שאילתה לשרת המטא-נתונים באמצעות נקודת הקצה של HTTP (
http://metadata.google.internal/computeMetadata/v1) או כתובת ה-IP שלו (169.254.169.254). צריך להשתמש בכתובת IPv4 גם עם מכונות וירטואליות עם IPv6 בלבד. במקרה של מכונות וירטואליות מוגנות, אפשר לשלוח שאילתה לשרת המטא-נתונים באמצעות אחת מהאפשרויות הבאות:
- נקודת הקצה של ה-HTTP:
http://metadata.google.internal/computeMetadata/v1 - נקודת הקצה של https: (
https://metadata.google.internal/computeMetadata/v1). נקודת הקצה הזו של https זמינה בגרסת טרום-השקה. כדי לראות את הפורמט להרצת שאילתות בנקודת הקצה של HTTPS, אפשר לעיין במאמר הרצת שאילתות על מטא-נתונים באמצעות נקודת הקצה של שרת המטא-נתונים של HTTPS.
- נקודת הקצה של ה-HTTP:
רוב הדוגמאות במסמך הזה משתמשות בנקודת הקצה http. עם זאת, אפשר לגשת לכל רשומות המטא-נתונים גם אם משתמשים בנקודת הקצה של https וגם אם משתמשים בנקודת הקצה של http.
חלקי בקשה למטא-נתונים
בטבלה הבאה מפורטים החלקים העיקריים של בקשת שאילתת מטא-נתונים.
| רכיבים | תיאור |
|---|---|
| כתובות URL בסיסיות | כל ערכי המטא-נתונים מוגדרים כנתיבי משנה מתחת לכתובות ה-URL הבסיסיות הבאות:
|
| כותרת הבקשה |
הכותרת הזו מציינת שהבקשה נשלחה בכוונה מפורשת לאחזר ערכי מטא-נתונים, ולא נשלחה בלי כוונה ממקור לא מאובטח, ומאפשרת לשרת המטא-נתונים להחזיר את הנתונים שביקשתם. אם לא תציינו את הכותרת הזו, שרת המטא-נתונים ידחה את הבקשה שלכם. Metadata-Flavor: Google |
שאילתה לגבי רשומה אחת של מטא-נתונים
כדי לבצע שאילתה על רשומת מטא-נתונים יחידה, משתמשים בפקודות הבאות.
Linux
- מתחברים ל-VM של Linux.
ממכונת Linux הווירטואלית, משתמשים בכלי
curlכדי לבצע שאילתה. כדי לשלוח שאילתה לגבי רשומת מטא-נתונים של מכונה וירטואלית או פרויקט, מריצים את הפקודה הבאה:curl "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY" -H "Metadata-Flavor: Google"
מחליפים את
PATH_TO_METADATA_ENTRYבנתיב למפתח המטא-נתונים של המכונה הווירטואלית או של הפרויקט שרוצים לשאול לגבי הערך שלו. אם המפתח נמצא בספריית משנה של מופע או של ספריית פרויקט, צריך לכלול גם את ספריית המשנה. לדוגמה:-
כדי להציג את מפתח המטא-נתונים
project-id, שמאוחסן במטא-נתונים של הפרויקט, מצייניםproject/project-id. -
כדי להציג את מפתח המטא-נתונים
image, שמאוחסן במטא-נתונים של המכונה הווירטואלית, מציינים את הערךinstance/image. -
כדי לראות את
enable-osloginשאפשר לאחסן בספריית המשנה attributes של מטא-נתונים של פרויקט או של מכונה וירטואלית, מציינים אתproject/attributes/enable-osloginאו אתinstance/attributes/enable-osloginבהתאם לתרחיש השימוש.
לדוגמה, כדי לשלוח שאילתה לגבי תמונת האתחול של מכונת ה-VM, מריצים את השאילתה הבאה:
user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/image" -H "Metadata-Flavor: Google"הפלט אמור להיראות כך:
projects/rhel-cloud/global/images/rhel-8-v20210122
-
כדי להציג את מפתח המטא-נתונים
Windows
- מתחברים ל-VM של Windows.
במכונה הווירטואלית של Windows, משתמשים בפקודה
Invoke-RestMethodכדי לבצע שאילתה. כדי לשלוח שאילתה לגבי רשומה של מטא-נתונים של מכונה וירטואלית או פרויקט, מריצים את הפקודה הבאה:$value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY") $valueמחליפים את
PATH_TO_METADATA_ENTRYבנתיב למפתח המטא-נתונים של המכונה הווירטואלית או של הפרויקט שרוצים לשאול לגבי הערך שלו. אם המפתח נמצא בספריית משנה של מופע או של ספריית פרויקט, צריך לכלול גם את ספריית המשנה. לדוגמה:-
כדי להציג את מפתח המטא-נתונים
project-id, שמאוחסן במטא-נתונים של הפרויקט, מצייניםproject/project-id. -
כדי להציג את מפתח המטא-נתונים
image, שמאוחסן במטא-נתונים של המכונה הווירטואלית, מציינים את הערךinstance/image. -
כדי לראות את
enable-osloginשאפשר לאחסן בספריית המשנה attributes של מטא-נתונים של פרויקט או של מכונה וירטואלית, מציינים אתproject/attributes/enable-osloginאו אתinstance/attributes/enable-osloginבהתאם לתרחיש השימוש.
לדוגמה, כדי לשלוח שאילתה לגבי תמונת האתחול של מכונת ה-VM, מריצים את השאילתה הבאה:
PS C:\> $value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/image") $valueהפלט אמור להיראות כך:
projects/windows-cloud/global/images/windows-server-2019-dc-v20210112
-
כדי להציג את מפתח המטא-נתונים
שאילתות לגבי רשימות של ספריות מטא-נתונים
משתמשים בפקודות הבאות כדי להריץ שאילתות על רשימות של ספריות מטא-נתונים. רישומי ספרייה הם רשומות של מטא-נתונים שמכילות מפתחות אחרים של מטא-נתונים. כל רשומה של מטא נתונים שמסתיימת בלוכסן מוביל היא רשימת ספריות
Linux
מתחברים ל-VM של Linux.
כדי לשלוח שאילתה לספריית מטא-נתונים של מכונה וירטואלית או פרויקט, מריצים את הפקודה הבאה ממכונת ה-VM של Linux:
curl "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_DIRECTORY/" -H "Metadata-Flavor: Google"
מחליפים את
PATH_TO_METADATA_DIRECTORYבנתיב לספריית המטא-נתונים של המכונה הווירטואלית או של הפרויקט שרוצים להריץ עליהם שאילתה באופן רקורסיבי. לדוגמה:-
כדי להציג את רשומת ספריית המטא-נתונים של הפרויקט
attributes, הנתיב שצריך לציין הואproject/attributes/. -
כדי להציג את רשומת המטא-נתונים של מופע המכונה הווירטואלית
disks, הנתיב שצריך לציין הואinstance/disks/.
לדוגמה, נניח שיש רשומה
disks/, שהיא ספרייה של דיסקים שמצורפים ל-VM. כדי לשלוח שאילתה לרשומהdisks/, צריך לבצע את השלבים הבאים:מריצים את הפקודה
curlשל הכלי בספריית הדיסקים.user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/disks/" -H "Metadata-Flavor: Google"הפלט אמור להיראות כך:
0/ 1/ 2/
אם רוצים לקבל מידע נוסף על ספריית
0/בדיסק, אפשר לשלוח שאילתה לכתובת ה-URL הספציפית של הספרייה הזו:user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/disks/0/" -H "Metadata-Flavor: Google"הפלט אמור להיראות כך:
device-name index mode type
כדי לשלוח שאילתה לגבי סוג הדיסק (
type) של הדיסקים0/, אפשר להריץ את הפקודה הבאה:user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/disks/0/type" -H "Metadata-Flavor: Google"הפלט אמור להיראות כך:
PERSISTENT
-
כדי להציג את רשומת ספריית המטא-נתונים של הפרויקט
Windows
הערך disks/ הוא ספרייה של דיסקים שמצורפים ל-VM.
כדי לשלוח שאילתה לרשומה של הדיסקים:
מתחברים ל-VM של Windows.
כדי לשלוח שאילתה לספריית מטא-נתונים של מכונת VM או פרויקט, מריצים את הפקודה הבאה ממכונת ה-VM של Windows:
$value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_DIRECTORY/") $valueמחליפים את
PATH_TO_METADATA_DIRECTORYבנתיב לספריית המטא-נתונים של המכונה הווירטואלית או של הפרויקט שרוצים להריץ עליהם שאילתה באופן רקורסיבי. לדוגמה:-
כדי להציג את רשומת ספריית המטא-נתונים של הפרויקט
attributes, הנתיב שצריך לציין הואproject/attributes/. -
כדי להציג את רשומת המטא-נתונים של מופע המכונה הווירטואלית
disks, הנתיב שצריך לציין הואinstance/disks/.
לדוגמה, נניח שיש רשומה
disks/, שהיא ספרייה של דיסקים שמצורפים ל-VM. כדי לשלוח שאילתה לרשומהdisks/, צריך לבצע את השלבים הבאים:משתמשים בפקודה
Invoke-RestMethodבספריית הדיסקים.PS C:\> $value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/disks/") $valueהפלט אמור להיראות כך:
0/ 1/ 2/
אם רוצים לקבל מידע נוסף על ספריית
0/בדיסק, אפשר לשלוח שאילתה לכתובת ה-URL הספציפית של הספרייה:PS C:\> $value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/disks/0/") $valueהפלט אמור להיראות כך:
device-name index mode type
כדי לשלוח שאילתה לגבי סוג הדיסק (
type) של הדיסקים0/, אפשר להריץ את הפקודה הבאה:PS C:\> $value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/disks/0/type") $valueהפלט אמור להיראות כך:
PERSISTENT
-
כדי להציג את רשומת ספריית המטא-נתונים של הפרויקט
שאילתות רקורסיביות לגבי דפים עסקיים
כדי להחזיר את כל התוכן בספרייה, משתמשים בפרמטר השאילתה recursive=true בבקשה:
Linux
מתחברים ל-VM של Linux.
ממכונת Linux הווירטואלית, משתמשים בכלי
curlכדי לבצע שאילתה. כדי לבצע שאילתה רקורסיבית על כרטיסי המוצר בספריית המטא-נתונים של מכונה וירטואלית או של פרויקט, מריצים את הפקודה הבאה:curl "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_DIRECTORY/?recursive=true" -H "Metadata-Flavor: Google"
מחליפים את
PATH_TO_METADATA_DIRECTORYבנתיב לספריית המטא-נתונים של המכונה הווירטואלית או של הפרויקט שרוצים להריץ עליהם שאילתה באופן רקורסיבי. לדוגמה:-
כדי להציג את רשומת ספריית המטא-נתונים של הפרויקט
attributes, הנתיב שצריך לציין הואproject/attributes/. -
כדי להציג את רשומת המטא-נתונים של מופע המכונה הווירטואלית
disks, הנתיב שצריך לציין הואinstance/disks/.
לדוגמה, הפקודה הבאה שולחת שאילתה באופן רקורסיבי לרשימות של מטא-נתונים של מופע עבור הספרייה
disks/.user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/disks/?recursive=true" -H "Metadata-Flavor: Google"הפלט אמור להיראות כך:
[{"deviceName":"boot","index":0,"mode":"READ_WRITE","type":"PERSISTENT"}, {"deviceName":"persistent-disk-1","index":1,"mode":"READ_WRITE","type":"PERSISTENT"}, {"deviceName":"persistent-disk-2","index":2,"mode":"READ_ONLY","type":"PERSISTENT"}]כברירת מחדל, התוכן הרקורסיבי מוחזר בפורמט JSON. אם רוצים להחזיר את התוכן הזה בפורמט טקסט, מוסיפים את פרמטר השאילתה
alt=text:user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/disks/?recursive=true&alt=text" -H "Metadata-Flavor: Google"הפלט אמור להיראות כך:
0/device-name boot 0/index 0 0/mode READ_WRITE 0/type PERSISTENT 1/device-name persistent-disk-1 1/index 1 1/mode READ_WRITE 1/type PERSISTENT 2/device-name persistent-disk-1 2/index 2 2/mode READ_ONLY 2/type PERSISTENT
-
כדי להציג את רשומת ספריית המטא-נתונים של הפרויקט
Windows
מתחברים ל-VM של Windows.
במכונה הווירטואלית של Windows, משתמשים בפקודה
Invoke-RestMethodכדי לבצע שאילתה. כדי לבצע שאילתה באופן רקורסיבי על רשימות של ספריית מטא-נתונים של מכונה וירטואלית או פרויקט, מריצים את הפקודה הבאה:$value = (Invoke-RestMethod
-Headers @{'Metadata-Flavor' = 'Google'}-Uri "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_DIRECTORY/?recursive=true") $valueמחליפים את
PATH_TO_METADATA_DIRECTORYבנתיב לספריית המטא-נתונים של המכונה הווירטואלית או של הפרויקט שרוצים להריץ עליהם שאילתה באופן רקורסיבי. לדוגמה:-
כדי להציג את רשומת ספריית המטא-נתונים של הפרויקט
attributes, הנתיב שצריך לציין הואproject/attributes/. -
כדי להציג את רשומת המטא-נתונים של מופע המכונה הווירטואלית
disks, הנתיב שצריך לציין הואinstance/disks/.
לדוגמה, הפקודה הבאה שולחת שאילתה באופן רקורסיבי לרשימות של מטא-נתונים של מופע עבור הספרייה
disks/.PS C:\> $value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/disks/?recursive=true") $valueהפלט אמור להיראות כך:
[{"deviceName":"boot","index":0,"mode":"READ_WRITE","type":"PERSISTENT"}, {"deviceName":"persistent-disk-1","index":1,"mode":"READ_WRITE","type":"PERSISTENT"}, {"deviceName":"persistent-disk-2","index":2,"mode":"READ_ONLY","type":"PERSISTENT"}]כברירת מחדל, התוכן הרקורסיבי מוחזר בפורמט JSON. אם רוצים להחזיר את התוכן הזה בפורמט טקסט, מוסיפים את פרמטר השאילתה
alt=text:PS C:\> $value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/disks/?recursive=true&alt=text") $valueהפלט אמור להיראות כך:
0/device-name boot 0/index 0 0/mode READ_WRITE 0/type PERSISTENT 1/device-name persistent-disk-1 1/index 1 1/mode READ_WRITE 1/type PERSISTENT 2/device-name persistent-disk-1 2/index 2 2/mode READ_ONLY 2/type PERSISTENT
-
כדי להציג את רשומת ספריית המטא-נתונים של הפרויקט
עיצוב פלט השאילתה
כברירת מחדל, לכל נקודת קצה יש פורמט מוגדר מראש לתגובה. יכול להיות שנקודות קצה מסוימות יחזירו נתונים בפורמט JSON כברירת מחדל, בעוד שנקודות קצה אחרות יחזירו נתונים כמחרוזת. אפשר לשנות את הגדרת פורמט הנתונים שמוגדר כברירת מחדל באמצעות פרמטרים של שאילתה alt=json או alt=text, שמחזירים נתונים בפורמט מחרוזת JSON או כייצוג של טקסט פשוט, בהתאמה.
Linux
- מתחברים ל-VM של Linux.
ממכונת Linux הווירטואלית, משתמשים בכלי
curlכדי לבצע שאילתה. כדי לשנות את פורמט הנתונים של תשובת השאילתה עבור מטא-נתונים של מכונה וירטואלית או של פרויקט, מריצים את הפקודה הבאה:curl "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY?alt=DATA_FORMAT" -H "Metadata-Flavor: Google"
מחליפים את מה שכתוב בשדות הבאים:
-
מחליפים את
PATH_TO_METADATA_ENTRYבנתיב למפתח המטא-נתונים של המכונה הווירטואלית או של הפרויקט שרוצים לשאול לגבי הערך שלו. אם המפתח נמצא בספריית משנה של מופע או של ספריית פרויקט, צריך לכלול גם את ספריית המשנה. לדוגמה:-
כדי להציג את מפתח המטא-נתונים
project-id, שמאוחסן במטא-נתונים של הפרויקט, מצייניםproject/project-id. -
כדי להציג את מפתח המטא-נתונים
image, שמאוחסן במטא-נתונים של המכונה הווירטואלית, מציינים את הערךinstance/image. -
כדי לראות את
enable-osloginשאפשר לאחסן בספריית המשנה attributes של מטא-נתונים של פרויקט או של מכונה וירטואלית, מציינים אתproject/attributes/enable-osloginאו אתinstance/attributes/enable-osloginבהתאם לתרחיש השימוש.
-
כדי להציג את מפתח המטא-נתונים
-
DATA_FORMAT: הפורמט שבו רוצים לקבל את נתוני התגובה לשאילתה. לדוגמה,textאוjson.
-
דוגמה
לדוגמה, המפתח tags מחזיר נתונים בפורמט JSON באופן אוטומטי. אפשר להחזיר את הנתונים בפורמט טקסט במקום זאת, על ידי ציון פרמטר השאילתה alt=text.
שאילתת ברירת מחדל
user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/tags" -H "Metadata-Flavor: Google"
הפלט אמור להיראות כך:
["http-server", "db-client", "app-server", "mysql-server"]
שאילתה עם עיצוב
user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/tags?alt=text" -H "Metadata-Flavor: Google"
הפלט אמור להיראות כך:
http-server db-client app-server mysql-server
Windows
- מתחברים ל-VM של Windows.
במכונה הווירטואלית של Windows, משתמשים בפקודה
Invoke-RestMethodכדי לבצע שאילתה. כדי לשנות את פורמט הנתונים של תגובת השאילתה עבור מטא-נתונים של מכונה וירטואלית או פרויקט, מריצים את הפקודה הבאה:$value = (Invoke-RestMethod
-Headers @{'Metadata-Flavor' = 'Google'}-Uri "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY?alt=DATA_FORMAT") $valueמחליפים את מה שכתוב בשדות הבאים:
-
מחליפים את
PATH_TO_METADATA_ENTRYבנתיב למפתח המטא-נתונים של המכונה הווירטואלית או של הפרויקט שרוצים לשאול לגבי הערך שלו. אם המפתח נמצא בספריית משנה של מופע או של ספריית פרויקט, צריך לכלול גם את ספריית המשנה. לדוגמה:-
כדי להציג את מפתח המטא-נתונים
project-id, שמאוחסן במטא-נתונים של הפרויקט, מצייניםproject/project-id. -
כדי להציג את מפתח המטא-נתונים
image, שמאוחסן במטא-נתונים של המכונה הווירטואלית, מציינים את הערךinstance/image. -
כדי לראות את
enable-osloginשאפשר לאחסן בספריית המשנה attributes של מטא-נתונים של פרויקט או של מכונה וירטואלית, מציינים אתproject/attributes/enable-osloginאו אתinstance/attributes/enable-osloginבהתאם לתרחיש השימוש.
-
כדי להציג את מפתח המטא-נתונים
-
DATA_FORMAT: הפורמט שבו רוצים לקבל את נתוני התגובה לשאילתה. לדוגמה,textאוjson.
-
דוגמה
לדוגמה, המפתח tags מחזיר נתונים בפורמט JSON באופן אוטומטי. אפשר להחזיר את הנתונים בפורמט טקסט במקום זאת, על ידי ציון פרמטר השאילתה alt=text.
שאילתת ברירת מחדל
PS C:>
$value = (Invoke-RestMethod -Headers @{'Metadata-Flavor' = 'Google'}
-Uri "http://metadata.google.internal/computeMetadata/v1/instance/tags")
$value
הפלט אמור להיראות כך:
["http-server", "db-client", "app-server", "mysql-server"]
שאילתה עם עיצוב
PS C:>
$value = (Invoke-RestMethod -Headers @{'Metadata-Flavor' = 'Google'}
-Uri "http://metadata.google.internal/computeMetadata/v1/instance/tags?alt=text")
$value
הפלט אמור להיראות כך:
http-server db-client app-server mysql-server
קבלת אסימוני גישה ספציפיים מסוג OAuth2
כברירת מחדל, כשמריצים שאילתה על נקודת הקצה /computeMetadata/v1/instance/service-accounts/default/token בשרת המטא-נתונים כדי לקבל אסימון גישה מסוג OAuth2, האסימון שמוחזר כולל את כל היקפי ההרשאות שצוינו לחשבון השירות כשנוצר או עודכן המופע.
כדי לבקש אסימון גישה עם היקף מצומצם להיקפים ספציפיים ומוגבלים, צריך להשתמש בפרמטר scopes של מחרוזת השאילתה בשילוב עם הפרמטר enforce_scopes=true של מחרוזת השאילתה. ההיקפים שאתם מבקשים צריכים להיות תת-קבוצה של ההיקפים שציינתם עבור המופע.
Linux
- מתחברים ל-VM של Linux.
במכונת ה-Linux הווירטואלית, משתמשים בכלי
curlכדי לבקש טוקן עם היקפי הרשאות מוגבלים:curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token?enforce_scopes=true&scopes=SCOPE_1,SCOPE_2,..." -H "Metadata-Flavor: Google"
מחליפים את
SCOPE_1,SCOPE_2,...ברשימה מופרדת בפסיקים של היקפי הרשאות של OAuth2.לדוגמה, כדי לבקש אסימון עם היקף מצומצם לגישה לקריאה בלבד ל-Cloud Storage:
user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token?enforce_scopes=true&scopes=https://www.googleapis.com/auth/devstorage.read_only" -H "Metadata-Flavor: Google"הפלט אמור להיראות כך:
{ "access_token": "ya29.c....", "expires_in": 3599, "token_type": "Bearer" }
Windows
- מתחברים ל-VM של Windows.
במכונה הווירטואלית של Windows, משתמשים בפקודה
Invoke-RestMethodכדי לבקש אסימון עם היקפי הרשאות מוגבלים:$value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token?enforce_scopes=true&scopes=SCOPE_1,SCOPE_2,...") $valueמחליפים את
SCOPE_1,SCOPE_2,...ברשימה מופרדת בפסיקים של היקפי הרשאות של OAuth2.לדוגמה, כדי לבקש אסימון עם היקף מצומצם לגישה לקריאה בלבד ל-Cloud Storage:
PS C:\> $value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token?enforce_scopes=true&scopes=https://www.googleapis.com/auth/devstorage.read_only") $valueהפלט אמור להיראות כך:
access_token : ya29.c.... expires_in : 3599 token_type : Bearer
לחלופין, אפשר לאכוף את ההתנהגות הזו של צמצום ההיקף לכל בקשות האסימונים על ידי הגדרת מפתח המטא-נתונים המותאם אישית enable-access-token-enforce-scopes לערך true ברמת המכונה או הפרויקט. אם מגדירים את המפתח הזה ל-true, שרת המטא-נתונים מצמצם באופן אוטומטי את היקף ההרשאות של כל בקשת אסימון שכוללת את הפרמטר scopes, גם אם הבקשה לא כוללת את הפרמטר enforce_scopes=true.
שאילתות לגבי שינויים במטא-נתונים באמצעות התכונה wait-for-change
מכיוון שערכי המטא-נתונים יכולים להשתנות בזמן שהמכונה הווירטואלית פועלת, אפשר להודיע לשרת המטא-נתונים על שינויים במטא-נתונים באמצעות התכונה wait-for-change. באפשרות הזו, הבקשה מחזירה פלט רק אם המטא-נתונים שצוינו השתנו.
אתם יכולים להשתמש בתכונה הזו במטא-נתונים מותאמים אישית או במטא-נתונים שמוגדרים על ידי השרת. כך, אם יש שינוי במכונה הווירטואלית או בפרויקט, או אם מישהו מעדכן רשומה של מטא-נתונים מותאמים אישית, אתם יכולים להגיב לשינוי באופן אוטומטי.
לדוגמה, אפשר לבצע בקשה במפתח tags כך שהבקשה תחזיר ערך רק אם התוכן של מטא-נתוני התגים השתנה. כשהבקשה חוזרת, היא מספקת את הערך החדש של מפתח המטא-נתונים הזה.
התכונה wait-for-change מאפשרת לכם גם להתאים את הבקשה ולהגדיר פסק זמן.
כשעובדים עם התכונהwait-for-change, חשוב לקחת בחשבון את הדברים הבאים:
אפשר לבצע בקשת
wait-for-changeרק בנקודת קצה של מטא-נתונים או באופן רקורסיבי בתוכן של ספרייה. אי אפשר לשלוח בקשתwait-for-changeעל כרטיסייה בספרייה. אם תנסו לעשות את זה, שרת המטא-נתונים ידחה את הבקשה ויחזיר שגיאה מסוג 400 בקשה לא חוקית.אי אפשר לבצע בקשת
wait-for-changeלטוקן של חשבון שירות. אם תנסו לשלוח בקשתwait-for-changeלכתובת ה-URL של הטוקן של חשבון השירות, הבקשה תיכשל באופן מיידי ותוחזר השגיאה 400 בקשה לא תקינה.
כדי לבצע בקשת wait-for-change, שולחים שאילתה למפתח מטא-נתונים ומצרפים את פרמטר השאילתה ?wait_for_change=true:
Linux
- מתחברים ל-VM של Linux.
ממכונת Linux הווירטואלית, משתמשים בכלי
curlכדי לבצע שאילתה. כדי לבצע בקשתwait-for-changeעבור מטא-נתונים של מכונה וירטואלית או של פרויקט, מריצים את הפקודה הבאה:curl "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY?wait_for_change=true" -H "Metadata-Flavor: Google"
מחליפים את
PATH_TO_METADATA_ENTRYבנתיב למפתח המטא-נתונים של המכונה הווירטואלית או של הפרויקט שרוצים לשאול לגבי הערך שלו. אם המפתח נמצא בספריית משנה של מופע או של ספריית פרויקט, צריך לכלול גם את ספריית המשנה. לדוגמה:-
כדי להציג את מפתח המטא-נתונים
project-id, שמאוחסן במטא-נתונים של הפרויקט, מצייניםproject/project-id. -
כדי להציג את מפתח המטא-נתונים
image, שמאוחסן במטא-נתונים של המכונה הווירטואלית, מציינים את הערךinstance/image. -
כדי לראות את
enable-osloginשאפשר לאחסן בספריית המשנה attributes של מטא-נתונים של פרויקט או של מכונה וירטואלית, מציינים אתproject/attributes/enable-osloginאו אתinstance/attributes/enable-osloginבהתאם לתרחיש השימוש.
אחרי שמתבצע שינוי במפתח המטא-נתונים שצוין, השאילתה מחזירה את הערך החדש.
-
כדי להציג את מפתח המטא-נתונים
דוגמאות
בדוגמה הזו, אם מתבצעת בקשה אל setInstanceTags method, הבקשה חוזרת עם הערכים החדשים:
user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/tags?wait_for_change=true" -H "Metadata-Flavor: Google"
הפלט אמור להיראות כך:
http-server db-client
אפשר גם לבצע wait-for-change בקשה באופן רקורסיבי על התוכן של ספרייה:
user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/attributes/?recursive=true&wait_for_change=true" -H "Metadata-Flavor: Google"
אם יש שינוי, שרת המטא-נתונים מחזיר את התוכן החדש:
{"foo":"bar","baz":"bat"}
Windows
- מתחברים ל-VM של Windows.
במכונה הווירטואלית של Windows, משתמשים בפקודה
Invoke-RestMethodכדי לבצע שאילתה. כדי לבצע בקשתwait-for-changeעבור רשומה של מטא-נתונים של מכונה וירטואלית או פרויקט, מריצים את הפקודה הבאה:$value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY?wait_for_change=true") $valueמחליפים את
PATH_TO_METADATA_ENTRYבנתיב למפתח המטא-נתונים של המכונה הווירטואלית או של הפרויקט שרוצים לשאול לגבי הערך שלו. אם המפתח נמצא בספריית משנה של מופע או של ספריית פרויקט, צריך לכלול גם את ספריית המשנה. לדוגמה:-
כדי להציג את מפתח המטא-נתונים
project-id, שמאוחסן במטא-נתונים של הפרויקט, מצייניםproject/project-id. -
כדי להציג את מפתח המטא-נתונים
image, שמאוחסן במטא-נתונים של המכונה הווירטואלית, מציינים את הערךinstance/image. -
כדי לראות את
enable-osloginשאפשר לאחסן בספריית המשנה attributes של מטא-נתונים של פרויקט או של מכונה וירטואלית, מציינים אתproject/attributes/enable-osloginאו אתinstance/attributes/enable-osloginבהתאם לתרחיש השימוש.
אחרי שמתבצע שינוי במפתח המטא-נתונים שצוין, השאילתה מחזירה את הערך החדש.
-
כדי להציג את מפתח המטא-נתונים
דוגמאות
אחרי שמתבצע שינוי במפתח המטא-נתונים שצוין, השאילתה מחזירה את הערך החדש. בדוגמה הזו, אם נשלחת בקשה אל setInstanceTags method, הבקשה חוזרת עם הערכים החדשים:
PS C:>
$value = (Invoke-RestMethod -Headers @{'Metadata-Flavor' = 'Google'}
-Uri "http://metadata.google.internal/computeMetadata/v1/instance/tags?wait_for_change=true")
$value
הפלט אמור להיראות כך:
http-server db-client
אפשר גם לבצע wait-for-change בקשה באופן רקורסיבי על התוכן של ספרייה:
PS C:>
$value = (Invoke-RestMethod -Headers @{'Metadata-Flavor' = 'Google'}
-Uri "http://metadata.google.internal/computeMetadata/v1/instance/attributes?recursive=true&wait_for_change=true")
$value
אם יש שינוי, שרת המטא-נתונים מחזיר את התוכן החדש:
{"foo":"bar","baz":"bat"}
שימוש ב-ETags
כששולחים שאילתת wait-for-change, שרת המטא-נתונים מחזיר תגובה אם חל שינוי כלשהו בתוכן של המטא-נתונים. עם זאת, יש מרוץ תהליכים מובנה בין עדכון מטא-נתונים לבין בקשת wait-for-change שמונפקת, ולכן כדאי שתהיה דרך מהימנה לדעת שאתם מקבלים את הערך העדכני ביותר של המטא-נתונים.
כדי לעזור לכם בכך, אתם יכולים להשתמש בפרמטר השאילתה last_etag, שמשווה את ערך ה-ETag שסיפקתם לערך ה-ETag שנשמר בשרת המטא-נתונים. אם ערכי ה-ETag זהים, בקשת wait-for-change מתקבלת. אם ערכי ה-ETag לא זהים, זה מצביע על כך שהתוכן של המטא-נתונים השתנה מאז הפעם האחרונה שבה אחזרתם את ערך ה-ETag, ושרת המטא-נתונים מחזיר מיד את הערך העדכני הזה.
מכונות וירטואליות של Linux
כדי לקבל את ערך ה-ETag הנוכחי של מפתח מטא-נתונים, מבצעים את השלבים הבאים:
- מתחברים ל-VM של Linux.
שולחים בקשה למפתח הזה ומדפיסים את הכותרות. כדי לעשות זאת, משתמשים בכלי
curlעם הדגל-v. כדי לקבל את ה-ETag הנוכחי של מכונה וירטואלית או של רשומת מטא-נתונים של פרויקט, מריצים את הפקודה הבאה:curl -v "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY" -H "Metadata-Flavor: Google"
מחליפים את
PATH_TO_METADATA_ENTRYבנתיב למפתח המטא-נתונים של המכונה הווירטואלית או של הפרויקט שרוצים לשאול לגבי הערך שלו. אם המפתח נמצא בספריית משנה של מופע או של ספריית פרויקט, צריך לכלול גם את ספריית המשנה. לדוגמה:-
כדי להציג את מפתח המטא-נתונים
project-id, שמאוחסן במטא-נתונים של הפרויקט, מצייניםproject/project-id. -
כדי להציג את מפתח המטא-נתונים
image, שמאוחסן במטא-נתונים של המכונה הווירטואלית, מציינים את הערךinstance/image. -
כדי לראות את
enable-osloginשאפשר לאחסן בספריית המשנה attributes של מטא-נתונים של פרויקט או של מכונה וירטואלית, מציינים אתproject/attributes/enable-osloginאו אתinstance/attributes/enable-osloginבהתאם לתרחיש השימוש.
לדוגמה, הפקודה הבאה מקבלת את ערך ה-ETag הנוכחי של מפתח המטא-נתונים של המופע
tags.user@myinst:~$ curl -v "http://metadata.google.internal/computeMetadata/v1/instance/tags" -H "Metadata-Flavor: Google"הפלט אמור להיראות כך:
* About to connect() to metadata port 80 (#0) * Trying 169.254.169.254... connected * Connected to metadata (169.254.169.254) port 80 (#0) > GET /computeMetadata/v1/instance/tags HTTP/1.1 > User-Agent: curl/7.19.7 (x86_64-pc-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8k zlib/1.2.3.3 libidn/1.15 > Host: metadata > Accept: */* > < HTTP/1.1 200 OK < Content-Type: application/text < ETag: 411261ca6c9e654e < Date: Wed, 13 Feb 2013 22:43:45 GMT < Server: Metadata Server for VM < Content-Length: 26 < X-XSS-Protection: 1; mode=block < X-Frame-Options: SAMEORIGIN < http-server db-client
-
כדי להציג את מפתח המטא-נתונים
אחר כך אפשר להשתמש בערך ה-ETag הזה עם הפקודה
curlשל הכלי בבקשתwait-for-change. כדי להשתמש בערך ה-ETag בבקשתwait-for-changeשל מטא-נתונים של מופע או פרויקט, מריצים את הפקודה הבאה:curl "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY?wait_for_change=true&last_etag=ETAG" -H "Metadata-Flavor: Google"
מחליפים את מה שכתוב בשדות הבאים:
-
מחליפים את
PATH_TO_METADATA_ENTRYבנתיב למפתח המטא-נתונים של המכונה הווירטואלית או של הפרויקט שרוצים לשאול לגבי הערך שלו. אם המפתח נמצא בספריית משנה של מופע או של ספריית פרויקט, צריך לכלול גם את ספריית המשנה. לדוגמה:-
כדי להציג את מפתח המטא-נתונים
project-id, שמאוחסן במטא-נתונים של הפרויקט, מצייניםproject/project-id. -
כדי להציג את מפתח המטא-נתונים
image, שמאוחסן במטא-נתונים של המכונה הווירטואלית, מציינים את הערךinstance/image. -
כדי לראות את
enable-osloginשאפשר לאחסן בספריית המשנה attributes של מטא-נתונים של פרויקט או של מכונה וירטואלית, מציינים אתproject/attributes/enable-osloginאו אתinstance/attributes/enable-osloginבהתאם לתרחיש השימוש.
-
כדי להציג את מפתח המטא-נתונים
-
ETAG: ערך ה-ETag של מפתח המטא-נתונים.
בדוגמה הזו, הפקודה הבאה משתמשת בערך ה-ETag של המפתח
tagsושולחת שאילתה לגבי רשומת המטא-נתונים של המופע.user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/tags?wait_for_change=true&last_etag=411261ca6c9e654e" -H "Metadata-Flavor: Google"שרת המטא-נתונים מתאים לערך ה-ETag שציינתם, ואם הערך הזה משתנה, הבקשה חוזרת עם התוכן החדש של מפתח המטא-נתונים.
-
מכונות וירטואליות של Windows
כדי לקבל את ערך ה-ETag הנוכחי של מפתח מטא-נתונים, מבצעים את השלבים הבאים:
- מתחברים ל-VM של Windows.
שולחים בקשה למפתח הזה ומדפיסים את הכותרות. ב-Windows, משתמשים בפקודה
Invoke-WebRequest. כדי לקבל את ה-ETag הנוכחי של מכונה וירטואלית או של רשומת מטא-נתונים של פרויקט, מריצים את הפקודה הבאה:$value = (Invoke-WebRequest -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY)$value.Headers.ETag
מחליפים את
PATH_TO_METADATA_ENTRYבנתיב למפתח המטא-נתונים של המכונה הווירטואלית או של הפרויקט שרוצים לשאול לגבי הערך שלו. אם המפתח נמצא בספריית משנה של מופע או של ספריית פרויקט, צריך לכלול גם את ספריית המשנה. לדוגמה:-
כדי להציג את מפתח המטא-נתונים
project-id, שמאוחסן במטא-נתונים של הפרויקט, מצייניםproject/project-id. -
כדי להציג את מפתח המטא-נתונים
image, שמאוחסן במטא-נתונים של המכונה הווירטואלית, מציינים את הערךinstance/image. -
כדי לראות את
enable-osloginשאפשר לאחסן בספריית המשנה attributes של מטא-נתונים של פרויקט או של מכונה וירטואלית, מציינים אתproject/attributes/enable-osloginאו אתinstance/attributes/enable-osloginבהתאם לתרחיש השימוש.
לדוגמה, הפקודה הבאה מקבלת את ערך ה-ETag הנוכחי של מפתח המטא-נתונים של המופע
tags.PS C:> $value = (Invoke-WebRequest -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri http://metadata.google.internal/computeMetadata/v1/instance/tags)
$value.Headers.ETag
הפלט אמור להיראות כך:
* About to connect() to metadata port 80 (#0) * Trying 169.254.169.254... connected * Connected to metadata (169.254.169.254) port 80 (#0) > GET /computeMetadata/v1/instance/tags HTTP/1.1 > User-Agent: curl/7.19.7 (x86_64-pc-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8k zlib/1.2.3.3 libidn/1.15 > Host: metadata > Accept: / > < HTTP/1.1 200 OK < Content-Type: application/text < ETag: 411261ca6c9e654e < Date: Wed, 13 Feb 2013 22:43:45 GMT < Server: Metadata Server for VM < Content-Length: 26 < X-XSS-Protection: 1; mode=block < X-Frame-Options: SAMEORIGIN < http-server db-client
-
כדי להציג את מפתח המטא-נתונים
אחר כך אפשר להשתמש בערך ה-ETag הזה בבקשת
wait-for-change. כדי להשתמש בערך ה-ETag לבקשתwait-for-changeשל מטא-נתונים של מופע או פרויקט, מריצים את הפקודה הבאה:$value = (Invoke-RestMethod
-Headers @{'Metadata-Flavor' = 'Google'}-Uri "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY?wait_for_change=true&last_etag=ETAG") $valueמחליפים את מה שכתוב בשדות הבאים:
-
מחליפים את
PATH_TO_METADATA_ENTRYבנתיב למפתח המטא-נתונים של המכונה הווירטואלית או של הפרויקט שרוצים לשאול לגבי הערך שלו. אם המפתח נמצא בספריית משנה של מופע או של ספריית פרויקט, צריך לכלול גם את ספריית המשנה. לדוגמה:-
כדי להציג את מפתח המטא-נתונים
project-id, שמאוחסן במטא-נתונים של הפרויקט, מצייניםproject/project-id. -
כדי להציג את מפתח המטא-נתונים
image, שמאוחסן במטא-נתונים של המכונה הווירטואלית, מציינים את הערךinstance/image. -
כדי לראות את
enable-osloginשאפשר לאחסן בספריית המשנה attributes של מטא-נתונים של פרויקט או של מכונה וירטואלית, מציינים אתproject/attributes/enable-osloginאו אתinstance/attributes/enable-osloginבהתאם לתרחיש השימוש.
-
כדי להציג את מפתח המטא-נתונים
-
ETAG: ערך ה-ETag של מפתח המטא-נתונים.
בדוגמה הזו, הפקודה הבאה משתמשת בערך ה-ETag של המפתח
tagsושולחת שאילתה לגבי רשומת המטא-נתונים של המופע.PS C:> $value = (Invoke-RestMethod
-Headers @{'Metadata-Flavor' = 'Google'}-Uri "http://metadata.google.internal/computeMetadata/v1/instance/tags?wait_for_change=true&last_etag=411261ca6c9e654e") $valueשרת המטא-נתונים מתאים לערך ה-ETag שציינתם, ואם הערך הזה משתנה, הבקשה חוזרת עם התוכן החדש של מפתח המטא-נתונים.
-
Python
בדוגמה הבאה של Python אפשר לראות איך לעקוב אחרי שרת המטא-נתונים באופן פרוגרמטי כדי לזהות שינויים.
בדוגמה הזו, ערך ה-ETag ההתחלתי הוא 0. שרת המטא-נתונים לא מחזיר תגובה עם 0 כערך ETag. אם מציינים את 0 כ-ETag האחרון בבקשה, שרת המטא-נתונים משיב עם הערך הנוכחי ועם ה-ETag. כך נחסך קצת קוד שנדרש כדי לקבל את הערך הראשוני ואת תג ה-ETag.
הגדרת זמני קצוב לתפוגה
אם רוצים שהבקשה wait-for-change תפסיק לפעול אחרי מספר מסוים של שניות, אפשר להגדיר את הפרמטר timeout_sec. הפרמטר timeout_sec מגביל את זמן ההמתנה של הבקשה למספר השניות שצוין, וכשהבקשה מגיעה למגבלה הזו, היא מחזירה את התוכן הנוכחי של מפתח המטא-נתונים.
כשמגדירים את הפרמטר timeout_sec, הבקשה תמיד מוחזרת אחרי מספר השניות שצוין, גם אם ערך המטא-נתונים לא השתנה בפועל. אפשר להגדיר רק ערך של מספר שלם לזמן הקצוב לפעילות.
Linux
- מתחברים ל-VM של Linux.
ממכונת Linux הווירטואלית, משתמשים בכלי
curlכדי לבצע שאילתה. כדי לבצע בקשתwait-for-changeעם ערך של פסק זמן עבור מכונה וירטואלית או רשומה של מטא-נתונים של פרויקט, מריצים את הפקודה הבאה:curl "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY?wait_for_change=true&timeout_sec=TIMEOUT" -H "Metadata-Flavor: Google"
מחליפים את מה שכתוב בשדות הבאים:
-
מחליפים את
PATH_TO_METADATA_ENTRYבנתיב למפתח המטא-נתונים של המכונה הווירטואלית או של הפרויקט שרוצים לשאול לגבי הערך שלו. אם המפתח נמצא בספריית משנה של מופע או של ספריית פרויקט, צריך לכלול גם את ספריית המשנה. לדוגמה:-
כדי להציג את מפתח המטא-נתונים
project-id, שמאוחסן במטא-נתונים של הפרויקט, מצייניםproject/project-id. -
כדי להציג את מפתח המטא-נתונים
image, שמאוחסן במטא-נתונים של המכונה הווירטואלית, מציינים את הערךinstance/image. -
כדי לראות את
enable-osloginשאפשר לאחסן בספריית המשנה attributes של מטא-נתונים של פרויקט או של מכונה וירטואלית, מציינים אתproject/attributes/enable-osloginאו אתinstance/attributes/enable-osloginבהתאם לתרחיש השימוש.
-
כדי להציג את מפתח המטא-נתונים
-
TIMEOUT: ערך הזמן הקצוב לתפוגה.
-
לדוגמה, הפקודה הבאה מבצעת בקשת wait-for-change שמוגדרת להפסקת פעולה אחרי 360 שניות:
user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/tags?wait_for_change=true&timeout_sec=360" -H "Metadata-Flavor: Google"
Windows
- מתחברים ל-VM של Windows.
במכונה הווירטואלית של Windows, משתמשים בפקודה
Invoke-RestMethodכדי לבצע שאילתה. כדי לבצע בקשתwait-for-changeעם ערך פסק זמן עבור מטא-נתונים של מכונה וירטואלית או רשומה של מטא-נתונים של פרויקט, מריצים את הפקודה הבאה:$value = (Invoke-RestMethod
-Headers @{'Metadata-Flavor' = 'Google'}-Uri "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY?wait_for_change=true&timeout_sec=TIMEOUT") $valueמחליפים את מה שכתוב בשדות הבאים:
-
מחליפים את
PATH_TO_METADATA_ENTRYבנתיב למפתח המטא-נתונים של המכונה הווירטואלית או של הפרויקט שרוצים לשאול לגבי הערך שלו. אם המפתח נמצא בספריית משנה של מופע או של ספריית פרויקט, צריך לכלול גם את ספריית המשנה. לדוגמה:-
כדי להציג את מפתח המטא-נתונים
project-id, שמאוחסן במטא-נתונים של הפרויקט, מצייניםproject/project-id. -
כדי להציג את מפתח המטא-נתונים
image, שמאוחסן במטא-נתונים של המכונה הווירטואלית, מציינים את הערךinstance/image. -
כדי לראות את
enable-osloginשאפשר לאחסן בספריית המשנה attributes של מטא-נתונים של פרויקט או של מכונה וירטואלית, מציינים אתproject/attributes/enable-osloginאו אתinstance/attributes/enable-osloginבהתאם לתרחיש השימוש.
-
כדי להציג את מפתח המטא-נתונים
-
TIMEOUT: ערך הזמן הקצוב לתפוגה.
-
לדוגמה, הפקודה הבאה מבצעת בקשת wait-for-change שמוגדרת להפסקת פעולה אחרי 360 שניות:
PS C:>
$value = (Invoke-RestMethod -Headers @{'Metadata-Flavor' = 'Google'}
-Uri "http://metadata.google.internal/computeMetadata/v1/instance/tags?wait_for_change=true&timeout_sec=360")
$value
שאילתת מטא-נתונים באמצעות נקודת הקצה של שרת המטא-נתונים ב-HTTPS
נקודת הקצה של שרת המטא-נתונים ב-HTTPS (https://metadata.google.internal/computeMetadata/v1) מספקת אבטחה נוספת להעברת מידע בין שרת המטא-נתונים לבין המכונה הווירטואלית.
כדי להשתמש בנקודת הקצה של שרת המטא-נתונים מסוג HTTPS, המכונה הווירטואלית צריכה לעמוד בדרישות הבאות:
- סביבת האורח צריכה לפעול במכונה הווירטואלית.
- מפתח המטא-נתונים
disable-https-mds-setupשל המכונה הווירטואלית צריך להיות מוגדר לערךFALSE. - המכונה הווירטואלית צריכה להיות מכונה וירטואלית מוגנת. הסיבה לכך היא ששרת המטא-נתונים של HTTPS דורש שימוש ב-Unified Extensible Firmware Interface (UEFI) וב-Virtual Trusted Platform Module (vTPM) כדי לאמת אישורים.
סקירה כללית של אופן הטיפול בשאילתות לנקודת הקצה של שרת המטא-נתונים מסוג HTTPS מופיעה במאמר בנושא נקודת הקצה של שרת המטא-נתונים מסוג HTTPS. אפשר להריץ את כל אותן השאילתות לשרת המטא-נתונים בין אם משתמשים בנקודת הקצה https או בנקודת הקצה http. עם זאת, כדי להתקשר לנקודת הקצה של https, צריך לציין את הנתיב לאישורי הזהות של הלקוח, ובמקרים מסוימים את אישור הבסיס.
הפקודות הבאות מדגימות איך להריץ שאילתות בשרת המטא-נתונים באמצעות נקודת הקצה https.
Linux
מתחברים ל-VM של Linux.
ממכונת ה-VM של Linux, משתמשים בכלי
curlכדי לבצע שאילתה ולציין את אישור הזהות של הלקוח. אפשר גם לציין את אישור הבסיס.curl "https://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY" \ -E CLIENT_CERTIFICATE \ [--cacert ROOT_CERTIFICATE] \ -H "Metadata-Flavor: Google"
מחליפים את מה שכתוב בשדות הבאים:
-
מחליפים את
PATH_TO_METADATA_ENTRYבנתיב למפתח המטא-נתונים של המכונה הווירטואלית או של הפרויקט שרוצים לשאול לגבי הערך שלו. אם המפתח נמצא בספריית משנה של מופע או של ספריית פרויקט, צריך לכלול גם את ספריית המשנה. לדוגמה:-
כדי להציג את מפתח המטא-נתונים
project-id, שמאוחסן במטא-נתונים של הפרויקט, מצייניםproject/project-id. -
כדי להציג את מפתח המטא-נתונים
image, שמאוחסן במטא-נתונים של המכונה הווירטואלית, מציינים את הערךinstance/image. -
כדי לראות את
enable-osloginשאפשר לאחסן בספריית המשנה attributes של מטא-נתונים של פרויקט או של מכונה וירטואלית, מציינים אתproject/attributes/enable-osloginאו אתinstance/attributes/enable-osloginבהתאם לתרחיש השימוש.
-
כדי להציג את מפתח המטא-נתונים
-
CLIENT_CERTIFICATE: הנתיב לאישור הזהות של הלקוח:/run/google-mds-mtls/client.key. - אופציונלי:
ROOT_CERTIFICATE: הנתיב לאישור הבסיס:/run/google-mds-mtls/root.crt. צריך לציין את הערך הזה אם אישור הבסיס לא נוסף למאגר האישורים של מערכת ההפעלה.
לדוגמה, כדי לשלוח שאילתה לגבי קובץ אימג' לאתחול של מכונה וירטואלית, מריצים את השאילתה הבאה:
user@myinst:~$ curl "https://metadata.google.internal/computeMetadata/v1/instance/image" \ -E /run/google-mds-mtls/client.key \ -H "Metadata-Flavor: Google"הפלט אמור להיראות כך:
projects/rhel-cloud/global/images/rhel-8-v20210122
אם מופיעה הודעת שגיאה, אפשר לעיין בתיעוד לפתרון בעיות.
-
Windows
מתחברים ל-VM של Windows.
משתמשים באחת מהפקודות הבאות כדי לקבל את אישור הזהות של הלקוח:
$cert = Get-PfxCertificate -FilePath "C:\ProgramData\Google\Compute Engine\mds-mtls-client.key.pfx"
$cert = Get-ChildItem Cert:\LocalMachine\My | Where-Object { $_.Issuer -like "google.internal" }
ממכונת ה-VM של Windows, משתמשים בפקודה
Invoke-RestMethodומציינים את אישור הזהות של הלקוח כדי לבצע שאילתה.PS C:\> $value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} -Certificate CLIENT_CERTIFICATE ` -Uri "https://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY") $valueמחליפים את מה שכתוב בשדות הבאים:
-
CLIENT_CERTIFICATE: הנתיב אל אישור הזהות של הלקוח במכונה הווירטואלית. זהו המשתנה$certשהוגדר בשלב הקודם. -
מחליפים את
PATH_TO_METADATA_ENTRYבנתיב למפתח המטא-נתונים של המכונה הווירטואלית או של הפרויקט שרוצים לשאול לגבי הערך שלו. אם המפתח נמצא בספריית משנה של מופע או של ספריית פרויקט, צריך לכלול גם את ספריית המשנה. לדוגמה:-
כדי להציג את מפתח המטא-נתונים
project-id, שמאוחסן במטא-נתונים של הפרויקט, מצייניםproject/project-id. -
כדי להציג את מפתח המטא-נתונים
image, שמאוחסן במטא-נתונים של המכונה הווירטואלית, מציינים את הערךinstance/image. -
כדי לראות את
enable-osloginשאפשר לאחסן בספריית המשנה attributes של מטא-נתונים של פרויקט או של מכונה וירטואלית, מציינים אתproject/attributes/enable-osloginאו אתinstance/attributes/enable-osloginבהתאם לתרחיש השימוש.
-
כדי להציג את מפתח המטא-נתונים
לדוגמה, כדי לשלוח שאילתה לקובץ אימג' לאתחול של מכונה וירטואלית של Windows Server 2019, מריצים את השאילתה הבאה:
PS C:\> $value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} -Certificate $cert ` -Uri "https://metadata.google.internal/computeMetadata/v1/instance/image") $valueהפלט אמור להיראות כך:
projects/windows-cloud/global/images/windows-server-2019-dc-v20210112
-
מגבלות
כל בקשה שמכילה את הכותרת
X-Forwarded-Forנדחית באופן אוטומטי על ידי שרת המטא-נתונים. הכותרת הזו מציינת בדרך כלל שהבקשה הועברה דרך שרת proxy, ויכול להיות שהיא לא נשלחה על ידי משתמש מורשה. מטעמי אבטחה, כל הבקשות האלה נדחות.כשמשתמשים בפקודה
curlכדי לאחזר מטא-נתונים מהשרת, חשוב לזכור שלא כל התווים המקודדים נתמכים בנתיב הבקשה. יש תמיכה בתווים מקודדים רק בנתיב השאילתה.לדוגמה, יכול להיות שהבקשה הבאה לא תפעל:
curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/123456789-compute%40developer.s3ns-system.iam.gserviceaccount.com/?query_path=https%3A%2F%2Flocalhost%3A8200%2Fexample%2Fquery&another_param=true" -H "Metadata-Flavor: Google"
כדי שהבקשה הזו תפעל, צריך להחליף את התו המקודד שלא נתמך בנתיב הבקשה (
%40) בערך המקביל שנתמך (@).curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/1234567898-compute@developer.s3ns-system.iam.gserviceaccount.com/?query_path=https%3A%2F%2Flocalhost%3A8200%2Fexample%2Fquery&another_param=true" -H "Metadata-Flavor: Google"
בטבלה הבאה מפורטים התווים המקודדים שלא נתמכים בנתיב של בקשה.
תו מקודד ערך קביל %21 !
%24 $
%27 '
%28 (
%29 )
%2A *
%2C ,
40% @
קודי סטטוס
כששולחים בקשה לשרת המטא-נתונים, השרת מחזיר קודי סטטוס רגילים של HTTP כדי לציין הצלחה או כישלון. לפעמים, תנאי הרשת או אירועים במארח יכולים לגרום לשרת המטא-נתונים להיכשל בשליחת הבקשה ולהחזיר קוד שגיאה. במקרים כאלה, כדאי לתכנן את האפליקציה כך שתהיה עמידה בכשלים, ותוכל לזהות את השגיאות האלה ולטפל בהן.
רשימה מפורטת של קודי סטטוס שאפשר לקבל מופיעה במאמר בנושא פתרון בעיות בקודי שרת.
הצגת המטא-נתונים המותאמים אישית של מכונות וירטואליות
יש כמה דרכים להציג את ערכי המטא-נתונים המותאמים אישית של מכונות וירטואליות ב-Compute Engine:
צפייה במטא-נתונים של פרויקט
כדי לראות מטא-נתונים בהתאמה אישית שחלים על כל המכונות הווירטואליות בפרויקט, משתמשים באחת מהשיטות הבאות.
המסוף
נכנסים לדף Metadata במסוף Cloud de Confiance .
בדף Metadata מוצגת רשימה של כל רשומות המטא-נתונים של הפרויקט בהתאמה אישית.
gcloud
משתמשים בפקודה gcloud compute project-info describe כדי להריץ שאילתות על מטא-נתונים של פרויקט:
gcloud compute project-info describe --flatten="commonInstanceMetadata[]"
הפלט אמור להיראות כך:
--- fingerprint: HcSFdS_1_1I= items: - key: ssh-keys value: USERNAME:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDWZ... kind: compute#metadata
REST
כדי לשלוח שאילתה לגבי מטא-נתונים של פרויקט, יוצרים בקשת GET אל ה-method project.get.
מחליפים את PROJECT_ID במזהה הפרויקט.
GET https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID
הפלט אמור להיראות כך:
"kind": "compute#project",
"id": "XXXXXXX",
"creationTimestamp": "2018-12-10T08:34:33.616-08:00",
"name": "YOUR_PROJECT",
"commonInstanceMetadata": {
"kind": "compute#metadata",
"fingerprint": "XXXXXCdg=",
"items": [
{
"key": "enable-guest-attributes",
"value": "TRUE"
},
{
"key": "enable-os-inventory",
"value": "true"
},
{
"key": "enable-osconfig",
"value": "TRUE"
},
{
"key": "enable-oslogin",
"value": "TRUE"
},
{
"key": "sshKeys",
"value": "XXXXX"
}
]
}, ...
צפייה במטא-נתונים אזוריים
כדי להציג מטא-נתונים בהתאמה אישית שחלים על כל המכונות הווירטואליות באזור מסוים בפרויקט, משתמשים באחת מהשיטות הבאות.
gcloud
כדי לבצע שאילתה על מטא-נתונים מותאמים אישית ברמת האזור, משתמשים בפקודה gcloud compute project-zonal-metadata describe.
gcloud compute project-zonal-metadata describe \
--zone=ZONE \
--project=PROJECT_ID
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט -
ZONE: האזור שעבורו רוצים להציג את המטא-נתונים האזוריים.
הפלט אמור להיראות כך:
{
"fingerprint": "VlRIl8dx9vk=",
"metadata": {
items: {
"key-1": "value-1",
"key-2": "value-2"
}
}
}
REST
כדי לשלוח שאילתה למטא-נתונים מותאמים אישית של אזור, שולחים בקשת GET אל ה-method instanceSettings().get
GET https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceSettings
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט -
ZONE: האזור שעבורו רוצים להציג את המטא-נתונים האזוריים.
הפלט אמור להיראות כך:
{
"fingerprint": "VlRIl8dx9vk=",
"metadata": {
items: {
"key-1": "value-1",
"key-2": "value-2"
}
}
}
צפייה במטא-נתונים של מופע
כדי לראות מטא-נתונים שחלים על מכונה וירטואלית אחת בפרויקט, משתמשים באחת מהשיטות הבאות.
המסוף
- נכנסים לדף VM instances במסוף Cloud de Confiance .
לוחצים על שם המכונה הווירטואלית שרוצים להציג את המטא-נתונים שלה.
מפתחות SSH למכונה הווירטואלית הזו. בקטע אבטחה וגישה, בודקים את השדה מפתחות SSH.
הערך
Noneמציין שאין מפתחות SSH ששמורים במטא-נתונים של המופע.כל ערך אחר מציין שיש מפתחות SSH שמאוחסנים במטא-נתונים של המופע.
מפתחות SSH לפרויקט. בקטע אבטחה וגישה, בודקים את השדה חסימת מפתחות SSH ברמת הפרויקט.
הערך
Onמציין שהערך של מפתח המטא-נתוניםblock-project-ssh-keysהואTRUEבמטא-נתונים של המופע.הערך
Offמציין שהערך של מפתח המטא-נתוניםblock-project-ssh-keysהואFALSE, או שהמפתח לא מוגדר.
כל שאר המטא-נתונים בהתאמה אישית. מעיינים בקטע מטא-נתונים מותאמים אישית. מוצגים כל המפתחות והערכים של המטא-נתונים בהתאמה אישית, למעט מטא-נתונים של מפתח SSH.
gcloud
משתמשים בפקודה gcloud compute instances describe כדי לבצע שאילתה על המטא-נתונים של המופע:
gcloud compute instances describe VM_NAME --flatten="metadata[]"
מחליפים את VM_NAME בשם המכונה הווירטואלית שרוצים למצוא את המטא-נתונים שלה.
הפלט אמור להיראות כך:
--- fingerprint: MTgTJ5m-Cjs= items: - key: enable-oslogin value: 'true' kind: compute#metadata
REST
כדי לשלוח שאילתה לגבי מטא-נתונים של מכונה וירטואלית ספציפית, שולחים בקשת GET לשיטה instances.get.
GET https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
הפלט אמור להיראות כך:
......
"metadata": {
"kind": "compute#metadata",
"fingerprint": "XXXXXXVo=",
"items": [
{
"key": "enable-oslogin",
"value": "true"
}
]
},....
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט -
ZONE: האזור שבו נמצאת המכונה הווירטואלית -
VM_NAME: השם של ה-VM