Mise à jour des métadonnées d'instance

Vous pouvez ajouter et mettre à jour des métadonnées personnalisées pour une instance de calcul à l'aide de l'interface de ligne de commande ou de la documentation de l'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 spécifiant 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 clé/chaîne de valeur. L'attribut extendedMetadata prend en charge les objets JSON imbriqués. La taille combinée de ces deux attributs peut être de 32 000 octets au maximum.

La prise en compte des modifications dans le service de métadonnées d'instance peut prendre jusqu'à une minute.

Pour obtenir des droits d'accès, reportez-vous à Stratégie 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 correspondront à la combinaison des valeurs indiquées dans les attributs metadata ou extendedMetadata du type de données UpdateInstanceDetails. Tout ensemble 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 pour l'instance dans chaque appel, et pas 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 indiquer deux fois une valeur pour la même clé de métadonnées car cela entraînera l'échec de l'opération UpdateInstance en raison de la présence de clés en double.

Pour comprendre cette situation, prenez en compte l'exemple de scénario dans lequel vous avez créé une instance à l'aide de l'opération LaunchInstance, et indiqué 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 indiquant des paires clé/valeur supplémentaires dans l'attribut extendedMetadata, mais que vous laissez l'attribut metadata vide, n'incluez pas la paire clé/valeur myCustomMetadataKey dans l'attribut extendedMetadata. Cela provoquera l'échec de l'opération car cette clé existe déjà. Si vous spécifiez des valeurs pour l'attribut de métadonnées, vous devez inclure la paire clé/valeur myCustomMetadataKey pour la conserver dans les métadonnées de l'instance. Dans ce cas, vous pouvez l'indiquer dans n'importe lequel attribut.

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 de son lancement. Il est impossible de les mettre à jour ultérieurement. Si vous utilisez l'attribut de métadonnées afin d'ajouter des métadonnées à une instance ou de les mettre à jour, vous devez vous assurer que vous incluez les valeurs indiquées lors du lancement pour ces deux 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 vous recommandons d'effectuer les actions suivantes :

  • Utilisez l'opération GetInstance pour extraire les métadonnées personnalisées existantes de l'instance afin de vous assurer que vous incluez les valeurs à conserver dans les attributs appropriés lorsque vous appelez UpdateInstance. Les valeurs de métadonnées sont renvoyées dans les attributs metadata et extendedMetadata pour l'instance. Pour obtenir un exemple de code illustrant ce cas, reportez-vous à UpdateInstanceExample dans le kit SDK pour Java.

  • A moins que vous ne mettiez à jour les métadonnées personnalisées qui ont été 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 indiquées lors du 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 excluez les valeurs ou indiquez d'autres valeurs pour ces clés réservées, l'appel UpdateInstance échouera.