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 attributs metadata et extendedMetadata 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'attribut extendedMetadata pour ajouter des métadonnées personnalisées. Sinon, vous devez inclure les valeurs du moment de lancement pour les clés réservées user_data et ssh_authorized_keys. Si vous utilisez l'attribut metadata 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'appel UpdateInstance échouera.