Benutzerdefinierte Metadaten festlegen und entfernen


Jeder Metadateneintrag wird auf dem Metadatenserver als Schlüssel/Wert-Paare gespeichert. Bei Metadatenschlüsseln wird zwischen Groß- und Kleinschreibung unterschieden. Ihre Schlüssel können entweder vordefinierte oder benutzerdefinierte Metadatenschlüssel sein.

Mit benutzerdefinierten Metadaten können Sie eigene Metadaten-Schlüssel/Wert-Paare auf einer einzelnen VM oder in einem Projekt erstellen und verwenden. Sie können neue benutzerdefinierte Metadatenschlüssel hinzufügen, die Werte vorhandener Schlüssel aktualisieren und benutzerdefinierte Metadateneinträge entfernen, wenn Sie diese nicht mehr benötigen. Das Festlegen benutzerdefinierter Metadaten ist nützlich, um beliebige Werte an VMs in einem Projekt zu übergeben. Es ist auch nützlich zum Erstellen von Startscripts und Shutdown-Scripts.

Dieses Dokument enthält Informationen zu folgenden Themen:

Hinweise

  • 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.

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

      Verwenden Sie die von der gcloud CLI bereitgestellten Anmeldedaten, um die REST API-Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung zu verwenden.

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      Weitere Informationen finden Sie unter Für die Verwendung von REST authentifizieren in der Dokumentation zur Google Cloud-Authentifizierung.

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Festlegen oder Entfernen benutzerdefinierter Metadaten auf VMs benötigen:

Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.

Diese vordefinierten Rollen enthalten die Berechtigungen, die zum Festlegen oder Entfernen benutzerdefinierter Metadaten auf VMs erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:

Erforderliche Berechtigungen

Die folgenden Berechtigungen sind erforderlich, um benutzerdefinierte Metadaten auf VMs festzulegen oder zu entfernen:

  • Wenn Ihre VMs Dienstkonten verwenden: iam.serviceAccounts.actAs für die Dienstkonten oder das Projekt
  • So können Sie benutzerdefinierte Projektmetadaten hinzufügen, aktualisieren oder entfernen:
    • compute.projects.get für das Projekt
    • compute.projects.setCommonInstanceMetadata für das Projekt
  • So können Sie benutzerdefinierte zonale Metadaten hinzufügen, aktualisieren oder entfernen:
    • compute.instanceSettings.get für die Instanzeinstellungen in der erforderlichen Zone im Projekt
    • compute.instanceSettings.update für die Instanzeinstellungen in der erforderlichen Zone im Projekt
  • So können Sie benutzerdefinierte Instanzmetadaten hinzufügen, aktualisieren oder entfernen:
    • compute.instances.get auf der VM
    • compute.instances.setMetadata auf der VM

Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.

Beschränkungen

Compute Engine erzwingt insgesamt ein Limit von 512 KB für alle Metadateneinträge. Auch die Größe jedes einzelnen key und value ist nach oben hin begrenzt:

  • Jeder Metadaten-key darf maximal 128 Byte groß sein.
  • Bei jedem Metadaten-key wird zwischen Groß- und Kleinschreibung unterschieden.

    Für zonale Metadaten können Sie in Compute Engine nicht zwei separate Metadatenschlüssel mit demselben String erstellen, selbst wenn sich die Groß-/Kleinschreibung unterscheidet. Wenn Sie beispielsweise bereits einen benutzerdefinierten Metadatenschlüssel für zonale Metadaten namens project-zonal-metadata-key haben, können Sie für zonale Metadaten in dieser Zone keine neuen Metadatenschlüssel erstellen, z. B. Project-Zonal-Metadata-Key, PROJECT-ZONAL-METADATA-KEY oder eine andere Variante des gleichen Strings.

  • Für jeden Metadaten-value gilt ein Höchstwert von 256 KB.

  • Bei allen Metadaten-value wird die Groß- und Kleinschreibung berücksichtigt, mit Ausnahme von booleschen Werten.

SSH-Schlüssel werden beispielsweise als benutzerdefinierte Metadaten unter dem Schlüssel ssh-keys gespeichert. Wenn Ihr Metadateninhalt oder value für diesen Schlüssel die Grenze von 256 KB überschreitet, können Sie keine weiteren SSH-Schlüssel hinzufügen. Sollten Sie Probleme mit dieser Einschränkung haben, können Sie ungenutzte Schlüssel entfernen, um Platz für neue zu schaffen.

Wenn Sie den Inhalt des Start- oder Shutdown-Skripts direkt angeben, wird dieser Inhalt möglicherweise auch als benutzerdefinierte Metadaten gespeichert und auf diese Größenbeschränkung angerechnet. Dies können Sie vermeiden, indem Sie Ihre Startskripts oder Shutdown-Skripts als Datei speichern, die an einem externen Speicherort wie Cloud Storage gehostet wird. Geben Sie beim Erstellen einer VM dann die Startskript-URL an. Auf diese Weise werden diese Dateien auf die VM heruntergeladen und nicht auf dem Metadatenserver gespeichert.

Boolesche Werte

Für Felder, die die booleschen Werte TRUE oder FALSE annehmen, können die folgenden Werte verwendet werden:

Status Alternative Werte
TRUE Y, Yes, 1
FALSE N, No, 0

Bei booleschen Werten wird nicht zwischen Groß- und Kleinschreibung unterschieden. Sie können z. B. False, false oder FALSE verwenden, um ein Feature zu deaktivieren.

Benutzerdefinierte Metadaten auf VMs festlegen

In diesem Abschnitt finden Sie Informationen zum Hinzufügen neuer benutzerdefinierter Metadaten und zum Aktualisieren vorhandener benutzerdefinierter Metadatenwerte für Ihre Compute Engine-VMs auf eine der folgenden Arten:

Benutzerdefinierte Projektmetadaten festlegen

Sie können die benutzerdefinierten Metadaten für alle Instanzen in einem Projekt hinzufügen oder aktualisieren. Verwenden Sie dazu die Google Cloud Console, die Google Cloud CLI oder REST.

Folgen Sie dieser Anleitung, um Metadateneinstellungen auf alle VMs im Projekt anzuwenden. Wenn Sie beispielsweise ein Projektmetadatenpaar für baz=bat definieren, wird es automatisch auf alle VMs im Projekt angewendet.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Metadaten auf.

    Zur Seite "Benutzerdefinierte Metadaten"

    Standardmäßig wird die Seite Metadaten auf dem Tab Zonale Metadaten geöffnet.

  2. Klicken Sie auf den Tab Projektmetadaten.

    Der Tab Projektmetadaten wird geöffnet. Auf dem Tab Metadaten für Projektmetadaten wird eine Liste aller benutzerdefinierten Projektmetadateneinträge für Ihr Projekt angezeigt.

  3. Klicken Sie oben auf der Seite auf Bearbeiten.

  4. Um neue benutzerdefinierte Projektmetadateneinträge hinzuzufügen, gehen Sie auf dem Tab Metadaten für Projektmetadaten so vor:

    1. Klicken Sie zum Ende der Seite und auf Element hinzufügen.
    2. Geben Sie im Feld Schlüssel den Namen Ihres benutzerdefinierten Metadatenschlüssels ein.
    3. Geben Sie im Feld Wert den benutzerdefinierten Wert für die Projektmetadaten ein.
    4. Optional. Wenn Sie weitere benutzerdefinierte Projektmetadateneinträge hinzufügen möchten, wiederholen Sie die vorherigen Schritte für jeden Metadateneintrag, den Sie hinzufügen möchten.
    5. Klicken Sie auf Speichern, um das Hinzufügen Ihrer benutzerdefinierten Projektmetadateneinträge abzuschließen.
  5. So bearbeiten Sie vorhandene benutzerdefinierte Projektmetadateneinträge:

    1. Wechseln Sie zu dem Metadateneintrag, den Sie bearbeiten möchten.
    2. Geben Sie im Feld Schlüssel für diesen Eintrag den neuen Namen ein, um den Namen eines bestimmten benutzerdefinierten Metadatenschlüssels zu aktualisieren.
    3. Geben Sie im Feld Wert für diesen Eintrag den neuen Wert ein, um den Wert eines benutzerdefinierten Projektmetadateneintrags zu aktualisieren.
    4. Optional. Um einen bestimmten benutzerdefinierten Projektmetadateneintrag zu entfernen, klicken Sie auf das Löschsymbol neben dem Metadateneintrag.
    5. Wenn Sie mehrere benutzerdefinierte Projektmetadateneinträge bearbeiten möchten, wiederholen Sie die vorherigen Schritte für jeden Metadateneintrag, den Sie bearbeiten möchten.
    6. Klicken Sie auf Speichern, um die Bearbeitung der benutzerdefinierten Projektmetadateneinträge abzuschließen.

gcloud

Führen Sie den Befehl project-info add-metadata aus.

gcloud compute project-info add-metadata \
    --metadata=KEY=VALUE

Dabei gilt:

  • KEY: der Name Ihres Metadatenschlüssels
  • VALUE: der für diesen Schlüssel gespeicherte Wert

Beispiel

Wenn Sie beispielsweise zwei neue Einträge foo=bar und baz=bat für ein Projekt festlegen möchten, führen Sie den folgenden Befehl aus:

gcloud compute project-info add-metadata \
    --metadata=foo=bar,baz=bat

Sie können mit dem Flag --metadata-from-file optional eine oder mehrere Dateien angeben, aus denen Metadaten gelesen werden sollen.

REST

  1. Optional. Für ein optimistisches Sperrverfahren können Sie optional einen Fingerabdruck angeben.

    Ein Fingerabdruck ist eine Reihe zufälliger Zeichen, die von Compute Engine erstellt wird. Dieser Fingerabdruck ändert sich nach jeder Anfrage. Geben Sie einen falschen an, wird Ihre Anfrage abgelehnt.

    Wenn Sie keinen Fingerabdruck angeben, wird keine Konsistenzprüfung durchgeführt. Die projects().setCommonInstanceMetadata-Anfrage ist dann erfolgreich. Dieses Verhalten unterscheidet sich von den Methoden instances().setMetadata und instanceSettings().patch, bei denen immer ein Fingerabdruck erforderlich ist.

    Rufen Sie die Methode project().get auf, um den aktuellen Fingerabdruck eines Projekts abzurufen.

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
    

    Die Ausgabe sieht etwa so aus:

    {
      "name": "myproject",
      "commonInstanceMetadata": {
        "kind": "compute#metadata",
        "fingerprint": "FikclA7UBC0=",
        ...
      }
    }
    
  2. Senden Sie eine Anfrage an die Methode projects().setCommonInstanceMetadata und legen Sie die benutzerdefinierten Metadaten-Schlüssel/Wert-Paare fest.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/setCommonInstanceMetadata
    
    {
      "fingerprint": "FikclA7UBC0=",
      "items": [
        {
        "key": "foo",
        "value": "bar"
        }
      ]
    }
    

Ersetzen Sie PROJECT_ID durch Ihre Projekt-ID.

Benutzerdefinierte zonale Metadaten festlegen

Wenn Sie benutzerdefinierte zonale Metadaten festlegen, werden die zonalen Metadateneinträge für Ihre VMs in einer bestimmten Zone in einem Projekt hinzugefügt oder aktualisiert. Um Folgendes zu tun können Sie benutzerdefinierte zonale Metadaten festlegen:

  • Sie können neue benutzerdefinierte Metadatenschlüssel für eine bestimmte Zone in einem Projekt erstellen und Metadaten für alle VMs in dieser Zone in diesem Projekt festlegen.
  • Aktualisieren Sie die Werte vorhandener benutzerdefinierter zonaler Metadateneinträge für alle VMs in einer bestimmten Zone in einem Projekt.
  • Überschreiben Sie bei vorhandenen benutzerdefinierten Metadatenschlüsseln mit Projektmetadatenwerten diese Projektmetadatenwerte in bestimmten Zonen und legen Sie stattdessen zonale Metadaten fest. Nachdem Sie zonale Metadaten für diese Schlüssel in einer bestimmten Zone festgelegt haben, verwenden alle VMs in dieser Zone in diesem Projekt die zonalen Metadatenwerte für diese Schlüssel.

Wichtige Hinweise vor dem Festlegen von benutzerdefinierten zonalen Metadaten

Projekt- und zonale Metadateneinträge werden im selben Verzeichnis project/ gespeichert. Wenn Sie verschiedene Werte für dieselben benutzerdefinierten Metadatenschlüssel für VMs auf Projektebene und auf zonaler Ebene festlegen, haben die zonalen Metadatenwerte für diese Schlüssel Vorrang vor den Projektmetadatenwerten in den entsprechenden Zonen.

  • Wenn Sie einen zonalen Metadatenwert für einen Metadatenschlüssel hinzufügen, der bereits einen Projektmetadatenwert hat, überschreibt Compute Engine den Projektmetadatenwert für die VMs in der angegebenen Zone und aktualisiert das Verzeichnis /project mit dem zonalen Wert.
  • Wenn Sie einen neuen Projektmetadatenwert für einen Metadatenschlüssel hinzufügen, der bereits einen zonalen Metadatenwert hat, ändert sich nichts. Compute Engine behält den zonalen Metadatenwert im Verzeichnis /project der jeweiligen Zone bei.
  • Wenn Sie keinen zonalen Metadatenwert für einen benutzerdefinierten Metadatenschlüssel in einer bestimmten Zone angeben, der Schlüssel jedoch einen Projektmetadatenwert hat, haben Ihre VMs in diesen Zonen weiterhin die Projektmetadatenwerte.

Prozedur

Sie können die benutzerdefinierten zonalen Metadaten in einer bestimmten Zone in einem Projekt mithilfe der Google Cloud Console, der Google Cloud CLI oder REST hinzufügen oder aktualisieren.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Metadaten auf.

    Zur Seite "Metadaten"

    Standardmäßig wird die Seite Metadaten auf dem Tab Zonale Metadaten geöffnet.

  2. So fügen Sie auf dem Tab Zonale Metadaten neue benutzerdefinierte zonale Metadateneinträge für bestimmte Zonen in Ihrem Projekt hinzu:

    1. Wählen Sie auf dem Tab Metadaten die Region mit den Zonen aus, für die Sie die Metadateneinträge hinzufügen möchten. Wenn Sie beispielsweise zonale Metadaten in der Zone us-central2-a hinzufügen möchten, wählen Sie us-central2 (Oklahoma) aus. Die Standardauswahl ist us-central1 (Iowa).
    2. Klicken Sie oben auf der Seite auf Hinzufügen. In der Google Cloud Console wird der Bereich Metadaten zu us-central2 hinzufügen geöffnet.
    3. Führen Sie auf dem Tab Metadaten des Bereichs Metadaten zu us-central2 hinzufügen die folgenden Schritte aus:

      1. Klicken Sie auf Element hinzufügen.
      2. Geben Sie im Feld Schlüssel den Namen Ihres benutzerdefinierten Metadatenschlüssels ein.
      3. Geben Sie im Feld Wert den benutzerdefinierten zonalen Metadatenwert ein.
      4. Maximieren Sie die Liste Zonen und wählen Sie alle Zonen aus, für die Sie diesen zonalen Metadateneintrag verwenden möchten.

      5. Optional. Klicken Sie auf Element hinzufügen, um weitere benutzerdefinierte zonale Metadateneinträge hinzuzufügen, und wiederholen Sie die vorherigen Schritte.

    4. Klicken Sie auf Senden, um das Hinzufügen Ihrer benutzerdefinierten zonalen Metadateneinträge abzuschließen.

  3. So bearbeiten Sie vorhandene benutzerdefinierte zonale Metadateneinträge:

    1. Wählen Sie auf dem Tab Metadaten die Region mit den Zonen aus, für die Sie die Metadateneinträge bearbeiten möchten. Wenn Sie beispielsweise zonale Metadaten in der Zone us-central2-a bearbeiten möchten, wählen Sie us-central2 (Oklahoma) aus. Die Standardauswahl ist us-central1 (Iowa).
    2. Wählen Sie die benutzerdefinierten zonalen Metadateneinträge aus, die Sie bearbeiten möchten.
    3. Klicken Sie oben auf der Seite auf Bearbeiten. In der Google Cloud Console wird der Bereich Metadaten in us-central2 bearbeiten geöffnet.

    4. Gehen Sie auf dem Tab Metadaten des Bereichs Metadaten in us-central2 bearbeiten so vor, um Ihren Metadateneintrag zu bearbeiten:

      1. Geben Sie im Feld Schlüssel den neuen Namen für diesen Schlüssel ein, um den Namen eines benutzerdefinierten Metadatenschlüssels zu aktualisieren.
      2. Geben Sie im Feld Wert den neuen zonalen Metadatenwert für diesen Schlüssel ein, um den Wert eines benutzerdefinierten zonalen Metadateneintrags zu aktualisieren.
      3. Wenn Sie die Zonen aktualisieren möchten, für die Sie den benutzerdefinierten zonalen Metadateneintrag verwenden möchten, maximieren Sie die Liste Zonen und wählen Sie alle Zonen aus, für die Sie diesen zonalen Metadateneintrag verwenden möchten.
      4. Optional. Wenn Sie den benutzerdefinierten zonalen Metadateneintrag für bestimmte Zonen entfernen möchten, maximieren Sie die Liste Zonen und heben Sie die Auswahl aller Zonen auf, aus denen Sie diesen zonalen Metadateneintrag entfernen möchten. Alternativ können Sie auf das Löschsymbol für diesen Metadateneintrag klicken, um den jeweiligen benutzerdefinierten zonalen Metadateneintrag aus allen Zonen in diesem Projekt zu entfernen.

      Wenn Sie mehrere Metadateneinträge bearbeiten möchten, wiederholen Sie diesen Schritt für jeden Metadateneintrag, den Sie bearbeiten möchten.

    5. Klicken Sie auf Senden, um die Bearbeitung der benutzerdefinierten zonalen Metadateneinträge abzuschließen.

gcloud

  • Mit dem Befehl gcloud compute project-zonal-metadata add können Sie benutzerdefinierte zonale Metadaten hinzufügen oder aktualisieren.

    gcloud compute project-zonal-metadata add \
      --zone=ZONE \
      --project=PROJECT_ID  \
      --metadata=KEY1=VALUE1,KEY2=VALUE2,...

    Ersetzen Sie Folgendes:

    • PROJECT_ID: Ihre Projekt-ID.
    • ZONE: die Zone, in der Sie zonale Metadaten hinzufügen oder aktualisieren möchten.
    • KEY1, KEY2, ...: die benutzerdefinierten Metadatenschlüssel, für die Sie zonale Metadatenwerte hinzufügen oder aktualisieren möchten.
    • VALUE1, VALUE2, ...: die zonalen Metadatenwerte, die Sie für Ihre vorhandenen und neuen benutzerdefinierten Metadatenschlüssel festlegen möchten. Je nach benutzerdefiniertem Metadatenschlüssel und -wert wird eine der folgenden Aktionen ausgeführt:

    • Wenn der entsprechende benutzerdefinierte Metadatenschlüssel ein vorhandener Schlüssel mit Projektmetadaten ist, überschreibt Compute Engine in der angegebenen Zone den Projektmetadatenwert des Schlüssels mit dem angegebenen zonalen Metadatenwert. Alle VMs in der angegebenen Zone im Projekt übernehmen diese neu angegebenen zonalen Metadaten für diesen Schlüssel und VMs in anderen Zonen behalten ihre geltenden Projekt- oder zonalen Metadatenwerte bei. Wenn Sie den Projektmetadatenwert für diesen Schlüssel in Zukunft aktualisieren, sind die VMs in dieser Zone im Projekt nicht betroffen und verwenden weiterhin den zonalen Metadatenwert für diesen Schlüssel.

    • Wenn der entsprechende benutzerdefinierte Metadatenschlüssel ein neuer Metadatenschlüssel ist, der nicht für vorhandene Projekt- oder zonale Metadaten verwendet wird, erstellt Compute Engine den benutzerdefinierten Metadatenschlüssel und legt diesen Wert als zonale Metadaten im angegebenen Zone fest.

    • Wenn der entsprechende benutzerdefinierte Metadatenschlüssel ein vorhandener Metadatenschlüssel mit einem zonalen Metadatenwert in der angegebenen Zone ist:

      • Wenn sich der angegebene Metadatenwert vom vorhandenen Wert unterscheidet, aktualisiert Compute Engine den zonalen Metadateneintrag mit dem neuen Wert.
      • Wenn der angegebene Metadatenwert mit dem vorhandenen Wert übereinstimmt, bleibt der zonale Metadateneintrag unverändert.

Beispiel: Neuen benutzerdefinierten zonalen Metadateneintrag hinzufügen

Angenommen, Sie haben ein Projekt namens my-project mit den folgenden benutzerdefinierten Metadaten:

  • Projektmetadaten: "key-1":"value-a", "key-2":"value-b" und "key-3":"value-c"
  • Zonale Metadaten in der Zone us-central1-a: "key-1":"value-1" und "key-2":"value-2"

Führen Sie den folgenden Befehl aus, um "key-4":"value-4" als neues benutzerdefiniertes zonales Metadatenpaar in der Zone us-central1-a hinzuzufügen:

gcloud compute project-zonal-metadata add \
    --metadata=key-4=value-4 \
    --project=my-project \
    --zone=us-central1-a

Beispiel: Werte eines vorhandenen benutzerdefinierten zonalen Metadateneintrags aktualisieren

Betrachten Sie dasselbe Beispielprojekt my-project, das jetzt die folgenden benutzerdefinierten Metadaten enthält:

  • Projektmetadaten: "key-1":"value-a", "key-2":"value-b" und "key-3":"value-c"
  • Zonale Metadaten in der Zone us-central1-a: "key-1":"value-1", "key-2":"value-2" und "key-4":"value-4"

Führen Sie den folgenden Befehl aus, um die zonalen Metadatenwerte von key-1 und key-4 in der Zone us-cerntral1-a mit neuen Werten zu aktualisieren.

gcloud compute project-zonal-metadata add \
    --metadata=key-1=new-value-1,key-4=new-value-4 \
    --project=my-project \
    --zone=us-central1-a

Beispiel: Projektmetadatenwert für einen Schlüssel überschreiben und zonalen Metadatenwert verwenden

Betrachten Sie dasselbe Beispielprojekt my-project, das jetzt die folgenden benutzerdefinierten Metadaten enthält:

  • Projektmetadaten: "key-1":"value-a", "key-2":"value-b" und "key-3":"value-c"
  • Zonale Metadaten in der Zone us-central1-a: "key-1":"new-value-1", "key-2":"value-2" und "key-4":"new-value-4"

In diesem Beispielprojekt wird key-3 verwendet, das den Projektmetadatenwert value-c hat. Angenommen, Sie möchten einen zonalen Metadatenwert value-3 für diesen Schlüssel für alle VMs in der Zone us-central1-a festlegen. Wenn Sie den Vorgang ausführen, überschreibt Compute Engine für alle VMs in der Zone us-central1-a die Projektmetadatenwerte und verwendet die zonalen Metadatenwerte. VMs in allen anderen Zonen des Projekts behalten ihre geltenden Projekt- oder zonalen Metadatenwerte für key-3 bei.

Führen Sie den folgenden Befehl aus, um den Projektmetadatenwert für key-3 zu überschreiben und einen zonalen Metadatenwert festzulegen:

gcloud compute project-zonal-metadata add \
    --metadata=key-3=value-3 \
    --project=my-project \
    --zone=us-central1-a

REST

  1. Rufen Sie den aktuellen Fingerabdruck ab und rufen Sie alle vorhandenen Schlüssel/Wert-Paare für das Projekt in dieser Zone auf.

    Für ein optimistisches Sperrverfahren müssen Sie einen Fingerabdruck angeben. Ein Fingerabdruck ist eine Reihe zufälliger Zeichen, die von Compute Engine erstellt wird. Dieser Fingerabdruck ändert sich jedes Mal, wenn Sie eine Anfrage zum Hinzufügen, Aktualisieren oder Entfernen von zonalen Metadaten stellen. Wenn Sie einen nicht übereinstimmenden Fingerabdruck angeben, lehnt Compute Engine Ihre Anfrage ab.

    Wenn Sie keinen Fingerabdruck angeben, wird eine Konsistenzprüfung durchgeführt. Ihre Aktualisierungsanfrage ist dann nicht erfolgreich. Das führt dazu, dass nur jeweils eine Anfrage auf einmal durchgeführt wird und Konflikte vermieden werden. Dieses Verhalten entspricht instances().setMetadata, wobei immer ein Fingerabdruck erforderlich ist.

    Führen Sie eine GET-Anfrage an die Methode instanceSettings().get aus, um den aktuellen Fingerabdruck der zonalen Metadaten abzurufen.

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

    Ersetzen Sie Folgendes:

    • PROJECT_ID: Ihre Projekt-ID.
    • ZONE: die Zone, in der Sie die zonalen Metadaten festlegen möchten.

    Das folgende Beispiel zeigt eine Ausgabe für diese Anfrage:

        {
          "fingerprint": "VlRIl8dx9vk=",
          "metadata": {
            ...
          }
        }
    
  2. Wenn Sie die zonalen Metadaten hinzufügen oder aktualisieren möchten, stellen Sie eine PATCH-Anfrage an die Methode instanceSettings().patch. Sie müssen in Ihrer Anfrage Folgendes angeben:

    • Eine Aktualisierungsmaske Verwenden Sie den Abfrageparameter update_mask. Die Aktualisierungsmaske muss die Metadatenschlüssel für Folgendes enthalten:

      • Die neuen benutzerdefinierten zonalen Metadaten, die Sie hinzufügen möchten
      • Die vorhandenen benutzerdefinierten zonalen Metadaten, für die Sie Werte aktualisieren möchten

      Sie müssen den String metadata.items. als Präfix für jeden Schlüssel hinzufügen, z. B. metadata.items.key1,metadata.items.key3.

    • Geben Sie im Anfragetext Folgendes an:

      • Die Metadatenschlüssel und -werte für die neuen benutzerdefinierten zonalen Metadaten, die Sie hinzufügen möchten
      • Die Metadatenschlüssel und -werte der vorhandenen benutzerdefinierten zonalen Metadaten, die Sie aktualisieren möchten
      • Den aktuellen Fingerabdruckwert

    PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceSettings?update_mask=PREFIXED_METADATA_KEYS
    {
      "fingerprint": "FINGER_PRINT",
      "metadata": {
        "items": {
          "KEY1": "VALUE1",
          "KEY2": "VALUE2",
          ...
        }
      }
    }
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: die ID des Projekts.
    • ZONE: die Zone, in der Sie die zonalen Metadaten festlegen möchten.
    • PREFIXED_METADATA_KEYS: die Liste der Metadatenschlüssel für Folgendes, wobei jedem Schlüssel der String metadata.items. vorangestellt ist:

      • Die neuen benutzerdefinierten zonalen Metadaten, die Sie hinzufügen möchten
      • Die vorhandenen benutzerdefinierten zonalen Metadaten, für die Sie Werte aktualisieren möchten

      Angenommen, Ihre aktuellen zonalen Metadatenschlüssel in einer bestimmten Zone sind key-1 und key-2. Wenn Sie den neuen Schlüssel key-3 für zonale Metadaten in dieser Zone hinzufügen und auch die zonalen Metadaten für einen der vorhandenen Schlüssel key-1 aktualisieren möchten, muss Ihre Aktualisierungsmaske den folgenden String haben:

      metadata.items.key1,metadata.items.key3

    • FINGER_PRINT: der aktuelle Fingerabdruckwert.

    • KEY1, KEY2, ...: die benutzerdefinierten zonalen Metadatenschlüssel, für die Sie Werte hinzufügen oder aktualisieren möchten. Geben Sie alle benutzerdefinierten zonalen Metadatenschlüssel an, die Sie in der Aktualisierungsmaske angegeben haben.

    • VALUE1, VALUE2, ...: die zonalen Metadatenwerte, die Sie für Ihre vorhandenen und neuen benutzerdefinierten Metadatenschlüssel festlegen möchten. Je nach benutzerdefiniertem Metadatenschlüssel und -wert wird eine der folgenden Aktionen ausgeführt:

      • Wenn der entsprechende benutzerdefinierte Metadatenschlüssel ein vorhandener Schlüssel mit Projektmetadaten ist, überschreibt Compute Engine in der angegebenen Zone den Projektmetadatenwert des Schlüssels mit dem angegebenen zonalen Metadatenwert. Alle VMs in der angegebenen Zone im Projekt übernehmen diese neu angegebenen zonalen Metadaten für diesen Schlüssel und VMs in anderen Zonen behalten ihre geltenden Projekt- oder zonalen Metadatenwerte bei. Wenn Sie den Projektmetadatenwert für diesen Schlüssel in Zukunft aktualisieren, sind die VMs in dieser Zone im Projekt nicht betroffen und verwenden weiterhin den zonalen Metadatenwert für diesen Schlüssel.
      • Wenn der entsprechende benutzerdefinierte Metadatenschlüssel ein neuer Metadatenschlüssel ist, der nicht für vorhandene Projekt- oder zonale Metadaten verwendet wird, erstellt Compute Engine den benutzerdefinierten Metadatenschlüssel und legt diesen Wert als zonale Metadaten im angegebenen Zone fest.
      • Wenn der entsprechende benutzerdefinierte Metadatenschlüssel ein vorhandener Metadatenschlüssel mit einem zonalen Metadatenwert in der angegebenen Zone ist:

      • Wenn sich der angegebene Metadatenwert vom vorhandenen Wert unterscheidet, aktualisiert Compute Engine den zonalen Metadateneintrag mit dem neuen Wert.

      • Wenn der angegebene Metadatenwert mit dem vorhandenen Wert übereinstimmt, bleibt der zonale Metadateneintrag unverändert.

Beispiel: Neuen benutzerdefinierten zonalen Metadateneintrag hinzufügen

Angenommen, Sie haben ein Projekt namens my-project mit den folgenden benutzerdefinierten Metadaten:

  • Projektmetadaten: "key-1":"value-a", "key-2":"value-b" und "key-3":"value-c"
  • Zonale Metadaten in der Zone us-central1-a: "key-1":"value-1" und "key-2":"value-2"

Wenn Sie "key-4":"value-4" als neues benutzerdefiniertes zonales Metadatenpaar in der Zone us-central1-a hinzufügen möchten, stellen Sie folgende PATCH-Anfrage:

PATCH https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instanceSettings?update_mask=metadata.items.key-4
{
  "fingerprint": "VlRIl8dx9vk=",
  "metadata": {
  "items": {
    "key-4": "value-4"
    }
  }
}

Beispiel: Werte eines vorhandenen benutzerdefinierten zonalen Metadateneintrags aktualisieren

Betrachten Sie dasselbe Beispielprojekt my-project, das jetzt die folgenden benutzerdefinierten Metadaten enthält:

  • Projektmetadaten: "key-1":"value-a", "key-2":"value-b" und "key-3":"value-c"
  • Zonale Metadaten in der Zone us-central1-a: "key-1":"value-1", "key-2":"value-2" und "key-4":"value-4"

Wenn Sie die zonalen Metadatenwerte von key-1 und key-4 in der Zone us-cerntral1-a mit neuen Werten aktualisieren möchten, stellen Sie folgende PATCH-Anfrage:

PATCH https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instanceSettings?update_mask=metadata.items.key-1,metadata.items.key-4
{
  "fingerprint": "VlRIl8dx9vk=",
  "metadata": {
  "items": {
    "key-1": "new-value-1",
    "key-4": "new-value-4"
    }
  }
}

Beispiel: Projektmetadatenwert für einen Schlüssel überschreiben und zonalen Metadatenwert festlegen

Betrachten Sie dasselbe Beispielprojekt my-project, das jetzt die folgenden benutzerdefinierten Metadaten enthält:

  • Projektmetadaten: "key-1":"value-a", "key-2":"value-b" und "key-3":"value-c"
  • Zonale Metadaten in der Zone us-central1-a: "key-1":"new-value-1", "key-2":"value-2" und "key-4":"new-value-4"

In diesem Beispielprojekt wird key-3 verwendet, das den Projektmetadatenwert value-c hat. Angenommen, Sie möchten einen zonalen Metadatenwert value-3 für diesen Schlüssel für alle VMs in der Zone us-central1-a festlegen. Wenn Sie den Vorgang ausführen, überschreibt Compute Engine für alle VMs in der Zone us-central1-a die Projektmetadatenwerte und verwendet die zonalen Metadatenwerte. VMs in allen anderen Zonen des Projekts behalten ihre geltenden Projekt- oder zonalen Metadatenwerte für key-3 bei.

Wenn Sie den Projektmetadatenwert für key-3 überschreiben und stattdessen den zonalen Metadatenwert value-3 verwenden möchten, stellen Sie folgende PATCH-Anfrage:

PATCH https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instanceSettings?update_mask=metadata.items.key-3
{
  "fingerprint": "VlRIl8dx9vk=",
  "metadata": {
  "items": {
    "key-3": "value-3"
    }
  }
}

Benutzerdefinierte Instanzmetadaten festlegen

Sie können die benutzerdefinierten Metadaten für eine einzelne VM-Instanz mithilfe der Google Cloud Console, der Google Cloud CLI oder REST hinzufügen oder aktualisieren.

Sie können benutzerdefinierte Instanzmetadaten auf eine der folgenden Arten festlegen:

Benutzerdefinierte Instanzmetadaten bei der VM-Erstellung hinzufügen

Folgen Sie dieser Anleitung, um Metadaten auf einer bestimmten VM-Instanz zum Zeitpunkt der Erstellung hinzuzufügen.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Instanz erstellen auf.

    Zur Seite „Instanz erstellen“

  2. Geben Sie die VM-Details an

  3. Maximieren Sie den Abschnitt Erweiterte Optionen und tun Sie Folgendes:

    1. Maximieren Sie den Bereich Verwaltung.
    2. Klicken Sie im Abschnitt Metadaten auf Element hinzufügen, um mehrere Schlüssel/Wert-Paare für Ihre benutzerdefinierten Metadaten hinzuzufügen.
  4. Klicken Sie auf Erstellen, um die VM zu erstellen.

gcloud

Verwenden Sie zum Festlegen benutzerdefinierter Metadaten den Befehl gcloud compute instances create mit dem Flag --metadata.

gcloud compute instances create VM_NAME \
    --metadata=KEY=VALUE

Dabei gilt:

  • VM_NAME: der Name Ihrer VM
  • KEY: der Name Ihres Metadatenschlüssels
  • VALUE: der für diesen Schlüssel gespeicherte Wert

Beispiel

Mit dem folgenden Befehl legen Sie beispielsweise auf einer VM mit dem Namen example-instance einen neuen Schlüssel foo mit dem Wert bar fest:

gcloud compute instances create example-instance \
    --metadata=foo=bar

REST

Verwenden Sie die Methode instances.insert und geben Sie die benutzerdefinierten Metadaten als Teil des Attributs metadata in Ihrer Anfrage an:

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

{
  "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE",
  "name": "VM_NAME",
  "...": [
    {
    }
    ],
  "metadata": {
    "items": [
      {
        "key": "KEY",
        "value": "VALUE"
      }
    ]
  },
  ..
}

Dabei gilt:

  • PROJECT_ID: Ihre Projekt-ID
  • ZONE ist die Zone, in der die VM erstellt werden soll.
  • MACHINE_TYPE legt einen vordefinierten oder benutzerdefinierten Maschinentyp für die neue VM fest.
  • VM_NAME ist der Name der neuen VM.
  • KEY: der Name Ihres Metadatenschlüssels
  • VALUE: der für diesen Schlüssel gespeicherte Wert

Benutzerdefinierte Instanzmetadaten auf einer vorhandenen VM hinzufügen oder aktualisieren

Folgen Sie dieser Anleitung, um Metadaten auf einer bestimmten VM-Instanz zu aktualisieren, die bereits vorhanden ist.

Console

  1. Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.

    Zur Seite "VM-Instanzen"

  2. Klicken Sie auf die Instanz, deren Metadaten Sie aktualisieren möchten.
  3. Klicken Sie oben auf der Seite auf Bearbeiten.
  4. Klicken Sie unter Benutzerdefinierte Metadaten auf Element hinzufügen oder bearbeiten Sie vorhandene Metadaten.
  5. Speichern Sie die Änderungen.

gcloud

Wenn Sie VM-Metadaten mit der gcloud CLI aktualisieren, fügen Sie neue Daten hinzu. Geben Sie nur die Metadatenschlüssel an, die Sie hinzufügen oder ändern möchten. Wenn ein Schlüssel bereits existiert, wird der Wert des Schlüssels mit dem neuen Wert aktualisiert.

Führen Sie den Befehl instances add-metadata aus:

gcloud compute instances add-metadata VM_NAME \
    --metadata=KEY=VALUE,KEY=VALUE

Dabei gilt:

  • VM_NAME: der Name Ihrer VM
  • KEY: der Name Ihres Metadatenschlüssels
  • VALUE: der für diesen Schlüssel gespeicherte Wert

Beispiele

Wenn Sie den Eintrag foo=bar hinzufügen möchten, verwenden Sie Folgendes:

gcloud compute instances add-metadata VM_NAME \
    --metadata=foo=bar

Wenn Sie den Eintrag foo=bar in foo=bat ändern möchten, verwenden Sie Folgendes:

gcloud compute instances add-metadata VM_NAME \
    --metadata=foo=bat

REST

  1. Rufen Sie den aktuellen Fingerabdruck ab und rufen Sie alle vorhandenen Schlüssel/Wert-Paare für die VM auf. Rufen Sie dazu die Methode instances().get auf.

    Ein Fingerabdruck ist eine Reihe zufälliger Zeichen, die von Compute Engine erstellt und für ein optimistisches Sperrverfahren genutzt werden. Zum Aktualisieren der VM müssen Sie den entsprechenden Fingerabdruckwert angeben. Dieser Fingerabdruck ändert sich nach jeder Anfrage. Geben Sie einen falschen an, wird Ihre Anfrage abgelehnt. Das führt dazu, dass nur jeweils eine Aktualisierung auf einmal durchgeführt wird und Konflikte vermieden werden.

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

    Ersetzen Sie Folgendes:

    • PROJECT_ID: Ihre Projekt-ID
    • ZONE: Zone, in der sich Ihre VM befindet
    • VM_NAME: Name Ihrer VM

    Die Ausgabe sieht in etwa so aus:

    {
      ...
      "name": "example-instance",
      "metadata": {
        "kind": "compute#metadata",
        "fingerprint": "zhma6O1w2l8="
        "items": [
          {
            "key": "foo",
            "value": "bar"
          }
        ]
        },
      ...
    }
    
  2. Stellen Sie eine Anfrage an die Methode instances().setMetadata. Geben Sie eine Liste der neuen Metadatenwerte und des aktuellen Werts fingerprint an.

    Wenn die VM bereits Schlüssel/Wert-Paare hat, die Sie behalten möchten, müssen Sie sie der Anfrage mit den neuen Schlüssel/Wert-Paaren hinzufügen:

    Beispiel

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setMetadata
    
    {
    "fingerprint": "zhma6O1w2l8=",
    "items": [
      {
        "key": "foo",
        "value": "bar"
      },
      {
        "key": "baz",
        "value": "bat"
      }
    ]
    }
    

    Dabei gilt:

    • PROJECT_ID: Ihre Projekt-ID
    • ZONE: Zone, in der sich Ihre VM befindet
    • VM_NAME: Name Ihrer VM

Benutzerdefinierte Metadaten aus VMs entfernen

In diesem Abschnitt erfahren Sie, wie Sie benutzerdefinierte Metadateneinträge für Ihre Compute Engine-VMs auf eine der folgenden Arten entfernen:

Benutzerdefinierte Projektmetadaten entfernen

Sie können benutzerdefinierte Projektmetadaten mithilfe der Google Cloud Console oder der Google Cloud CLI entfernen.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Metadaten auf.

    Zur Seite "Metadaten"

    Standardmäßig wird die Seite Metadaten auf dem Tab Zonale Metadaten geöffnet.

  2. Klicken Sie auf den Tab Projektmetadaten.

    Der Tab Metadaten wird für Projektmetadaten geöffnet.

  3. Klicken Sie oben auf der Seite auf Bearbeiten.

  4. Gehen Sie auf dem Tab Metadaten für Projektmetadaten zu dem Metadateneintrag, den Sie entfernen möchten, und klicken Sie daneben auf die Schaltfläche Löschen.

    Wiederholen Sie diesen Schritt für jeden SSH-Schlüssel, den Sie entfernen möchten.

  5. Klicken Sie auf Speichern, um das Entfernen der benutzerdefinierten Projektmetadateneinträge abzuschließen.

gcloud

Verwenden Sie zum Entfernen benutzerdefinierter Projektmetadaten den Befehl gcloud compute project-info remove-metadata.

  • Wenn Sie die benutzerdefinierten Metadateneinträge für bestimmte Schlüssel entfernen möchten, geben Sie diese Schlüssel mit dem Flag --keys an und schließen die Werte dieser Schlüssel aus.
gcloud compute project-info remove-metadata \
    --keys=KEY1,KEY2,...
  • Wenn Sie alle benutzerdefinierten Metadaten für die VM entfernen möchten, geben Sie das Flag --all an.
gcloud compute project-info remove-metadata \
    --all

Ersetzen Sie Folgendes:

  • KEY1, KEY2, ...: die benutzerdefinierten Instanzmetadatenschlüssel, die Sie entfernen möchten.

Benutzerdefinierte zonale Metadaten entfernen

Sie können benutzerdefinierte zonale Metadaten mithilfe der Google Cloud Console, der Google Cloud CLI oder der Compute Engine API entfernen.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Metadaten auf.

    Zur Seite "Metadaten"

    Standardmäßig wird die Seite Metadaten auf dem Tab Zonale Metadaten geöffnet.

  2. Wählen Sie auf dem Tab SSH-Schlüssel die Region mit den Zonen aus, für die Sie die SSH-Schlüssel hinzufügen möchten. Wenn Sie beispielsweise zonale SSH-Schlüssel in der Zone us-central2-a hinzufügen möchten, wählen Sie us-central2 (Oklahoma) aus. Die Standardauswahl ist us-central1 (Iowa).

  3. Zum Entfernen benutzerdefinierter zonaler Metadaten aus allen Zonen in Ihrem Projekt gehen Sie auf dem Tab Metadaten für Zonale Metadaten so vor:

    1. Klicken Sie die Kästchen für alle benutzerdefinierten zonalen Metadateneinträge an, die Sie entfernen möchten.
    2. Klicken Sie oben auf der Seite auf Löschen. In der Google Cloud Console wird ein Dialogfeld angezeigt, in dem Sie Ihre Änderungen prüfen können.
    3. Klicken Sie auf Bestätigen, um die Änderungen zu bestätigen und die benutzerdefinierten zonalen Metadateneinträge zu entfernen.
  4. Alternativ können Sie benutzerdefinierte zonale Metadaten nur aus bestimmten Zonen in Ihrem Projekt auf dem Tab Metadaten für Zonale Metadaten entfernen:

    1. Klicken Sie die Kästchen für alle benutzerdefinierten zonalen Metadateneinträge an, die Sie aus bestimmten Zonen entfernen möchten.
    2. Klicken Sie oben auf der Seite auf Bearbeiten. In der Google Cloud Console wird der Bereich Metadaten in us-central2 bearbeiten geöffnet.
    3. Führen Sie auf dem Tab Metadaten des Bereichs Metadaten in us-central2 bearbeiten für jeden Metadateneintrag, den Sie aus bestimmten Zonen entfernen möchten, die folgenden Schritte aus. :

      1. Maximieren Sie das Menü Zonen.
      2. Entfernen Sie die Häkchen für alle Zonen, aus denen Sie den jeweiligen benutzerdefinierten zonalen Metadateneintrag entfernen möchten.
      3. Alternativ können Sie auf das Löschsymbol für diesen Metadateneintrag klicken, um den jeweiligen benutzerdefinierten zonalen Metadateneintrag aus allen Zonen im Projekt zu entfernen.
      4. Klicken Sie auf Senden, um das Entfernen des Metadateneintrags aus den angegebenen Zonen abzuschließen.

gcloud

Verwenden Sie zum Entfernen von benutzerdefinierten zonalen Metadaten den Befehl gcloud compute project-zonal-metadata remove und geben Sie alle Metadatenschlüssel, die Sie entfernen möchten, mit dem Flag --keys an.

gcloud compute project-zonal-metadata remove \
    --project=PROJECT_ID  \
    --zone=ZONE \
    --keys=KEY1,KEY2,...

Ersetzen Sie Folgendes:

  • PROJECT_ID: Ihre Projekt-ID.
  • ZONE: die Zone, in der Sie die zonalen Metadaten entfernen möchten.
  • KEY1, KEY2...: die benutzerdefinierten zonalen Metadatenschlüssel, die Sie entfernen möchten.

Wenn nach der Ausführung des Befehls einer der angegebenen Schlüssel Projektmetadatenwerte hat, übernehmen die VMs in der angegebenen Zone diese Projektmetadatenwerte. Wenn der Metadateneintrag nur auf zonaler Ebene festgelegt wurde und kein entsprechender Projektmetadatenwert für diesen Schlüssel vorhanden ist, verlieren die VMs in dieser Zone diese Metadateninformationen.

Beispiel:

Nehmen wir als Beispiel das Projekt my-project mit den folgenden benutzerdefinierten Projektmetadaten:

  • Projektmetadaten: "key-1":"value-a", "key-2":"value-b" und "key-3":"value-c"
  • Zonale Metadaten in der Zone us-central1-a: "key-1":"new-value-1", "key-2":"value-2", "key-3":"value-3" und "key-4":"new-value-4"

Führen Sie den folgenden Befehl aus, um alle zonalen Metadaten in der Zone us-central1-a zu entfernen.

gcloud compute project-zonal-metadata remove \
    --metadata=key-1,key-2,key-3,key-4 \
    --project=my-project \
    --zone=us-central1-a

Nachdem Sie den Befehl ausgeführt haben, haben VMs in der Zone us-central1-a die folgenden benutzerdefinierten Projektmetadateneinträge:

  • "key-1":"value-a"
  • "key-2":"value-b"
  • "key-3":"value-c"

REST

  1. Rufen Sie den aktuellen Fingerabdruck ab und rufen Sie alle vorhandenen Schlüssel/Wert-Paare für das Projekt in dieser Zone auf.

    Für ein optimistisches Sperrverfahren müssen Sie einen Fingerabdruck angeben. Ein Fingerabdruck ist eine Reihe zufälliger Zeichen, die von Compute Engine erstellt wird. Dieser Fingerabdruck ändert sich jedes Mal, wenn Sie eine Anfrage zum Hinzufügen, Aktualisieren oder Entfernen von zonalen Metadaten stellen. Wenn Sie einen nicht übereinstimmenden Fingerabdruck angeben, lehnt Compute Engine Ihre Anfrage ab.

    Wenn Sie keinen Fingerabdruck angeben, wird eine Konsistenzprüfung durchgeführt. Ihre Löschanfrage ist dann nicht erfolgreich. Das führt dazu, dass nur jeweils eine Anfrage auf einmal durchgeführt wird und Konflikte vermieden werden. Dieses Verhalten entspricht instances().setMetadata, wobei immer ein Fingerabdruck erforderlich ist.

    Rufen Sie die Methode instanceSettings().get auf, um den aktuellen Fingerabdruck eines Projekts abzurufen.

    GET https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instanceSettings
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: Ihre Projekt-ID.
    • ZONE: die Zone, in der Sie die zonalen Metadaten entfernen möchten.

    Das folgende Beispiel zeigt eine Ausgabe für diese Anfrage:

        {
          "fingerprint": "FikclA7UBC0=",
          "metadata": {
            ...
          }
        }
    
  2. Wenn Sie benutzerdefinierte zonale Metadaten entfernen möchten, stellen Sie eine PATCH-Anfrage an die instanceSettings().patch Methode, wobei Sie die Metadatenschlüssel, für die Sie die zonalen Metadaten entfernen möchten, aus dem Anfragetext ausschließen. Sie müssen in Ihrer Anfrage Folgendes angeben:

    • Eine Aktualisierungsmaske Verwenden Sie den Abfrageparameter update_mask. Die Aktualisierungsmaske muss alle vorhandenen benutzerdefinierten Metadatenschlüssel enthalten, für die Sie die zonalen Metadaten entfernen möchten. Sie müssen den String metadata.items. als Präfix für jeden Schlüssel hinzufügen, z. B. metadata.items.key1,metadata.items.key3.

    • Geben Sie im Anfragetext nur den aktuellen Fingerabdruckwert an. Schließen Sie alle benutzerdefinierten Metadatenschlüssel aus, die Sie in der Aktualisierungsmaske angegeben haben. Wenn Sie einen der Metadatenschlüssel sowohl in die Aktualisierungsmaske als auch in den Anfragetext einfügen, entfernt Compute Engine die zonalen Metadaten für diese Schlüssel nicht.

    PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instanceSettings?update_mask=PREFIXED_METADATA_KEYS
    {
      "fingerprint": "FINGER_PRINT",
      "metadata": {
        "items": {
        }
      }
    }
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: die ID des Projekts.
    • ZONE: die Zone, in der Sie die zonalen Metadaten entfernen möchten.
    • PREFIXED_METADATA_KEYS: die Liste aller vorhandenen benutzerdefinierten Metadatenschlüssel, für die Sie zonale Metadaten entfernen möchten, wobei jedem Schlüssel der String metadata.items. vorangestellt ist “ Schließen Sie diese Metadatenschlüssel aus dem Anfragetext aus, damit Ihre Löschanfrage erfolgreich ist. Wenn Sie einen der Metadatenschlüssel sowohl in die Aktualisierungsmaske als auch in den Anfragetext einfügen, entfernt Compute Engine die zonalen Metadaten für diese Schlüssel nicht.

      Angenommen, Ihre aktuellen Metadatenschlüssel mit zonalen Metadaten sind key-1, key-2, key-3 und key-4 und Sie möchten die zonalen Metadateneinträge für key-1 und key-2 entfernen. Dann muss die Aktualisierungsmaske den folgenden String haben:

      metadata.items.key1,metadata.items.key2

    • FINGER_PRINT: der aktuelle Fingerabdruckwert.

Wenn nach dem Stellen der Anfrage einer der angegebenen Schlüssel Projektmetadatenwerte hat, übernehmen die VMs in der angegebenen Zone diese Projektmetadatenwerte. Wenn der Metadatenschlüssel nur auf zonaler Ebene festgelegt wurde und kein entsprechender Projektmetadatenwert für diesen Schlüssel vorhanden ist, verlieren diese VMs in dieser Zone diese Metadateninformationen.

Beispiel:

Nehmen wir als Beispiel das Projekt my-project mit den folgenden benutzerdefinierten Projektmetadaten:

  • Projektmetadaten: "key-1":"value-a", "key-2":"value-b" und "key-3":"value-c"
  • Zonale Metadaten in der Zone us-central1-a: "key-1":"new-value-1", "key-2":"value-2", "key-3":"value-3" und "key-4":"new-value-4"

Stellen Sie die folgende PATCH-Anfrage, um die zonalen Metadaten für key-1 und key-2 in der Zone us-central1-a zu entfernen.

PATCH https://compute.googleapis.com/compute/beta/projects/my-project/zones/us-central1-a/instanceSettings?update_mask=metadata.items.key-1,metadata.items.key-2
{
  "fingerprint": "FikclA7UBC0=",
  "metadata": {
  "items": {
    }
  }
}

Nachdem diese Anfrage verarbeitet wurde, haben VMs in der Zone us-central1-a die folgenden benutzerdefinierten Metadaten. VMs übernehmen die Projektmetadatenwerte für key-1 und key-2, behalten aber die zonalen Metadaten für key-3 und key-4 bei.

  • Projektmetadaten: "key-1":"value-a" und "key-2":"value-b"
  • Zonale Metadaten in der Zone us-central1-a: "key-3":"value-3" und "key-4":"new-value-4"

Benutzerdefinierte Instanzmetadaten entfernen

Sie können benutzerdefinierte Instanzmetadaten mithilfe der Google Cloud Console, der Google Cloud CLI oder REST entfernen.

Console

  1. Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.

    Zur Seite „VM-Instanzen"

  2. Klicken Sie in der Spalte Name auf den Namen der VM, für die Sie Metadaten entfernen möchten.
  3. Klicken Sie oben auf der Seite auf Bearbeiten.
  4. Klicken Sie im Abschnitt Metadaten für jeden Metadateneintrag, den Sie entfernen möchten, auf Element löschen.
  5. Klicken Sie auf Speichern, um die Änderungen zu bestätigen und die benutzerdefinierten Instanzmetadaten zu entfernen.

gcloud

Verwenden Sie zum Entfernen benutzerdefinierter Instanzmetadaten den Befehl gcloud compute instances remove-metadata.

  • Wenn Sie die benutzerdefinierten Metadateneinträge für bestimmte Schlüssel entfernen möchten, geben Sie diese Schlüssel mit dem Flag --keys an und schließen die Werte dieser Schlüssel aus.
gcloud compute instances remove-metadata VM_NAME \
    --zone=ZONE  \
    --keys=KEY1,KEY2,...
  • Wenn Sie alle benutzerdefinierten Metadaten für die VM entfernen möchten, geben Sie das Flag --all an.
gcloud compute instances remove-metadata VM_NAME \
    --zone=ZONE  \
    --all

Ersetzen Sie Folgendes:

  • PROJECT_ID: Ihre Projekt-ID.
  • ZONE: die Zone Ihrer VM.
  • VM_NAME: Name Ihrer VM
  • KEY1, KEY2, ...: die benutzerdefinierten Instanzmetadatenschlüssel, die Sie entfernen möchten.

REST

  1. Rufen Sie den aktuellen Fingerabdruck ab und rufen Sie alle vorhandenen Schlüssel/Wert-Paare für die VM auf. Rufen Sie dazu die Methode instances().get auf.

    Ein Fingerabdruck ist eine Reihe zufälliger Zeichen, die von Compute Engine erstellt und für ein optimistisches Sperrverfahren genutzt werden. Zum Aktualisieren der VM müssen Sie den entsprechenden Fingerabdruckwert angeben. Dieser Fingerabdruck ändert sich nach jeder Anfrage. Geben Sie einen falschen an, wird Ihre Anfrage abgelehnt. Das führt dazu, dass nur jeweils eine Aktualisierung auf einmal durchgeführt wird und Konflikte vermieden werden.

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

    Ersetzen Sie Folgendes:

    • PROJECT_ID: Ihre Projekt-ID.
    • ZONE: die Zone Ihrer VM.
    • VM_NAME: Name Ihrer VM

    Die Ausgabe sieht in etwa so aus:

    {
      ...
      "name": "example-instance",
      "metadata": {
        "kind": "compute#metadata",
        "fingerprint": "zhma6O1w2l8="
        "items": [
        {
          "key": "key-1",
          "value": "value-1"
        }
        {
          "key": "key-2",
          "value": "value-2"
        }
        ]
      },
      ...
    }
    
  2. Stellen Sie eine Anfrage an die Methode instances().setMetadata. Sie müssen den aktuellen Metadaten-Fingerabdruckwert angeben, damit Ihre Anfrage erfolgreich ist.

    • Wenn Sie alle benutzerdefinierten Metadaten-Schlüssel/Wert-Paare von einer VM entfernen möchten, schließen Sie im Attribut items die Metadatenschlüssel aus, für die Sie Metadatenwerte entfernen möchten.

      POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setMetadata
      
      {
      "fingerprint": "FINGER_PRINT"
      "items": [
        {
          "key": "KEY1"
          "value": "VALUE1"
        }
        {
          "key": "KEY2"
          "value": "VALUE2"
        }
        ...
      ]
      }
      
    • Wenn Sie alle benutzerdefinierten Instanzmetadaten auf der VM entfernen möchten, schließen Sie das Attribut items vollständig aus.

      POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setMetadata
      
      {
      "fingerprint": FINGER_PRINT
      }
      

    Ersetzen Sie Folgendes:

    • PROJECT_ID: Ihre Projekt-ID.
    • ZONE: die Zone Ihrer VM.
    • VM_NAME: Name Ihrer VM
    • FINGER_PRINT: der aktuelle Fingerabdruckwert.
    • KEY1, KEY2, ...: die benutzerdefinierten Instanzmetadatenschlüssel, die Sie entfernen möchten.
    • VALUE1, VALUE2, ...: die Werte der benutzerdefinierten Instanzmetadatenschlüssel, die Sie entfernen möchten.

Nächste Schritte