Instanzmetadaten aktualisieren

Sie können benutzerdefinierte Metadaten für eine Compute-Instanz mit der Befehlszeilenschnittstelle (CLI) oder REST-API-Dokumentation hinzufügen und aktualisieren.

Wenn Sie eine Instanz mit dem Vorgang LaunchInstance erstellen, können Sie benutzerdefinierte Metadaten für die Instanz in den Attributen metadata und extendedMetadata des Datentyps LaunchInstanceDetails angeben.

Um die Metadaten einer Instanz zu aktualisieren, geben Sie beim Vorgang UpdateInstance die benutzerdefinierten Metadaten in den Attributen metadata und extendedMetadata des Datentyps UpdateInstanceDetails an.

Das Attribut metadata unterstützt Schlüssel/Wert-Zeichenfolgenpaare. Das Attribut extendedMetadata unterstützt verschachtelte JSON-Objekte. Die kombinierte Größe dieser beiden Attribute kann maximal 32.000 Byte betragen.

Es kann bis zu einer Minute dauern, bis die Änderungen im Instance Metadata Service widergespiegelt werden.

Informationen zu Berechtigungen finden Sie unter Erforderliche IAM-Policy für das Arbeiten mit Instanzen.

API verwenden

Wenn Sie den Vorgang UpdateInstance verwenden, entsprechen die Metadaten der Instanz der Kombination der Werte, die Sie in den Attributen metadata und extendedMetadata des Datentyps UpdateInstanceDetails angeben. Alle Schlüssel/Wert-Paare, die für diese Attribute im Vorgang UpdateInstance angegeben sind, ersetzen die vorhandenen Werte für diese Attribute, sodass Sie alle Metadatenwerte für die Instanz in jeden Aufruf aufnehmen müssen und nicht nur die hinzuzufügenden Werte. Wenn Sie das Attribut beim Aufruf von UpdateInstance leer lassen, werden die vorhandenen Metadatenwerte in diesem Attribut verwendet. Sie können einen Wert nicht zweimal für denselben Metadatenschlüssel angeben, da der Vorgang UpdateInstance ansonsten nicht erfolgreich verläuft, weil doppelte Schlüssel vorhanden sind.

Zur Veranschaulichung dient das Beispielszenario, in dem Sie eine Instanz mit dem Vorgang LaunchInstance erstellt und das folgende Schlüssel/Wert-Paar für das Attribut metadata angegeben haben:

"myCustomMetadataKey" : "myCustomMetadataValue"

Wenn Sie dann den Vorgang UpdateInstance aufrufen und neue Metadaten hinzufügen, indem Sie zusätzliche Schlüssel/Wert-Paare im Attribut extendedMetadata angeben, das Attribut metadata jedoch leer lassen, nehmen Sie den Schlüssel/Wert myCustomMetadataKey nicht in das Attribut extendedMetadata auf. Andernfalls verläuft der Vorgang nicht erfolgreich, da dieser Schlüssel bereits vorhanden ist. Wenn Sie Werte für das Attribut "metadata" angeben, müssen Sie den Schlüssel/Wert myCustomMetadataKey angeben, um ihn in den Metadaten der Instanz beizubehalten. In diesem Fall können Sie ihn in einem der Attribute angeben.

Die beiden reservierten Schlüssel user_data und ssh_authorized_keys können für eine Instanz nur beim Start festgelegt werden und später nicht aktualisiert werden. Wenn Sie mit dem Attribut "metadata" einer Instanz Metadaten hinzuzufügen oder aktualisieren, müssen Sie sicherstellen, dass Sie die zum Startzeitpunkt für diese Schlüssel angegebenen Werte aufnehmen. Andernfalls verläuft der Vorgang UpdateInstance nicht erfolgreich.

Best Practices für die Aktualisierung der Metadaten einer Instanz

Bei der Verwendung des Vorgangs UpdateInstance wird Folgendes empfohlen:

  • Rufen Sie mit dem Vorgang GetInstance die vorhandenen benutzerdefinierten Metadaten für die Instanz ab, um sicherzustellen, dass Sie die gewünschten Werte in die entsprechenden Attribute aufnehmen, wenn Sie UpdateInstance aufrufen. Die Metadatenwerte werden in den Attributen metadata und extendedMetadata für die Instanz zurückgegeben. Ein Codebeispiel finden Sie unter UpdateInstanceExample im SDK für Java.

  • Wenn Sie keine benutzerdefinierten Metadaten aktualisieren, die mit dem Attribut metadata hinzugefügt wurden, fügen Sie benutzerdefinierte Metadaten mit dem Attribut extendedMetadata hinzu. Andernfalls müssen Sie die Startzeitwerte für die reservierten Schlüssel user_data und ssh_authorized_keys mit aufnehmen. Wenn Sie Werte mit dem Attribut metadata hinzufügen und diese für die reservierten Schlüssel auslassen bzw. andere Werte dafür angeben, verläuft der Aufruf von UpdateInstance nicht erfolgreich.