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.
Berechtigungen finden Sie unter Erforderliche IAM-Policy für die Arbeit 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
UpdateInstanceaufrufen. Die Metadatenwerte werden in den AttributenmetadataundextendedMetadatafü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
metadatahinzugefügt wurden, fügen Sie benutzerdefinierte Metadaten mit dem AttributextendedMetadatahinzu. Andernfalls müssen Sie die Startzeitwerte für die reservierten Schlüsseluser_dataundssh_authorized_keysmit aufnehmen. Wenn Sie Werte mit dem Attributmetadatahinzufügen und diese für die reservierten Schlüssel auslassen bzw. andere Werte dafür angeben, verläuft der Aufruf vonUpdateInstancenicht erfolgreich.