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 atributos metadata y extendedMetadata 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 atributo extendedMetadata para agregar metadatos personalizados. De lo contrario, deberá incluir los valores de hora de inicio para las claves reservadas user_data y ssh_authorized_keys. Si utiliza el atributo metadata para agregar valores y deja los valores de estas claves reservadas o especifica valores diferentes para ellas, la llamada de UpdateInstance fallará.