Mise à jour des métadonnées d'instance
Vous pouvez ajouter et mettre à jour des métadonnées personnalisées dans une instance de calcul à l'aide de l'interface de ligne de commande (CLI) ou de la documentation sur les API REST.
Lorsque vous créez une instance à l'aide de l'opération LaunchInstance, vous pouvez indiquer des métadonnées personnalisées pour l'instance dans les attributs metadata
ou extendedMetadata
du type de données LaunchInstanceDetails.
Pour mettre à jour les métadonnées d'une instance, utilisez l'opération UpdateInstance, en précisant les métadonnées personnalisées dans les attributs metadata
ou extendedMetadata
du type de données UpdateInstanceDetails.
L'attribut metadata
prend en charge les paires de chaînes clé/valeur. L'attribut extendedMetadata
prend en charge les objets JSON imbriqués. La taille combinée de ces deux attributs peut être au maximum 32 000 octets.
L'application des modifications au service de métadonnées d'instance peut prendre jusqu'à une minute.
Pour les autorisations, voir Politique IAM requise pour l'utilisation des instances.
Utilisation de l'API
Lorsque vous utilisez l'opération UpdateInstance
, les métadonnées de l'instance sont la combinaison des valeurs spécifiées dans les attributs metadata
ou extendedMetadata
du type de données UpdateInstanceDetails. Tout jeu de paires clé/valeur spécifié pour ces attributs dans l'opération UpdateInstance
remplace les valeurs existantes de ces attributs. Vous devez donc inclure toutes les valeurs de métadonnées de l'instance dans chaque appel, et non uniquement celles que vous souhaitez ajouter. Si vous laissez l'attribut vide lors de l'appel de UpdateInstance
, les valeurs de métadonnées existantes dans cet attribut sont utilisées. Vous ne pouvez pas spécifier de valeur pour la même clé de métadonnées deux fois, car cela entraîne l'échec de l'opération UpdateInstance
en raison des clés en double.
Pour le comprendre, considérez l'exemple de scénario où vous avez créé une instance à l'aide de l'opération LaunchInstance
et où vous avez spécifié la paire clé/valeur suivante pour l'attribut metadata
:
"myCustomMetadataKey" : "myCustomMetadataValue"
Si vous appelez ensuite l'opération UpdateInstance
et ajoutez de nouvelles métadonnées en spécifiant des paires clé/valeur supplémentaires dans l'attribut extendedMetadata
, mais que vous laissez l'attribut metadata
vide, n'incluez pas la clé/valeur myCustomMetadataKey
dans l'attribut extendedMetadata
,. Cela entraînerait l'échec de l'opération puisque cette clé existe déjà. Si vous spécifiez des valeurs pour l'attribut de métadonnées, vous devez inclure la clé/valeur myCustomMetadataKey
pour la conserver dans les métadonnées de l'instance. Dans ce cas, vous pouvez la spécifier dans l'un des attributs.
Il existe deux clés réservées, user_data
et ssh_authorized_keys
, qui peuvent uniquement être définies pour une instance au moment du lancement. Elles ne peuvent pas être mises à jour plus tard. Si vous utilisez l'attribut de métadonnées pour ajouter ou mettre à jour des métadonnées dans une instance, vous devez vous assurer d'inclure les valeurs spécifiées au moment du lancement pour ces clés, sinon l'opération UpdateInstance
échouera.
Meilleures pratiques pour la mise à jour des métadonnées d'une instance
Lorsque vous utilisez l'opération UpdateInstance
, nous recommandons d'effectuer les actions suivantes :
-
Utilisez l'opération GetInstance pour extraire les métadonnées personnalisées existantes pour l'instance afin de vous assurer d'inclure les valeurs que vous voulez conserver dans les attributs appropriés lorsque vous appelez
UpdateInstance
. Les valeurs des métadonnées sont retournées dans les attributsmetadata
etextendedMetadata
pour l'instance. Pour un exemple de code, voir UpdateInstanceExample dans la trousse SDK pour Java. -
À moins que vous ne mettiez à jour des métadonnées personnalisées ajoutées à l'aide de l'attribut
metadata
, utilisez l'attributextendedMetadata
pour ajouter des métadonnées personnalisées. Sinon, vous devez inclure les valeurs du moment de lancement pour les clés réservéesuser_data
etssh_authorized_keys
. Si vous utilisez l'attributmetadata
pour ajouter des valeurs et que vous laissez les valeurs de ces clés réservées ou que vous spécifiez des valeurs différentes, l'appelUpdateInstance
échouera.