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 les 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 attributsmetadata
etextendedMetadata
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'attributextendedMetadata
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éesuser_data
etssh_authorized_keys
. Si vous utilisez l'attributmetadata
pour ajouter des valeurs et que vous excluez les valeurs ou indiquez d'autres valeurs pour ces clés réservées, l'appelUpdateInstance
échouera.