Actualización de metadatos de instancia
Puede agregar y actualizar metadatos personalizados para una instancia informática mediante la interfaz de línea de comandos o la documentación de la API de REST.
Al crear una instancia con la operación LaunchInstance, puede especificar metadatos personalizados para la instancia en los atributos metadata
o extendedMetadata
del tipo de datos LaunchInstanceDetails.
Para actualizar los metadatos de una instancia, utilice la operación UpdateInstance especificando los metadatos personalizados en los atributos metadata
o extendedMetadata
del tipo de datos UpdateInstanceDetails.
El atributo metadata
soporta pares de cadenas de claves/valores. El atributo extendedMetadata
soporta objetos JSON anidados. El tamaño combinado de estos dos atributos puede ser de 32 000 bytes como máximo.
Los cambios pueden tardar hasta un minuto en reflejarse en el servicio de metadatos de la instancia.
Para obtener permisos, consulte Política de IAM necesaria para trabajar con instancias.
Uso de la API
Cuando utiliza la operación UpdateInstance
, los metadatos de la instancia serán la combinación de los valores especificados en los atributos metadata
o extendedMetadata
del tipo de datos UpdateInstanceDetails. Cualquier conjunto de pares clave/valor especificado para estos atributos en la operación UpdateInstance
reemplazará los valores existentes para estos atributos, por lo que debe incluir todos los valores de metadatos para la instancia en cada llamada, no solo los que desee agregar. Si deja el atributo vacío al llamar UpdateInstance
, se utilizarán los valores de metadatos existentes en ese atributo. No puede especificar un valor para la misma clave de metadatos dos veces; esto hará que la operación UpdateInstance
falle debido a que hay claves duplicadas.
Para comprender esto, tenga en cuenta el escenario de ejemplo en el que creó una instancia utilizando la operación LaunchInstance
y en el que especificó el siguiente par de claves/valores para el atributo metadata
:
"myCustomMetadataKey" : "myCustomMetadataValue"
Si luego llama la operación UpdateInstance
y agrega nuevos metadatos especificando pares de claves/valores adicionales en el atributo extendedMetadata
, pero deja los atributos de metadata
vacíos, no incluya la clave/valor myCustomMetadataKey
en el atributo extendedMetadata
, ya que esto hará que la operación falle porque esa clave ya existe. Si especifica valores para el atributo de metadatos, debe incluir la clave/valor myCustomMetadataKey
para mantenerlo en los metadatos de la instancia. En este caso, puede especificarlo en cualquiera de los atributos.
Hay dos claves reservadas, user_data
y ssh_authorized_keys
, que solo se pueden configurar para una instancia en el momento del inicio, no se pueden actualizar más tarde. Si usa el atributo de metadatos para agregar o actualizar metadatos a una instancia, debe asegurarse de incluir los valores especificados en el momento del inicio para ambas claves; de lo contrario, la operación UpdateInstance
fallará.
Mejores prácticas para actualizar los metadatos de una instancia
Al utilizar la operación UpdateInstance
, recomendamos lo siguiente:
-
Utilice la operación GetInstance para recuperar los metadatos personalizados existentes para la instancia a fin de asegurarse de que incluye los valores que desea mantener en los atributos adecuados al llamar
UpdateInstance
. Los valores de metadatos se devuelven en los atributosmetadata
yextendedMetadata
para la instancia. Para ver un ejemplo de código que demuestre esto, consulte UpdateInstanceExample en el SDK para Java. -
A menos que actualice los metadatos personalizados que se hayan agregado con el atributo
metadata
, utilice el atributoextendedMetadata
para agregar metadatos personalizados. De lo contrario, deberá incluir los valores de hora de inicio para las claves reservadasuser_data
yssh_authorized_keys
. Si utiliza el atributometadata
para agregar valores y deja los valores de estas claves reservadas o especifica valores diferentes para ellas, la llamada deUpdateInstance
fallará.