Jede virtuelle Maschine (VM) speichert ihre Metadaten in Verzeichnissen auf einem Metadatenserver. Ihre VM hat automatisch ohne zusätzliche Autorisierung Zugriff auf diese Metadatenserver-API. Sie können die in den folgenden Abschnitten dieses Dokuments erläuterten Methoden verwenden, um VM-Metadatenwerte aufzurufen und abzufragen:
- Metadaten programmatisch von innerhalb einer VM abfragen
- Benutzerdefinierte Metadaten für Ihre VMs aufrufen
Hinweise
- Verwenden Sie für Windows Server-VMs PowerShell 3.0 oder höher.
Wir empfehlen, die kopierten Codeblöcke mit
ctrl+v
einzufügen. - Sehen Sie sich die Grundlagen dazu an, wie Sie VM-Metadaten für Compute Engine definieren, kategorisieren und anordnen können. Weitere Informationen finden Sie unter Informationen zu VM-Metadaten.
-
Richten Sie die Authentifizierung ein, falls Sie dies noch nicht getan haben.
Bei der Authentifizierung wird Ihre Identität für den Zugriff auf Google Cloud-Dienste und APIs überprüft.
Zur Ausführung von Code oder Beispielen aus einer lokalen Entwicklungsumgebung können Sie sich so bei Compute Engine authentifizieren.
Wählen Sie den Tab für die Verwendung der Beispiele auf dieser Seite aus:
Console
Wenn Sie über die Google Cloud Console auf Google Cloud-Dienste und -APIs zugreifen, müssen Sie die Authentifizierung nicht einrichten.
gcloud
-
Installieren Sie die Google Cloud CLI und initialisieren Sie sie mit folgendem Befehl:
gcloud init
- Legen Sie eine Standardregion und -zone fest.
Python
Wenn Sie die Python-Beispiele auf dieser Seite aus einer lokalen Entwicklungsumgebung heraus verwenden möchten, installieren und initialisieren Sie die gcloud CLI und richten dann die Standardanmeldedaten für Anwendungen mit Ihren Nutzeranmeldedaten ein.
- Installieren Sie die Google Cloud CLI.
-
Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init
-
Erstellen Sie lokale Anmeldedaten zur Authentifizierung für Ihr Google-Konto:
gcloud auth application-default login
Weitere Informationen: Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
REST
Verwenden Sie die von der gcloud CLI bereitgestellten Anmeldedaten, um die REST API-Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung zu verwenden.
Installieren Sie die Google Cloud CLI und initialisieren Sie sie mit folgendem Befehl:
gcloud init
-
Erforderliche Rollen
Die folgenden Rollen und Berechtigungen sind erforderlich, um benutzerdefinierte Metadaten von außerhalb der VM mithilfe der Google Cloud Console, der Google Cloud CLI oder REST aufzurufen. Wenn Sie die Metadaten programmatisch innerhalb der VM abfragen, benötigen Sie nur die Rollen und Berechtigungen zum Herstellen einer Verbindung zur VM.
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Aufrufen benutzerdefinierter Metadaten von außerhalb der VM benötigen:
-
Compute Instance Admin (v1) (
roles/compute.instanceAdmin.v1
) für die VM oder das Projekt -
Wenn Ihre VMs Dienstkonten verwenden: Service Account User (
roles/iam.serviceAccountUser
) für das Dienstkonto oder Projekt
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.
Diese vordefinierten Rollen enthalten die Berechtigungen, die zum Aufrufen benutzerdefinierter Metadaten von außerhalb der VM erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:
Erforderliche Berechtigungen
Die folgenden Berechtigungen sind erforderlich, um benutzerdefinierte Metadaten von außerhalb der VM aufzurufen:
- Um benutzerdefinierte projektweite Metadaten aufzurufen:
compute.projects.get
- Um benutzerdefinierte projektzonale Metadaten aufzurufen:
compute.instanceSettings.get
-
So rufen Sie benutzerdefinierte Metadaten für eine VM-Instanz auf:
compute.instances.get
-
Wenn Ihre VMs Dienstkonten verwenden:
iam.serviceAccounts.actAs
Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.
Metadaten programmatisch abfragen
Innerhalb einer VM können Sie entweder standardmäßige oder benutzerdefinierte Metadatenwerte programmatisch mit Tools wie curl
unter Linux oder Invoke-RestMethod
unter Windows abfragen.
Bestandteile einer Metadatenanfrage
In der folgenden Tabelle sind die wichtigsten Teile einer Metadatenabfrage zusammengefasst.
Komponenten | Beschreibung |
---|---|
Stamm-URL | Alle Metadatenwerte werden als Subpfade unterhalb der folgenden Stamm-URLs definiert:
|
Anfrageheader |
Dieser Header weist darauf hin, dass eine Anfrage zum Aufruf von Metadatenwerten gesendet wurde und diese nicht unbeabsichtigt aus einer unsicheren Quelle kommen. Auf diese Weise kann der Metadatenserver Ihnen die entsprechenden Daten zurückgeben. Ohne diesen Header lehnt der Metadatenserver Ihre Anfrage ab. Metadata-Flavor: Google |
Einzelnen Metadateneintrag abfragen
Verwenden Sie die folgenden Befehle, um einen einzelnen Metadateneintrag abzufragen.
Linux
- Stellen Sie eine Verbindung zu Ihrer Linux-VM her.
Verwenden Sie in Ihrer Linux-VM das
curl
-Tool, um eine Abfrage zu stellen.Führen Sie den folgenden Befehl aus, um einen Metadateneintrag einer VM-Instanz abzufragen:
curl "http://metadata.google.internal/computeMetadata/v1/instance/METADATA_KEY" -H "Metadata-Flavor: Google"
Führen Sie den folgenden Befehl aus, um einen Projektmetadateneintrag abzufragen:
curl "http://metadata.google.internal/computeMetadata/v1/project/METADATA_KEY" -H "Metadata-Flavor: Google"
Ersetzen Sie
METADATA_KEY
durch den Instanz- oder Projektmetadatenschlüssel, den Sie abfragen möchten.Führen Sie beispielsweise die folgende Abfrage aus, um das Boot-Image für die VM abzufragen:
user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/image" -H "Metadata-Flavor: Google"
Die Ausgabe sieht etwa so aus:
projects/rhel-cloud/global/images/rhel-8-v20210122
Windows
- Stellen Sie eine Verbindung zu Ihrer Windows-VM her.
Verwenden Sie in Ihrer Windows-VM den Befehl
Invoke-RestMethod
, um eine Abfrage zu stellen.Führen Sie den folgenden Befehl aus, um einen Metadateneintrag einer VM-Instanz abzufragen:
$value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/METADATA_KEY") $value
Führen Sie den folgenden Befehl aus, um einen Projektmetadateneintrag abzufragen:
$value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/project/METADATA_KEY") $value
Ersetzen Sie
METADATA_KEY
durch den Instanz- oder Projektmetadatenschlüssel, den Sie abfragen möchten.Führen Sie beispielsweise die folgende Abfrage aus, um das Boot-Image für die VM abzufragen:
PS C:\> $value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/image") $value
Die Ausgabe sieht etwa so aus:
projects/windows-cloud/global/images/windows-server-2019-dc-v20210112
Metadatenverzeichniseinträge abfragen
Verwenden Sie die folgenden Befehle, um Metadaten-Verzeichniseinträge abzufragen. Verzeichniseinträge sind Metadateneinträge, die andere Metadatenschlüssel enthalten. Alle Metadateneinträge, die mit einem Schrägstrich enden, sind Verzeichniseinträge.
Linux
Stellen Sie eine Verbindung zu Ihrer Linux-VM her.
Führen Sie in Ihrer Linux-VM die folgenden Befehle aus:
Führen Sie den folgenden Befehl aus, um das Metadatenverzeichnis einer VM-Instanz abzufragen:
curl "http://metadata.google.internal/computeMetadata/v1/instance/METADATA_DIRECTORY_NAME/" -H "Metadata-Flavor: Google"
Führen Sie den folgenden Befehl aus, um ein Projektmetadatenverzeichnis abzufragen:
curl "http://metadata.google.internal/computeMetadata/v1/project/METADATA_DIRECTORY_NAME/" -H "Metadata-Flavor: Google"
Ersetzen Sie
METADATA_DIRECTORY_NAME
durch den Namen des Instanz- oder des Projektmetadatenverzeichnisses, für das Sie die Einträge abfragen möchten.Betrachten Sie beispielsweise den Eintrag
disks/
, bei dem es sich um ein Verzeichnis von Laufwerken handelt, die mit der VM verbunden sind. Führen Sie die folgenden Schritte aus, um den Eintragdisks/
abzufragen:Führen Sie den
curl
-Toolbefehl im Laufwerksverzeichnis aus.user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/disks/" -H "Metadata-Flavor: Google"
Die Ausgabe sieht etwa so aus:
0/ 1/ 2/
Wenn Sie weitere Informationen zum Verzeichnis
0/
des Laufwerks benötigen, können Sie die spezifische URL für dieses Verzeichnis abfragen:user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/disks/0/" -H "Metadata-Flavor: Google"
Die Ausgabe sieht etwa so aus:
device-name index mode type
Führen Sie Folgendes aus, um dann den Laufwerktyp (
type
) für die Laufwerke0/
abzufragen:user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/disks/0/type" -H "Metadata-Flavor: Google"
Die Ausgabe sieht etwa so aus:
PERSISTENT
Windows
Der Eintrag disks/
ist ein Verzeichnis von Laufwerken, das an die VM angehängt ist.
Führen Sie die folgenden Schritte aus, um den Laufwerkeintrag abzufragen:
Stellen Sie eine Verbindung zu Ihrer Windows-VM her.
Führen Sie in Ihrer Windows-VM die folgenden Befehle aus:
Führen Sie den folgenden Befehl aus, um das Metadatenverzeichnis einer VM-Instanz abzufragen:
$value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/METADATA_DIRECTORY_NAME/") $value
Führen Sie den folgenden Befehl aus, um ein Projektmetadatenverzeichnis abzufragen:
$value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/project/METADATA_DIRECTORY_NAME/") $value
Ersetzen Sie
METADATA_DIRECTORY_NAME
durch den Namen des Instanz- oder des Projektmetadatenverzeichnisses, für das Sie die Einträge abfragen möchten.Betrachten Sie beispielsweise den Eintrag
disks/
, bei dem es sich um ein Verzeichnis von Laufwerken handelt, die mit der VM verbunden sind. Führen Sie die folgenden Schritte aus, um den Eintragdisks/
abzufragen:Führen Sie den
Invoke-RestMethod
-Befehl im Laufwerksverzeichnis aus.PS C:\> $value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/disks/") $value
Die Ausgabe sieht etwa so aus:
0/ 1/ 2/
Wenn Sie weitere Informationen zum Verzeichnis
0/
des Laufwerks benötigen, können Sie die spezifische URL für dieses Verzeichnis abfragen:PS C:\> $value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/disks/0/") $value
Die Ausgabe sieht etwa so aus:
device-name index mode type
Führen Sie Folgendes aus, um dann den Laufwerktyp (
type
) für die Laufwerke0/
abzufragen:PS C:\> $value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/disks/0/type") $value
Die Ausgabe sieht etwa so aus:
PERSISTENT
Verzeichniseinträge rekursiv abfragen
Wenn Sie alle Inhalte in einem Verzeichnis zurückgeben möchten, verwenden Sie den Abfrageparameter recursive=true
mit Ihrer Anfrage:
Linux
Stellen Sie eine Verbindung zu Ihrer Linux-VM her.
Verwenden Sie in Ihrer Linux-VM das
curl
-Tool, um eine Abfrage zu stellen.Führen Sie den folgenden Befehl aus, um die Einträge für das Metadatenverzeichnis einer VM-Instanz rekursiv abzufragen:
curl "http://metadata.google.internal/computeMetadata/v1/instance/METADATA_DIRECTORY_NAME/?recursive=true" -H "Metadata-Flavor: Google"
Führen Sie den folgenden Befehl aus, um die Einträge für das Metadatenverzeichnis eines Projekts rekursiv abzufragen:
curl "http://metadata.google.internal/computeMetadata/v1/project/METADATA_DIRECTORY_NAME/?recursive=true" -H "Metadata-Flavor: Google"
Ersetzen Sie
METADATA_DIRECTORY_NAME
durch den Namen des Instanz- oder des Projektmetadatenverzeichnisses, für das Sie die Einträge rekursiv abfragen möchten.Mit dem folgenden Befehl werden beispielsweise die Instanzmetadateneinträge für das Verzeichnis
disks/
rekursiv abgefragt.user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/disks/?recursive=true" -H "Metadata-Flavor: Google"
Die Ausgabe sieht in etwa so aus:
[{"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"}]
Standardmäßig werden rekursive Inhalte im JSON-Format angezeigt. Wenn Sie diese Inhalte im Textformat zurückgeben möchten, hängen Sie den Abfrageparameter
alt=text
an:user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/disks/?recursive=true&alt=text" -H "Metadata-Flavor: Google"
Die Ausgabe sieht etwa so aus:
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
Stellen Sie eine Verbindung zu Ihrer Windows-VM her.
Verwenden Sie in Ihrer Windows-VM den Befehl
Invoke-RestMethod
, um eine Abfrage zu stellen.Führen Sie den folgenden Befehl aus, um die Einträge für das Metadatenverzeichnis einer VM-Instanz rekursiv abzufragen:
$value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/METADATA_DIRECTORY_NAME/?recursive=true") $value
Führen Sie den folgenden Befehl aus, um die Einträge für das Metadatenverzeichnis eines Projekts rekursiv abzufragen:
$value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/project/METADATA_DIRECTORY_NAME/?recursive=true") $value
Ersetzen Sie
METADATA_DIRECTORY_NAME
durch den Namen des Instanz- oder des Projektmetadatenverzeichnisses, für das Sie die Einträge rekursiv abfragen möchten.Mit dem folgenden Befehl werden beispielsweise die Instanzmetadateneinträge für das Verzeichnis
disks/
rekursiv abgefragt.PS C:\> $value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/disks/?recursive=true") $value
Die Ausgabe sieht in etwa so aus:
[{"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"}]
Standardmäßig werden rekursive Inhalte im JSON-Format angezeigt. Wenn Sie diese Inhalte im Textformat zurückgeben möchten, hängen Sie den Abfrageparameter
alt=text
an:PS C:\> $value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/disks/?recursive=true&alt=text") $value
Die Ausgabe sieht etwa so aus:
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
Ausgabe der Abfrage formatieren
Standardmäßig besitzt jeder Endpunkt ein vordefiniertes Format für die Antwort. Einige Endpunkte können JSON-Daten zurückgeben, während andere die Daten als String darstellen. Sie können das Standardformat für Daten mit den Abfrageparametern alt=json
oder alt=text
ändern, die Daten als JSON-String oder als Klartextdarstellung zurückgeben.
Linux
- Stellen Sie eine Verbindung zu Ihrer Linux-VM her.
Verwenden Sie in Ihrer Linux-VM das
curl
-Tool, um eine Abfrage zu stellen.Führen Sie den folgenden Befehl aus, um das Datenformat der Abfrageantwort für den Metadateneintrag einer VM-Instanz zu ändern:
curl "http://metadata.google.internal/computeMetadata/v1/instance/METADATA_KEY?alt=DATA_FORMAT" -H "Metadata-Flavor: Google"
Führen Sie den folgenden Befehl aus, um das Datenformat der Abfrageantwort für einen Projektmetadateneintrag zu ändern:
curl "http://metadata.google.internal/computeMetadata/v1/project/METADATA_KEY?alt=DATA_FORMAT" -H "Metadata-Flavor: Google"
Ersetzen Sie Folgendes:
METADATA_KEY
: der Instanz- oder Projektmetadatenschlüssel, für den Sie den Wert abfragen möchten.DATA_FORMAT
: das Format, in dem die Abfrageantwortdaten abgerufen werden sollen, z. B.text
oderjson
.
Beispiel
Der Schlüssel tags
gibt beispielsweise Daten automatisch im JSON-Format zurück. Sie können stattdessen Daten im Textformat zurückgeben, indem Sie den Abfrageparameter alt=text
angeben.
Standardsuchanfrage
user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/tags" -H "Metadata-Flavor: Google"
Die Ausgabe sieht etwa so aus:
["http-server", "db-client", "app-server", "mysql-server"]
Abfrage mit Formatierung
user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/tags?alt=text" -H "Metadata-Flavor: Google"
Die Ausgabe sieht etwa so aus:
http-server db-client app-server mysql-server
Windows
- Stellen Sie eine Verbindung zu Ihrer Windows-VM her.
Verwenden Sie in Ihrer Windows-VM den Befehl
Invoke-RestMethod
, um eine Abfrage zu stellen.Führen Sie den folgenden Befehl aus, um das Datenformat der Abfrageantwort für den Metadateneintrag einer VM-Instanz zu ändern:
$value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/METADATA_KEY?alt=DATA_FORMAT") $value
Führen Sie den folgenden Befehl aus, um das Datenformat der Abfrageantwort für einen Projektmetadateneintrag zu ändern:
$value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/project/METADATA_KEY?alt=DATA_FORMAT") $value
Ersetzen Sie Folgendes:
METADATA_KEY
: der Instanz- oder Projektmetadatenschlüssel, für den Sie den Wert abfragen möchten.DATA_FORMAT
: das Format, in dem die Abfrageantwortdaten abgerufen werden sollen, z. B.text
oderjson
.
Beispiel
Der Schlüssel tags
gibt beispielsweise Daten automatisch im JSON-Format zurück. Sie können stattdessen Daten im Textformat zurückgeben, indem Sie den Abfrageparameter alt=text
angeben.
Standardsuchanfrage
PS C:>
$value = (Invoke-RestMethod -Headers @{'Metadata-Flavor' = 'Google'}
-Uri "http://metadata.google.internal/computeMetadata/v1/instance/tags")
$value
Die Ausgabe sieht etwa so aus:
["http-server", "db-client", "app-server", "mysql-server"]
Abfrage mit Formatierung
PS C:>
$value = (Invoke-RestMethod -Headers @{'Metadata-Flavor' = 'Google'}
-Uri "http://metadata.google.internal/computeMetadata/v1/instance/tags?alt=text")
$value
Die Ausgabe sieht etwa so aus:
http-server db-client app-server mysql-server
Metadatenänderungen mit dem wait-for-change
-Feature abfragen
Da sich Metadatenwerte ändern können, während Ihre VM ausgeführt wird, kann der Metadatenserver mithilfe des Features wait-for-change
über Metadatenänderungen informiert werden. Bei dieser Option gibt die Anfrage nur dann eine Ausgabe zurück, wenn sich die angegebenen Metadaten geändert haben.
Sie können dieses Feature für benutzerdefinierte oder serverdefinierte Metadaten verwenden. Sobald sich also etwas an Ihrer VM oder Ihrem Projekt ändert, oder jemand einen benutzerdefinierten Metadateneintrag aktualisiert, können Sie programmatisch auf die Änderung reagieren.
Sie können beispielsweise eine Anfrage für den Schlüssel tags
ausführen, sodass die Anfrage nur zurückgegeben wird, wenn sich der Inhalt der Metadaten der Tags geändert hat. Wird die Anfrage zurückgegeben, beinhaltet sie den neuen Wert des Metadatenschlüssels.
Mit dem Feature wait-for-change
können Sie auch einen Abgleich mit Ihrer Anfrage durchführen und Zeitlimits festlegen.
Beachten Sie bei der Arbeit mit dem Feature wait-for-change
Folgendes:
Sie können eine
wait-for-change
-Anfrage nur für einen Metadatenendpunkt oder rekursiv für den Inhalt eines Verzeichnisses ausführen. Sie können keinewait-for-change
-Anfrage für einen Verzeichniseintrag ausführen. Wenn Sie dies versuchen, kann der Metadatenserver Ihre Anfrage nicht ausführen und gibt den Fehler 400 (ungültige Anfrage) zurück.Sie können keine
wait-for-change
-Anfrage für ein Dienstkonto-Token ausführen. Wenn Sie versuchen, einewait-for-change
-Anfrage an die URL des Dienstkonto-Tokens zu senden, schlägt die Anfrage sofort fehl und gibt den Fehler 400 (ungültige Anfrage) zurück.
Zum Ausführen einer wait-for-change
-Anfrage fragen Sie einen Metadatenschlüssel ab und hängen den Abfrageparameter ?wait_for_change=true
an:
Linux
- Stellen Sie eine Verbindung zu Ihrer Linux-VM her.
Verwenden Sie in Ihrer Linux-VM das
curl
-Tool, um eine Abfrage zu stellen.Führen Sie den folgenden Befehl aus, um eine
wait-for-change
-Anfrage für den Metadateneintrag einer VM-Instanz durchzuführen:curl "http://metadata.google.internal/computeMetadata/v1/instance/METADATA_KEY?wait_for_change=true" -H "Metadata-Flavor: Google"
Führen Sie den folgenden Befehl aus, um eine
wait-for-change
-Anfrage für einen Projektmetadateneintrag durchzuführen:curl "http://metadata.google.internal/computeMetadata/v1/project/METADATA_KEY" -H "Metadata-Flavor: Google"
Ersetzen Sie
METADATA_KEY
durch den Instanz- oder Projektmetadatenschlüssel, den Sie abfragen möchten.Wenn der angegebene Metadatenschlüssel verändert wurde, gibt die Anfrage den neuen Wert zurück.
Beispiele
In diesem Beispiel wurde eine Anfrage an setInstanceTags method
gerichtet und gibt neue Werte zurück:
user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/tags?wait_for_change=true" -H "Metadata-Flavor: Google"
Die Ausgabe sieht in etwa so aus:
http-server db-client
Sie können auch eine wait-for-change
-Anfrage rekursiv für den Inhalt eines Verzeichnisses durchführen:
user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/attributes/?recursive=true&wait_for_change=true" -H "Metadata-Flavor: Google"
Der Metadatenserver gibt die neuen Inhalte an, sollte es Veränderungen gegeben haben:
{"foo":"bar","baz":"bat"}
Windows
- Stellen Sie eine Verbindung zu Ihrer Windows-VM her.
Verwenden Sie in Ihrer Windows-VM den Befehl
Invoke-RestMethod
, um eine Abfrage zu stellen.PS C:> $value = (Invoke-RestMethod
-Headers @{'Metadata-Flavor' = 'Google'}
-Uri "http://metadata.google.internal/computeMetadata/v1/METADATA_KEY?wait_for_change=true") $valueFühren Sie den folgenden Befehl aus, um eine
wait-for-change
-Anfrage für den Metadateneintrag einer VM-Instanz durchzuführen:$value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/METADATA_KEY?wait_for_change=true") $value
Führen Sie den folgenden Befehl aus, um eine
wait-for-change
-Anfrage für einen Projektmetadateneintrag durchzuführen:$value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/project/METADATA_KEY?wait_for_change=true") $value
Ersetzen Sie
METADATA_KEY
durch den Instanz- oder Projektmetadatenschlüssel, für den Sie einewait-for-change
-Anfrage durchführen möchten.Wenn der angegebene Metadatenschlüssel verändert wurde, gibt die Anfrage den neuen Wert zurück.
Beispiele
Wenn der angegebene Metadatenschlüssel verändert wurde, gibt die Anfrage den neuen Wert zurück. In diesem Beispiel wurde eine Anfrage an setInstanceTags method
gerichtet und gibt neue Werte zurück:
PS C:>
$value = (Invoke-RestMethod -Headers @{'Metadata-Flavor' = 'Google'}
-Uri "http://metadata.google.internal/computeMetadata/v1/instance/tags?wait_for_change=true")
$value
Die Ausgabe sieht in etwa so aus:
http-server db-client
Sie können auch eine wait-for-change
-Anfrage rekursiv für die Inhalte eines Verzeichnisses durchführen:
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
Der Metadatenserver gibt die neuen Inhalte an, sollte es Veränderungen gegeben haben:
{"foo":"bar","baz":"bat"}
ETags verwenden
Wenn Sie eine einfache wait-for-change
-Abfrage senden, gibt der Metadatenserver eine Antwort zurück, wenn sich im Inhalt dieser Metadaten etwas geändert hat. Jedoch gibt es immer einen Wettlauf zwischen der Aktualisierung von Metadaten und einer wait-for-change
-Anfrage. Deswegen lohnt es sich, eine verlässliche Methode zu haben, um herauszufinden, ob Sie den neuesten Metadatenwert erhalten.
Dafür haben wir Ihnen den last_etag
-Anfrageparameter zur Verfügung gestellt, der Ihren ETag-Wert mit dem vergleicht, der auf dem Metadatenserver gespeichert ist. Wenn die ETag-Werte übereinstimmen, wird die Anfrage wait-for-change
akzeptiert. Stimmen die
ETag-Werte nicht überein, dann bedeutet das, dass sich seit dem letzten Aufruf des ETag-Werts etwas verändert hat. Der Metadatenserver sendet diesen neuen Wert sofort zurück.
Linux-VMs
Führen Sie die folgenden Schritte aus, um den aktuellen ETag-Wert für einen Metadatenschlüssel abzurufen:
- Stellen Sie eine Verbindung zu Ihrer Linux-VM her.
Stellen Sie eine Anfrage an diesen Schlüssel und drucken Sie die Header. Verwenden Sie dazu das
curl
-Tool mit dem Flag-v
:Führen Sie den folgenden Befehl aus, um das aktuelle ETag für den Metadateneintrag einer VM-Instanz abzurufen:
curl -v "http://metadata.google.internal/computeMetadata/v1/instance/METADATA_KEY" -H "Metadata-Flavor: Google"
Führen Sie den folgenden Befehl aus, um das aktuelle ETag für einen Projektmetadateneintrag abzurufen:
curl -v "http://metadata.google.internal/computeMetadata/v1/project/METADATA_KEY" -H "Metadata-Flavor: Google"
Ersetzen Sie
METADATA_KEY
durch den Instanz- oder Projektmetadatenschlüssel, für den Sie den Wert abfragen möchten.Mit dem folgenden Befehl wird beispielsweise der aktuelle ETag-Wert für den Metadatenschlüssel
tags
der Instanz abgerufen.user@myinst:~$ curl -v "http://metadata.google.internal/computeMetadata/v1/instance/tags" -H "Metadata-Flavor: Google"
Die Ausgabe sieht in etwa so aus:
* 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
Sie können diesen ETag-Wert dann zusammen mit dem
curl
-Toolbefehl in derwait-for-change
-Anfrage verwenden:Führen Sie den folgenden Befehl aus, um den ETag-Wert für die
wait-for-change
-Anfrage von Instanzmetadaten zu verwenden:curl "http://metadata.google.internal/computeMetadata/v1/instance/METADATA_KEY?wait_for_change=true&last_etag=ETAG" -H "Metadata-Flavor: Google"
Führen Sie den folgenden Befehl aus, um den ETag-Wert für die
wait-for-change
-Anfrage von Projektmetadaten zu verwenden:curl "http://metadata.google.internal/computeMetadata/v1/project/METADATA_KEY?wait_for_change=true&last_etag=ETAG" -H "Metadata-Flavor: Google"
Ersetzen Sie Folgendes:
METADATA_KEY
: der Instanz- oder Projektmetadatenschlüssel, für den Sie den Wert abfragen möchten.ETAG
: der ETag-Wert für den Metadatenschlüssel.
In diesem Beispiel verwendet der folgende Befehl den ETag-Wert für den Schlüssel
tags
und fragt den Metadateneintrag der Instanz ab.user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/tags?wait_for_change=true&last_etag=411261ca6c9e654e" -H "Metadata-Flavor: Google"
Der Metadatenserver überprüft diesen ETag-Wert und gibt die neuen Inhalte Ihres Metadatenschlüssels zurück, sollte er sich ändern.
Windows-VMs
Führen Sie die folgenden Schritte aus, um den aktuellen ETag-Wert für einen Metadatenschlüssel abzurufen:
- Stellen Sie eine Verbindung zu Ihrer Windows-VM her.
Stellen Sie eine Anfrage an diesen Schlüssel und drucken Sie die Header. Verwenden Sie unter Windows den
Invoke-WebRequest
-Befehl.Führen Sie den folgenden Befehl aus, um das aktuelle ETag für den Metadateneintrag einer VM-Instanz abzurufen:
$value = (Invoke-WebRequest -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri http://metadata.google.internal/computeMetadata/v1/instance/METADATA_KEY) $value.Headers.ETag
Führen Sie den folgenden Befehl aus, um das aktuelle ETag für einen Projektmetadateneintrag abzurufen:
$value = (Invoke-WebRequest -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri http://metadata.google.internal/computeMetadata/v1/project/METADATA_KEY) $value.Headers.ETag
Ersetzen Sie
METADATA_KEY
durch den Instanz- oder Projektmetadatenschlüssel, für den Sie den Wert abfragen möchten.Mit dem folgenden Befehl wird beispielsweise der aktuelle ETag-Wert für den Metadatenschlüssel
tags
der Instanz abgerufen.PS C:> $value = (Invoke-WebRequest -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri http://metadata.google.internal/computeMetadata/v1/instance/tags)
$value.Headers.ETag
Die Ausgabe sieht in etwa so aus:
* 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
Sie können den ETag-Wert dann in Ihrer
wait-for-change
-Anfrage verwenden:Führen Sie den folgenden Befehl aus, um den ETag-Wert für die
wait-for-change
-Anfrage von Instanzmetadaten zu verwenden:$value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/METADATA_KEY?wait_for_change=true&last_etag=ETAG") $value
Führen Sie den folgenden Befehl aus, um den ETag-Wert für die
wait-for-change
-Anfrage von Projektmetadaten zu verwenden:$value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/project/METADATA_KEY?wait_for_change=true&last_etag=ETAG") $value
Ersetzen Sie Folgendes:
METADATA_KEY
: der Instanz- oder Projektmetadatenschlüssel, für den Sie den Wert abfragen möchten.ETAG
: der ETag-Wert für den Metadatenschlüssel.
In diesem Beispiel verwendet der folgende Befehl den ETag-Wert für den Schlüssel
tags
und fragt den Metadateneintrag der Instanz ab.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") $valueDer Metadatenserver überprüft diesen ETag-Wert und gibt die neuen Inhalte Ihres Metadatenschlüssels zurück, sollte er sich ändern.
Python
Das folgende Beispiel für Python zeigt, wie Sie den Metadatenserver programmatisch auf Änderungen überwachen können.
In diesem Beispiel wird das Anfangs-ETag auf 0
gesetzt. Der Metadatenserver gibt keine Antwort mit 0
als ETag-Wert zurück. Wenn 0
in einer Anfrage als letztes ETag erscheint, antwortet der Metadatenserver mit dem aktuellen Wert und dem ETag. Dadurch wird ein Teil des Codes gespart, der zum Abrufen des Anfangswerts und des ETags erforderlich ist.
Zeitlimits festlegen
Wenn Sie möchten, dass Ihre wait-for-change
-Anfrage nach einer bestimmten Anzahl von Sekunden abläuft, können Sie den Parameter timeout_sec
festlegen. Der Parameter timeout_sec
beschränkt die Wartezeit Ihrer Anfrage auf die von Ihnen angegebene Anzahl an Sekunden. Erreicht die Anfrage diesen Wert, ruft sie den aktuellen Inhalt des Metadatenschlüssels auf.
Wenn Sie den timeout_sec
-Parameter einrichten, wird die Anfrage jeweils unabhängig davon, ob sich die Metadatenwerte verändert haben, nach Ablauf der Zeit zurückgegeben. Nur ganze Zahlen dürfen als Zeitlimit festgelegt werden.
Linux
- Stellen Sie eine Verbindung zu Ihrer Linux-VM her.
Verwenden Sie in Ihrer Linux-VM das
curl
-Tool, um eine Abfrage zu stellen.Führen Sie den folgenden Befehl aus, um eine
wait-for-change
-Anfrage mit einem Zeitüberschreitungswert für den Metadateneintrag einer VM-Instanz durchzuführen:curl "http://metadata.google.internal/computeMetadata/v1/instance/METADATA_KEY?wait_for_change=true&timeout_sec=TIMEOUT" -H "Metadata-Flavor: Google"
Führen Sie den folgenden Befehl aus, um eine
wait-for-change
-Anfrage mit einem Zeitüberschreitungswert für einen Projektmetadateneintrag durchzuführen:curl "http://metadata.google.internal/computeMetadata/v1/project/METADATA_KEY?wait_for_change=true&timeout_sec=TIMEOUT" -H "Metadata-Flavor: Google"
Ersetzen Sie Folgendes:
METADATA_KEY
: der Instanz- oder Projektmetadatenschlüssel, für den Sie den Wert abfragen möchten.TIMEOUT
: der Zeitüberschreitungswert.
Mit dem folgenden Befehl wird beispielsweise eine wait-for-change
-Anfrage ausgeführt, die nach 360 Sekunden mit einer Zeitüberschreitung abläuft:
user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/tags?wait_for_change=true&timeout_sec=360" -H "Metadata-Flavor: Google"
Windows
- Stellen Sie eine Verbindung zu Ihrer Windows-VM her.
Verwenden Sie in Ihrer Windows-VM den Befehl
Invoke-RestMethod
, um eine Abfrage zu stellen.Führen Sie den folgenden Befehl aus, um eine
wait-for-change
-Anfrage mit einem Zeitüberschreitungswert für den Metadateneintrag einer VM-Instanz durchzuführen:$value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/METADATA_KEY?wait_for_change=true&timeout_sec=TIMEOUT") $value
Führen Sie den folgenden Befehl aus, um eine
wait-for-change
-Anfrage mit einem Zeitüberschreitungswert für einen Projektmetadateneintrag durchzuführen:$value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/project/METADATA_KEY?wait_for_change=true&timeout_sec=TIMEOUT") $value
Ersetzen Sie Folgendes:
METADATA_KEY
: der Instanz- oder Projektmetadatenschlüssel, für den Sie den Wert abfragen möchten.TIMEOUT
: der Zeitüberschreitungswert.
Mit dem folgenden Befehl wird beispielsweise eine wait-for-change
-Anfrage ausgeführt, die nach 360 Sekunden mit einer Zeitüberschreitung abläuft:
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
Statuscodes
Wenn Sie eine wait-for-change
-Anfrage ausführen, gibt der Metadatenserver Standard-HTTP-Statuscodes zurück, um Erfolg oder Misserfolg anzuzeigen. Tritt ein Fehler auf, kann es sein, dass der Metadatenserver Ihre Anfrage abweist und Ihnen einen Fehlercode schickt. Geschieht dies, sollten Sie Ihre Anwendung so ändern, dass sie fehlertolerant ist und diese Art von Fehlern erkennen und mit ihnen umgehen kann.
Mögliche Statusanzeigen des Metadatenservers:
Status | Beschreibung |
---|---|
HTTP 200 |
Fertig! Ein Wert wurde geändert oder der für timeout_sec angegebene Wert wurde erreicht und die Anfrage wurde erfolgreich beantwortet.
|
Error 400 |
Ihre Anfrage war ungültig. Bitte korrigieren Sie Ihre Anfrage und versuchen Sie es noch einmal. |
Error 404 |
Der Metadatenwert, den Sie angegeben haben, existiert nicht mehr. Der Metadatenserver zeigt diesen Fehler an, wenn Ihre Metadaten gelöscht wurden, während Sie auf eine Veränderung warten. |
Error 503 |
Ein temporärer Serverfehler oder ein temporäres Wartungsereignis ist aufgetreten. Wiederholen Sie die Anfrage. |
Beschränkungen
Anfragen mit dem Header
X-Forwarded-For
werden automatisch vom Metadatenserver abgewiesen. Dieser Header zeigt normalerweise an, dass die Anfrage weitergeleitet wurde und eventuell nicht von einem autorisierten Nutzer stammt. Aus Sicherheitsgründen werden Anfragen dieser Art abgelehnt.Wenn Sie den Befehl
curl
verwenden, um Metadaten vom Server abzurufen, beachten Sie, dass einige codierte Zeichen im Anfragepfad nicht unterstützt werden. Codierte Zeichen werden nur im Abfragepfad unterstützt.Die folgende Anforderung funktioniert beispielsweise eventuell nicht:
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"
Damit diese Anfrage funktioniert, ersetzen Sie das nicht unterstützte codierte Zeichen im Anfragepfad (
%40
) durch den entsprechenden zulässigen Wert (@
).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"
In der folgenden Tabelle sind die codierten Zeichen aufgeführt, die in Anfragepfaden nicht unterstützt werden.
Codiertes Zeichen Zulässiger Wert %21 !
%24 $
%27 '
%28 (
%29 )
%2A *
%2C ,
%40 @
Benutzerdefinierte Metadaten für Ihre VMs aufrufen
Sie können die benutzerdefinierten Metadatenwerte für Ihre Compute Engine-VMs auf eine der folgenden Arten aufrufen:
- Projektweite Metadaten ansehen
- Zonale Projektmetadaten aufrufen (Vorschau)
- Instanzmetadaten aufrufen
Projektweite Metadaten ansehen
Verwenden Sie eine der folgenden Methoden, um benutzerdefinierte Metadaten aufzurufen, die für alle VMs in Ihrem Projekt gelten.
Console
Rufen Sie in der Google Cloud Console die Seite Metadaten auf.
- Auf dem Tab Metadaten können Sie die meisten Ihrer benutzerdefinierten Projektmetadaten mit Ausnahme von SSH-Schlüsselmetadaten überprüfen.
- Auf dem Tab SSH-Schlüssel können Sie alle Metadaten Ihres SSH-Schlüssels auf Projektebene überprüfen.
gcloud
Verwenden Sie den Befehl gcloud compute project-info describe
, um projektweite Metadaten abzufragen:
gcloud compute project-info describe --flatten="commonInstanceMetadata[]"
Die Ausgabe sieht in etwa so aus:
--- fingerprint: HcSFdS_1_1I= items: - key: ssh-keys value: USERNAME:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDWZ... kind: compute#metadata
REST
Erstellen Sie zum Abfragen von Projektmetadaten eine GET
-Anfrage an die project.get
-Methode.
Ersetzen Sie dabei PROJECT_ID
durch Ihre Projekt-ID.
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
Die Ausgabe sieht in etwa so aus:
"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" } ] }, ...
Zonale Projektmetadaten aufrufen
Verwenden Sie eine der folgenden Methoden, um benutzerdefinierte Metadaten aufzurufen, die für alle VM-Instanzen in einer bestimmten Zone in einem Projekt gelten.
gcloud
Verwenden Sie den Befehl gcloud beta compute project-zonal-metadata describe
, um die benutzerdefinierten projektzonalen Metadaten abzufragen.
gcloud beta compute project-zonal-metadata describe \ --zone=ZONE \ --project=PROJECT_ID
Ersetzen Sie Folgendes:
PROJECT_ID
: Ihre Projekt-ID.ZONE
: die Zone, für die Sie die projektzonalen Projektmetadaten aufrufen möchten.
Die Ausgabe sieht in etwa so aus:
{ "fingerprint": "VlRIl8dx9vk=", "metadata": { items: { "key-1": "value-1", "key-2": "value-2" } } }
REST
Senden Sie eine GET
-Anfrage an die Methode instanceSettings().get
, um die benutzerdefinierten projektzonalen Metadaten abzufragen.
GET https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instanceSettings
Ersetzen Sie Folgendes:
PROJECT_ID
: Ihre Projekt-ID.ZONE
: die Zone, für die Sie die projektzonalen Projektmetadaten aufrufen möchten.
Die Ausgabe sieht in etwa so aus:
{ "fingerprint": "VlRIl8dx9vk=", "metadata": { items: { "key-1": "value-1", "key-2": "value-2" } } }
Instanzmetadaten aufrufen
Verwenden Sie eine der folgenden Methoden, um Metadaten aufzurufen, die für eine einzelne VM in Ihrem Projekt gelten.
Console
- Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.
Klicken Sie auf den Namen der VM, für die Sie Metadaten aufrufen möchten.
SSH-Schlüssel für diese VM. Sehen Sie sich im Abschnitt Sicherheit und Zugriff das Feld SSH-Schlüssel an.
Der Wert von
None
gibt an, dass keine SSH-Schlüssel in Instanzmetadaten gespeichert sind.Jeder andere Wert gibt an, dass SSH-Schlüssel in Instanzmetadaten gespeichert sind.
SSH-Schlüssel für ein Projekt. Sehen Sie sich im Abschnitt Sicherheit und Zugriff das Feld Projektweite SSH-Schlüssel blockieren an.
Der Wert
On
gibt an, dass der Wert des Metadatenschlüsselsblock-project-ssh-keys
in den InstanzmetadatenTRUE
ist.Der Wert von
Off
gibt an, dass der Metadatenschlüsselblock-project-ssh-keys
den WertFALSE
hat oder der Schlüssel nicht festgelegt ist.
Alle anderen benutzerdefinierten Metadaten. Rufen Sie den Abschnitt Benutzerdefinierte Metadaten auf. Sie sehen alle benutzerdefinierten Metadatenschlüssel und -werte außer SSH-Schlüsselmetadaten.
gcloud
Verwenden Sie den Befehl gcloud compute instances describe
, um Instanzmetadaten abzufragen:
gcloud compute instances describe VM_NAME --flatten="metadata[]"
Ersetzen Sie VM_NAME
durch den Namen der VM, für die Sie Metadaten suchen möchten.
Die Ausgabe sieht in etwa so aus:
--- fingerprint: MTgTJ5m-Cjs= items: - key: enable-oslogin value: 'true' kind: compute#metadata
REST
Um Metadaten für eine bestimmte VM abzufragen, senden Sie eine GET
-Anfrage an die instances.get
-Methode.
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
Die Ausgabe sieht in etwa so aus:
...... "metadata": { "kind": "compute#metadata", "fingerprint": "XXXXXXVo=", "items": [ { "key": "enable-oslogin", "value": "true" } ] },....
Ersetzen Sie Folgendes:
PROJECT_ID
: Ihre Projekt-IDZONE
: die Zone, in der sich die VM befindetVM_NAME
: der Name der VM
Nächste Schritte
- Mehr über VM-Metadaten erfahren
- Benutzerdefinierte Metadaten festlegen
- Gastattribute festlegen und abfragen