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 Attributenmetadata
undextendedMetadata
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 AttributextendedMetadata
hinzu. Andernfalls müssen Sie die Startzeitwerte für die reservierten Schlüsseluser_data
undssh_authorized_keys
mit aufnehmen. Wenn Sie Werte mit dem Attributmetadata
hinzufügen und diese für die reservierten Schlüssel auslassen bzw. andere Werte dafür angeben, verläuft der Aufruf vonUpdateInstance
nicht erfolgreich.