הצגה של מטא-נתונים של מכונות וירטואליות והרצת שאילתות לגביהם

אתם יכולים להציג ולשאול על ערכי מטא נתונים של מופעי מחשוב כדי להגדיר את האפליקציות, לנהל את מופעי המחשוב, לבצע אופטימיזציה של הביצועים ולפתור בעיות בהגדרות. כל מכונת Compute Engine ב- Google Cloudמאחסנת את המטא-נתונים שלה בשרת מטא-נתונים ייעודי. מכונות ה-Compute שלכם ניגשות באופן אוטומטי למטא-נתונים האלה דרך ה-API של שרת המטא-נתונים, בלי צורך בהרשאה נוספת. במאמר הזה מוסבר איך להריץ שאילתות על מטא-נתונים באופן פרוגרמטי מתוך מופע של Compute ואיך להציג מטא-נתונים מותאמים אישית.

אם נתקלתם בשגיאות כשניסיתם לגשת לשרת המטא-נתונים, קראו את המאמר פתרון בעיות בגישה לשרת המטא-נתונים.

לפני שמתחילים

  • במקרים של מופעים של Windows Server, צריך להשתמש ב-PowerShell 3.0 ואילך. מומלץ להשתמש ב-ctrl+v כדי להדביק את בלוקי הקוד שהועתקו.
  • כדאי לעיין בהסבר הבסיסי על הגדרת מטא-נתונים של מכונות וירטואליות ב-Compute Engine, על הסיווג שלהם ועל האופן שבו הם מסודרים. מידע נוסף זמין במאמר מידע על מטא-נתונים של מכונות וירטואליות.
  • אם עדיין לא עשיתם את זה, תצטרכו להגדיר אימות. אימות הוא תהליך שבו מאמתים את הזהות שלכם כדי לקבל גישה לממשקי API ולשירותים של Google Cloud . כדי להריץ קוד או דוגמאות מסביבת פיתוח מקומית, אפשר לבצע אימות ל-Compute Engine באחת מהדרכים הבאות:

    צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות בדף הזה:

    המסוף

    כשמשתמשים במסוף Google Cloud כדי לגשת לשירותים Google Cloud ולממשקי ה-API, לא צריך להגדיר אימות.

    gcloud

    1. התקינו את ה-CLI של Google Cloud. אחר כך, מאתחלים את ה-CLI של Google Cloud באמצעות הפקודה הבאה:

      gcloud init

      אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

  • הגדרת אזור ותחום כברירת מחדל
  • Python

    כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של Python שבדף הזה, מתקינים ומפעילים את ה-CLI של gcloud, ואז מגדירים את Application Default Credentials באמצעות פרטי הכניסה של המשתמש.

    1. התקינו את ה-CLI של Google Cloud.

    2. אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

    3. אם אתם משתמשים במעטפת מקומית, צרו פרטי כניסה לאימות מקומי בחשבון המשתמש:

      gcloud auth application-default login

      אם אתם משתמשים ב-Cloud Shell, אתם לא צריכים לעשות את זה.

      אם מוחזרת שגיאת אימות ואתם משתמשים בספק זהויות חיצוני (IdP), ודאו ש נכנסתם ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

    מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.

    REST

    כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של API בארכיטקטורת REST שבדף הזה, צריך להשתמש בפרטי הכניסה שאתם נותנים ל-CLI של gcloud.

      התקינו את ה-CLI של Google Cloud.

      אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

    מידע נוסף מופיע במאמר אימות לשימוש ב-REST במסמכי האימות של Google Cloud .

התפקידים הנדרשים

כדי להציג מטא-נתונים מותאמים אישית מחוץ למכונה של Compute Engine באמצעות מסוף Google Cloud , Google Cloud CLI או REST, צריך את התפקידים וההרשאות הבאים: אם אתם שולחים שאילתות באופן פרוגרמטי למטא-נתונים מתוך מופע המחשוב, אתם צריכים רק את התפקידים וההרשאות לחיבור למופע.

כדי לקבל את ההרשאות שנדרשות לצפייה במטא-נתונים בהתאמה אישית מחוץ למכונה, צריך לבקש מהאדמין להקצות לכם את התפקידים הבאים ב-IAM:

להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

התפקידים המוגדרים מראש האלה כוללים את ההרשאות שנדרשות כדי להציג מטא-נתונים בהתאמה אישית מחוץ למופע של Compute. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:

ההרשאות הנדרשות

כדי לראות מטא-נתונים בהתאמה אישית מחוץ למכונה, צריך את ההרשאות הבאות:

  • כדי להציג מטא-נתונים בהתאמה אישית של הפרויקט: ‫compute.projects.get בפרויקט
  • כדי להציג מטא-נתונים מותאמים אישית של אזור: compute.instanceSettings.get בהגדרות המכונה באזור הנדרש בפרויקט
  • כדי להציג מטא-נתונים בהתאמה אישית של מכונה: ‫compute.instances.get במכונה
  • אם מופעי החישוב משתמשים בחשבונות שירות: iam.serviceAccounts.actAs בחשבונות השירות או בפרויקט

יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.

שאילתת מטא-נתונים באופן פרוגרמטי

אפשר לגשת לכל המטא-נתונים על ידי שליחת שאילתה לגבי רשומות של ערכי מטא-נתונים באופן פרוגרמטי מתוך מופע של Linux או Windows. מתוך מופע מחשוב, אפשר לבצע שאילתה על ערכי המטא-נתונים באופן פרוגרמטי באחת מהדרכים הבאות, באמצעות כלים כמו curl ב-Linux או Invoke-RestMethod ב-Windows:

נקודות קצה של שרת מטא-נתונים

כדי לבצע שאילתות על מטא-נתונים באופן פרוגרמטי, מתוך מכונת חישוב , יש לכם את נקודות הקצה הבאות של שרת המטא-נתונים:

  • בכל מכונות החישוב, אפשר לשלוח שאילתות לשרת המטא-נתונים באמצעות אחת מנקודות הקצה הבאות של HTTP:
    • שם ה-DNS: ‏http://metadata.google.internal/computeMetadata/v1 (מומלץ)
    • כתובת ה-IPv4: ‏ http://169.254.169.254/computeMetadata/v1
    • כתובת ה-IPv6 (רק למכונות עם IPv6 בלבד): http://fd20:ce::254/computeMetadata/v1
  • במכונות וירטואליות מוגנות, אפשר לשלוח שאילתה לשרת המטא-נתונים באמצעות אחת מהאפשרויות הבאות:

    • נקודות הקצה (endpoints) של HTTP לכל המכונות של Compute Engine.
    • נקודות הקצה (endpoint) של HTTPS (זמינות בגרסת Preview):
      • שם ה-DNS: ‏ https://metadata.google.internal/computeMetadata/v1 (מומלץ)
      • כתובת ה-IPv4: ‏ https://169.254.169.254/computeMetadata/v1
      • כתובת ה-IPv6 (רק למכונות עם IPv6 בלבד): https://fd20:ce::254/computeMetadata/v1

    כדי לראות את הפורמט של שאילתות לנקודת הקצה מסוג HTTPS, אפשר לעיין במאמר בנושא שאילתות למטא-נתונים באמצעות נקודת הקצה של שרת המטא-נתונים מסוג HTTPS.

רוב הדוגמאות במסמך הזה משתמשות בנקודת הקצה של HTTP. עם זאת, אפשר לגשת לכל רשומות המטא-נתונים גם אם משתמשים בנקודת הקצה של HTTPS וגם אם משתמשים בנקודת הקצה של HTTP.

החלקים של בקשת מטא-נתונים

בטבלה הבאה מפורטים החלקים העיקריים של בקשת שאילתת מטא-נתונים.

רכיבים תיאור
כתובות URL בסיסיות

כל ערכי המטא-נתונים מוגדרים כנתיבי משנה מתחת לכתובות ה-URL הבסיסיות הבאות:

  • נקודת קצה של HTTP:
    • http://metadata.google.internal/computeMetadata/v1
    • http://169.254.169.254/computeMetadata/v1
    • http://metadata.goog/computeMetadata/v1
    • ‫
      http://fd20:ce::254/computeMetadata/v1
      (רק למכונות Compute עם IPv6 בלבד)
  • נקודת קצה (endpoint) מסוג HTTPS (גרסת Preview):
    • https://metadata.google.internal/computeMetadata/v1
    • https://169.254.169.254/computeMetadata/v1
    • ‫
      https://fd20:ce::254/computeMetadata/v1
      (רק למכונות Compute עם IPv6 בלבד)
Request header

הכותרת הזו מציינת שהבקשה נשלחה במטרה לאחזר ערכי מטא-נתונים, ולא נשלחה בטעות ממקור לא מאובטח, ומאפשרת לשרת המטא-נתונים להחזיר את הנתונים שביקשתם. אם לא תספקו את הכותרת הזו, שרת המטא-נתונים ידחה את הבקשה שלכם.

Metadata-Flavor: Google

שאילתה לגבי רשומת מטא-נתונים יחידה

כדי לבצע שאילתה על רשומת מטא-נתונים יחידה, משתמשים בפקודות הבאות.

Linux

  1. מתחברים למופע של Linux.
  2. ממופע Linux, משתמשים בכלי curl כדי לשלוח שאילתה. כדי לשלוח שאילתה לגבי מכונת Compute או רשומה של מטא-נתונים של פרויקט, מריצים את הפקודה הבאה:

    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, שאפשר לאחסן בספריית המשנה של המאפיינים של המטא-נתונים של הפרויקט או של המכונה הווירטואלית, צריך לציין את project/attributes/enable-oslogin או את instance/attributes/enable-oslogin, בהתאם לתרחיש לדוגמה.

    לדוגמה, כדי לשלוח שאילתה לגבי קובץ האימג' לאתחול של המכונה הווירטואלית, מריצים את השאילתה הבאה:

    user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/image" -H "Metadata-Flavor: Google"
    

    הפלט אמור להיראות כך:

    projects/rhel-cloud/global/images/rhel-8-v20210122

Windows

  1. מתחברים למופע של Windows Compute.
  2. ממכונת 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, שאפשר לאחסן בספריית המשנה של המאפיינים של המטא-נתונים של הפרויקט או של המכונה הווירטואלית, צריך לציין את project/attributes/enable-oslogin או את instance/attributes/enable-oslogin, בהתאם לתרחיש לדוגמה.

    לדוגמה, כדי לשלוח שאילתה לגבי קובץ האימג' לאתחול של המכונה הווירטואלית, מריצים את השאילתה הבאה:

    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

  1. מתחברים למכונה הווירטואלית של Linux.

  2. כדי לשלוח שאילתה לגבי ספריית המטא-נתונים של מכונת Compute או של פרויקט, מריצים את הפקודה הבאה ממכונת 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/ שהיא ספרייה של דיסקים שמצורפים למכונת החישוב. כדי לשלוח שאילתה לרשומה disks/:

    1. מריצים את הפקודה curl tool בספריית הדיסקים.

      user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/disks/" -H "Metadata-Flavor: Google"
      

      הפלט אמור להיראות כך:

      0/
      1/
      2/
      
    2. אם רוצים לקבל מידע נוסף על הספרייה של הדיסק 0/, אפשר לשלוח שאילתה לכתובת ה-URL הספציפית של הספרייה הזו:

      user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/disks/0/" -H "Metadata-Flavor: Google"
      

      הפלט אמור להיראות כך:

      device-name
      index
      mode
      type
      
    3. כדי לשלוח שאילתה לגבי סוג הדיסק (type) של דיסקים 0/, אפשר להריץ את הפקודה הבאה:

      user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/disks/0/type" -H "Metadata-Flavor: Google"
      

      הפלט אמור להיראות כך:

      PERSISTENT
      

Windows

הערך disks/ הוא ספרייה של דיסקים שמצורפים למופע של Compute. כדי לשלוח שאילתה לרשומה disks, מבצעים את הפעולות הבאות:

  1. מתחברים למופע של Windows Compute.

  2. כדי לבצע שאילתה לגבי ספריית מטא-נתונים של פרויקט או של מכונת Compute, מריצים את הפקודה הבאה ממכונת ה-Compute של 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/ היא ספרייה של דיסקים שמחוברים למכונה של Compute Engine. כדי לשלוח שאילתה לרשומה disks/, צריך לבצע את השלבים הבאים:

    1. משתמשים בפקודה Invoke-RestMethod בספריית הדיסקים.

      PS C:\> 
      $value = (Invoke-RestMethod `
                -Headers @{'Metadata-Flavor' = 'Google'} `
                -Uri "http://metadata.google.internal/computeMetadata/v1/instance/disks/")
      $value
      

      הפלט אמור להיראות כך:

      0/
      1/
      2/
      
    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
      
    3. כדי לשלוח שאילתה לגבי סוג הדיסק (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

  1. מתחברים למופע של מחשוב Linux.

  2. מתוך מכונת ה-Compute של 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

  1. מתחברים למופע של Windows Compute.

  2. ממכונת החישוב של Windows, משתמשים בפקודה Invoke-RestMethod כדי לבצע שאילתה. כדי לבצע שאילתה באופן רקורסיבי על הרישומים של מכונת Compute או של ספריית המטא-נתונים של הפרויקט, מריצים את הפקודה הבאה:

      $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

  1. מתחברים למכונה הווירטואלית של Linux.
  2. ממכונת ה-Compute של Linux, משתמשים בכלי curl כדי לבצע שאילתה. כדי לשנות את פורמט הנתונים של תגובת השאילתה עבור מטא-נתונים של פרויקט או של מופע Compute, מריצים את הפקודה הבאה:

    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

  1. מתחברים למופע של Windows Compute.
  2. במכונה הווירטואלית ב-Google Compute Engine שמריצה 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

  1. מתחברים למופע של מחשוב Linux.
  2. ממכונת ה-Linux שלכם ב-Compute, משתמשים בכלי 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

  1. מתחברים למופע של Windows Compute.
  2. ממכונת ה-Compute של 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 Invalid Request.

  • אי אפשר לבצע בקשת wait-for-change לטוקן של חשבון שירות. אם תנסו לשלוח בקשת wait-for-change לכתובת ה-URL של הטוקן של חשבון השירות, הבקשה תיכשל מיד ותוחזר השגיאה ‎400 Invalid Request.

כדי לבצע בקשת wait-for-change, שולחים שאילתה למפתח מטא-נתונים ומצרפים את פרמטר השאילתה ?wait_for_change=true:

Linux

  1. מתחברים למופע של מחשוב Linux.
  2. ממכונת המחשוב של Linux, משתמשים בכלי curl כדי לבצע שאילתה. כדי לבצע בקשת wait-for-change עבור מטא-נתונים של מכונת Compute או של פרויקט, מריצים את הפקודה הבאה:

    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, שאפשר לאחסן בספריית המשנה של המאפיינים של המטא-נתונים של הפרויקט או של המכונה הווירטואלית, צריך לציין את 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

  1. מתחברים למופע של Windows Compute.
  2. ממכונת החישוב של Windows, משתמשים בפקודה Invoke-RestMethod כדי לבצע שאילתה. כדי לבצע בקשת wait-for-change של רשומה במטא-נתונים של פרויקט או של מופע Compute, מריצים את הפקודה הבאה:

    $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, שאפשר לאחסן בספריית המשנה של המאפיינים של המטא-נתונים של הפרויקט או של המכונה הווירטואלית, צריך לציין את 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 הנוכחי של מפתח מטא-נתונים, מבצעים את השלבים הבאים:

  1. מתחברים למופע של מחשוב Linux.
  2. שולחים בקשה למפתח הזה ומדפיסים את הכותרות. כדי לעשות את זה, משתמשים בכלי curl עם הדגל -v. כדי לקבל את ה-ETag הנוכחי של מכונת Compute או של רשומה במטא-נתונים של פרויקט, מריצים את הפקודה הבאה:

    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
  3. אחר כך תוכלו להשתמש בערך של ה-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 הנוכחי של מפתח מטא-נתונים, מבצעים את השלבים הבאים:

  1. מתחברים למופע של Windows Compute.
  2. שולחים בקשה למפתח הזה ומדפיסים את הכותרות. ב-Windows, משתמשים בפקודה Invoke-WebRequest. כדי לקבל את ה-ETag הנוכחי של מכונת Compute או של רשומה במטא-נתונים של פרויקט, מריצים את הפקודה הבאה:

      $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

  3. אחר כך אפשר להשתמש בערך ה-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.

last_etag = "0"

while True:
    r = requests.get(
        url,
        params={"last_etag": last_etag, "wait_for_change": True},
        headers=METADATA_HEADERS,
    )

    # During maintenance the service can return a 503, so these should
    # be retried.
    if r.status_code == 503:
        time.sleep(1)
        continue
    r.raise_for_status()

    last_etag = r.headers["etag"]

הגדרת פסק זמן

אם רוצים שהבקשה wait-for-change תפוג אחרי מספר מסוים של שניות, אפשר להגדיר את הפרמטר timeout_sec. הפרמטר timeout_sec מגביל את זמן ההמתנה של הבקשה למספר השניות שציינתם, וכשהבקשה מגיעה למגבלה הזו, היא מחזירה את התוכן הנוכחי של מפתח המטא-נתונים.

כשמגדירים את הפרמטר timeout_sec, הבקשה תמיד מוחזרת אחרי מספר השניות שצוין, גם אם ערך המטא-נתונים לא השתנה בפועל. אפשר להגדיר רק ערך של מספר שלם לזמן הקצוב לתפוגה.

Linux

  1. מתחברים למופע של מחשוב Linux.
  2. ממכונת ה-Compute של Linux, משתמשים בכלי curl כדי לבצע שאילתה. כדי לבצע בקשת wait-for-change עם ערך זמן קצוב לתפוגה של מכונה ב-Compute Engine או של רשומת מטא-נתונים של פרויקט, מריצים את הפקודה הבאה:

      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, שאפשר לאחסן בספריית המשנה של המאפיינים של המטא-נתונים של הפרויקט או של המכונה הווירטואלית, צריך לציין את 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

  1. מתחברים למכונה הווירטואלית ב-Google Compute Engine שמריצה Windows.
  2. ממכונת Compute ב-Windows, משתמשים בפקודה Invoke-RestMethod כדי לבצע שאילתה. כדי לבצע בקשת wait-for-change עם ערך פסק זמן עבור מופע של Compute או ערך מטא-נתונים של פרויקט, מריצים את הפקודה הבאה:

      $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, שאפשר לאחסן בספריית המשנה של המאפיינים של המטא-נתונים של הפרויקט או של המכונה הווירטואלית, צריך לציין את 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 של מופע Compute צריך להיות מוגדר לערך FALSE.
  • המכונה הווירטואלית של Compute Engine חייבת להיות מכונה וירטואלית מוגנת. הסיבה לכך היא ששרת המטא-נתונים של HTTPS דורש שימוש ב-Unified Extensible Firmware Interface‏ (UEFI) וב-Virtual Trusted Platform Module‏ (vTPM) כדי לאמת אישורים.

סקירה כללית של אופן הטיפול בשאילתות לנקודת הקצה של שרת המטא-נתונים מסוג HTTPS מופיעה במאמר בנושא נקודת הקצה של שרת המטא-נתונים מסוג HTTPS. אפשר להריץ את כל אותן השאילתות לשרת המטא-נתונים, בין אם משתמשים בנקודת הקצה של HTTPS או בנקודת הקצה של HTTP. עם זאת, כדי לקרוא לנקודת הקצה (endpoint) של HTTPS, צריך לציין את הנתיב לאישורי הזהות של הלקוח, ובמקרים מסוימים את אישור הבסיס.

הפקודות הבאות מדגימות איך להריץ שאילתות בשרת המטא-נתונים באמצעות נקודת הקצה של HTTPS.

Linux

  1. מתחברים למכונה הווירטואלית של Linux.

  2. ממכונת ה-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. חובה לציין את הערך הזה אם אישור הבסיס לא נוסף למאגר האישורים המהימנים של מערכת ההפעלה.

    לדוגמה, כדי לשלוח שאילתה על קובץ האימג' לאתחול של מכונת Compute, מריצים את השאילתה הבאה:

    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

  1. מתחברים למופע של Windows Compute.

  2. משיגים את אישור הזהות של הלקוח באמצעות אחת מהפקודות הבאות:

    • $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" }
      
  3. במכונה הווירטואלית ב-Google Compute Engine שמריצה 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: הנתיב לאישור הזהות של הלקוח במכונה של Compute Engine. זהו המשתנה $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.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.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 באחת מהדרכים הבאות:

הצגת המטא-נתונים של הפרויקט

כדי להציג מטא-נתונים בהתאמה אישית שחלים על כל מכונות ה-Compute בפרויקט, משתמשים באחת מהשיטות הבאות.

המסוף

  1. נכנסים לדף Metadata במסוף Google Cloud .

    כניסה לדף Metadata

    בדף 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.googleapis.com/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"
    }
  ]
}, ...

צפייה במטא-נתונים אזוריים

כדי להציג מטא-נתונים בהתאמה אישית שחלים על כל מכונות ה-Compute באזור מסוים בפרויקט, משתמשים באחת מהשיטות הבאות.

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.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceSettings

מחליפים את מה שכתוב בשדות הבאים:

  • ‫PROJECT_ID: מזהה הפרויקט
  • ‫ZONE: האזור שעבורו רוצים להציג את המטא-נתונים האזוריים.

הפלט אמור להיראות כך:

{
  "fingerprint": "VlRIl8dx9vk=",
  "metadata": {
    items: {
      "key-1": "value-1",
      "key-2": "value-2"
    }
  }
}

הצגת המטא-נתונים של המכונה

כדי לראות את המטא-נתונים שחלים על מכונה אחת של Compute Engine בפרויקט, משתמשים באחת מהשיטות הבאות.

המסוף

  1. נכנסים לדף VM instances במסוף Google Cloud .

    כניסה לדף VM instances

  2. לוחצים על השם של מופע Compute שרוצים לראות את המטא-נתונים שלו.

    • מפתחות SSH למכונה הווירטואלית הזו. בקטע Security and access, בודקים את השדה מפתחות 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 INSTANCE_NAME --flatten="metadata[]"

מחליפים את INSTANCE_NAME בשם של המכונה הווירטואלית שרוצים למצוא את המטא-נתונים שלה.

הפלט אמור להיראות כך:

---
fingerprint: MTgTJ5m-Cjs=
items:
- key: enable-oslogin
  value: 'true'
kind: compute#metadata

REST

כדי לשלוח שאילתה על מטא-נתונים של מכונה ספציפית, שולחים בקשת GET אל ה-method‏ instances.get.

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME

הפלט אמור להיראות כך:

......
"metadata": {
"kind": "compute#metadata",
"fingerprint": "XXXXXXVo=",
"items": [
  {
    "key": "enable-oslogin",
    "value": "true"
  }
]
},....

מחליפים את מה שכתוב בשדות הבאים:

  • ‫PROJECT_ID: מזהה הפרויקט
  • ‫ZONE: האזור שבו נמצאת מכונת ה-Compute
  • ‫INSTANCE_NAME: השם של המכונה

המאמרים הבאים