Aggiornamento metadati istanza
Puoi aggiungere e aggiornare metadati personalizzati per un'istanza di computazione utilizzando la documentazione CLI (Command Line Interface) o la documentazione dell'API REST.
Quando si crea un'istanza utilizzando l'operazione LaunchInstance, è possibile specificare i metadati personalizzati per l'istanza negli attributi metadata
o extendedMetadata
del tipo di dati LaunchInstanceDetails.
Per aggiornare i metadati di un'istanza, utilizzare l'operazione UpdateInstance, specificando i metadati personalizzati negli attributi metadata
o extendedMetadata
del tipo di dati UpdateInstanceDetails.
L'attributo metadata
supporta coppie di stringhe chiave/valore. L'attributo extendedMetadata
supporta oggetti JSON nidificati. La dimensione combinata di questi due attributi può essere massima di 32.000 byte.
Potrebbero essere necessari fino a un minuto per riflettere le modifiche nel servizio metadati dell'istanza.
Per le autorizzazioni, vedere Criterio IAM obbligatorio per l'utilizzo delle istanze.
Utilizzo dell'API
Quando si utilizza l'operazione UpdateInstance
, i metadati dell'istanza saranno la combinazione dei valori specificati negli attributi metadata
o extendedMetadata
del tipo di dati UpdateInstanceDetails. Qualsiasi set di coppie chiave/valore specificato per questi attributi nell'operazione UpdateInstance
sostituirà i valori esistenti per questi attributi, pertanto è necessario includere tutti i valori dei metadati per l'istanza in ogni chiamata, non solo quelli che si desidera aggiungere. Se si lascia vuoto l'attributo durante la chiamata a UpdateInstance
, verranno utilizzati i valori dei metadati esistenti in tale attributo. Non è possibile specificare due volte un valore per la stessa chiave di metadati, poiché l'operazione UpdateInstance
non riuscirà a causa della presenza di chiavi duplicate.
Per comprendere questo aspetto, considerare lo scenario di esempio in cui è stata creata un'istanza utilizzando l'operazione LaunchInstance
e è stata specificata la seguente coppia chiave/valore per l'attributo metadata
:
"myCustomMetadataKey" : "myCustomMetadataValue"
Se si chiama quindi l'operazione UpdateInstance
e si aggiungono nuovi metadati specificando ulteriori coppie chiave/valore nell'attributo extendedMetadata
, ma si lascia vuoto l'attributo metadata
, non includere la chiave/valore myCustomMetadataKey
nell'attributo extendedMetadata
, poiché questa operazione non riuscirà poiché tale chiave esiste già. Se si specificano valori per l'attributo dei metadati, è necessario includere la chiave o il valore myCustomMetadataKey
per mantenerlo nei metadati dell'istanza. In questo caso, è possibile specificarlo in uno dei due attributi.
Esistono due chiavi riservate, user_data
e ssh_authorized_keys
, che possono essere impostate solo per un'istanza al momento dell'avvio e non possono essere aggiornate in seguito. Se si utilizza l'attributo metadati per aggiungere o aggiornare i metadati per un'istanza, è necessario assicurarsi di includere i valori specificati al momento dell'avvio per entrambe queste chiavi, altrimenti l'operazione UpdateInstance
non riuscirà.
Procedure consigliate per l'aggiornamento dei metadati di un'istanza
Quando si utilizza l'operazione UpdateInstance
, si consiglia quanto segue:
-
Utilizzare l'operazione GetInstance per recuperare i metadati personalizzati esistenti per l'istanza e assicurarsi di includere i valori che si desidera gestire negli attributi appropriati quando si chiama
UpdateInstance
. I valori dei metadati vengono restituiti negli attributimetadata
eextendedMetadata
per l'istanza. Per un esempio di codice che dimostri questa funzionalità, vedere UpdateInstanceExample in SDK for Java. -
A meno che non si stiano aggiornando i metadati personalizzati aggiunti mediante l'attributo
metadata
, utilizzare l'attributoextendedMetadata
per aggiungere metadati personalizzati. In caso contrario, è necessario includere i valori dell'ora di avvio per le chiavi riservateuser_data
essh_authorized_keys
. Se si utilizza l'attributometadata
per aggiungere valori e si escludono i valori per queste chiavi riservate o si specificano valori diversi per esse, la chiamataUpdateInstance
non riuscirà.