Actualización de AMIs - AWS Systems Manager

Actualización de AMIs

Los siguientes tutoriales explican cómo actualizar Amazon Machine Image (AMIs) para incluir las revisiones más recientes.

Actualizar una AMI (AWS CLI) de Linux

En esta explicación de AWS Systems Manager Automation, se muestra cómo utilizar la AWS Command Line Interface (AWS CLI) y el manual de procedimientos AWS-UpdateLinuxAmi de Systems Manager para aplicar revisiones de forma automática a una Amazon Machine Image (AMI) de Linux con las versiones más recientes de los paquetes que usted especifique. Automation es una capacidad de AWS Systems Manager. El manual de procedimientos AWS-UpdateLinuxAmi también automatiza la instalación de paquetes y configuraciones adicionales que sean específicos del sitio. Puede actualizar diversas distribuciones de Linux con esta explicación, incluidas Ubuntu Server, CentOS, RHEL, SLES o Amazon Linux AMIs. Para obtener una lista completa de las versiones de Linux compatibles, consulte Requisitos previos de Patch Manager.

El manual de procedimientos AWS-UpdateLinuxAmi le permite automatizar las tareas de mantenimiento de imágenes sin tener que crear el manual de procedimientos en JSON o YAML. Puede utilizar el manual de procedimientos AWS-UpdateLinuxAmi para realizar los siguientes tipos de tareas.

  • Actualizar todos los paquetes de distribución y el software de Amazon en Amazon Linux Red Hat Enterprise Linux, Ubuntu Server, SLES, o Cent OS Amazon Machine Image (AMI). Este es el comportamiento predeterminado del manual de procedimientos.

  • Instalar AWS Systems Manager SSM Agent en una imagen existente para habilitar las capacidades de Systems Manager, como la ejecución remota de comandos mediante AWS Systems Manager Run Command o la recopilación de inventario de software con Inventory.

  • Instalar paquetes de software adicionales.

Antes de empezar

Antes de empezar a trabajar con los manuales de procedimientos, configure los roles y, opcionalmente, EventBridge para Automation. Para obtener más información, consulte Configuración de Automation. Esta explicación también requiere que especifique el nombre de un perfil de instancia de AWS Identity and Access Management (IAM). Para obtener más información sobre cómo crear un perfil de instancia de IAM, consulte Configuración de permisos de instancia requeridos para Systems Manager.

El manual de procedimientos AWS-UpdateLinuxAmi acepta los siguientes parámetros de entrada.

Parámetro Tipo Descripción

SourceAmiId

Cadena

(Obligatorio) ID de AMI de origen. Puede referenciar automáticamente el último ID de una AMI de Amazon EC2 para Linux mediante un parámetro de AWS Systems Manager Parameter Store público. Para obtener más información, consulte Query for the latest Amazon Linux AMI IDs using AWS Systems Manager Parameter Store.

IamInstanceProfileName

Cadena

(Obligatorio) Nombre del rol de perfil de instancia de IAM que ha creado en Configuración de permisos de instancia requeridos para Systems Manager. El rol de perfil de instancia concede permiso a Automation para que realice acciones en sus instancias, como ejecutar comandos o iniciar y detener servicios. El manual de procedimientos utiliza únicamente el nombre del rol de perfil de instancia.

AutomationAssumeRole

Cadena

(Obligatorio) El nombre del rol de servicio de IAM que ha creado en Configuración de Automation. El rol de servicio (también denominado rol de asunción) concede permiso a Automation para asumir el rol de IAM y realizar acciones en su nombre. Por ejemplo, el rol de servicio permite a Automation crear una AMI nueva al ejecutar la acción aws:createImage en un manual de procedimientos. Para este parámetro, debe especificarse el ARN completo.

TargetAmiName

Cadena

(Opcional) El nombre de la nueva AMI después de que se cree. El nombre predeterminado es una cadena generada por el sistema que incluye el ID de la AMI de origen, así como la hora y la fecha de creación.

InstanceType

Cadena

(Opcional) El tipo de instancia que se lanzará como el host de espacio de trabajo. Los tipos de instancia varían según la región. El tipo predeterminado es t2.micro.

PreUpdateScript

Cadena

(Opcional) La URL de un script que se ejecutará antes de que se apliquen las actualizaciones. El valor predeterminado (\"none\") es no ejecutar un script.

PostUpdateScript

Cadena

(Opcional) La URL de un script que se ejecutará después de que se apliquen las actualizaciones de paquete. El valor predeterminado (\"none\") es no ejecutar un script.

IncludePackages

Cadena

(Opcional) Actualizar solo estos paquetes designados. De forma predeterminada (\"all\"), se aplican todas las actualizaciones disponibles.

ExcludePackages

Cadena

(Opcional) Nombres de los paquetes a los que no se aplicarán las actualizaciones, en todas las condiciones. De forma predeterminada (\"none\"), no se excluye ningún paquete.

Pasos de Automation

El manual de procedimientos AWS-UpdateLinuxAmi incluye los siguientes pasos de forma predeterminada.

Paso 1: launchInstance (acción aws:runInstances)

En este paso, se lanza una instancia con los datos de usuario de Amazon Elastic Compute Cloud (Amazon EC2) y un rol de perfil de instancia de IAM. Los datos de usuario instalan SSM Agent adecuado en función del sistema operativo. La instalación del SSM Agent le permite utilizar capacidades de Systems Manager, como Run Command, State Manager e Inventory.

Paso 2: updateOSSoftware (acción aws:runCommand)

Este paso ejecuta los siguientes comandos en la instancia lanzada:

  • Descarga un script de actualización de Amazon Simple Storage Service (Amazon S3).

  • Ejecuta un script de preactualización opcional.

  • Actualiza los paquetes de distribución y el software de Amazon.

  • Ejecuta un script de posactualización opcional.

El registro de ejecución se almacena en la carpeta /tmp para que el usuario la consulte más tarde.

Si desea actualizar un conjunto específico de paquetes, puede proporcionar la lista utilizando el parámetro IncludePackages. Cuando se proporciona, el sistema intenta actualizar únicamente estos paquetes y sus dependencias. No se realizan otras actualizaciones. De forma predeterminada, cuando no se especifica ningún paquete de inclusión, el programa actualiza todos los paquetes disponibles.

Si desea excluir la actualización de un conjunto específico de paquetes, puede proporcionar la lista al parámetro ExcludePackages. Si se proporciona, estos paquetes permanecen en su versión actual, independientemente de otras opciones especificadas. De forma predeterminada, cuando no se especifica ningún paquete de exclusión, no se excluye ningún paquete.

Paso 3: stopInstance (acción aws:changeInstanceState)

Este paso detiene la instancia actualizada.

Paso 4: createImage (acción aws:createImage)

Este paso crea una AMI con un nombre descriptivo que se enlaza con ID de origen y la hora de creación. Por ejemplo: “AMI generada con EC2 Automation a la(s) {{global:DATE_TIME}} a partir de {{SourceAmiId}}” donde DATE_TIME y SourceID representan variables de Automation.

Paso 5: terminateInstance (acción aws:changeInstanceState)

Este paso limpia la automatización con la terminación de la instancia en ejecución.

Salida

La automatización devuelve el ID de la AMI nueva como salida.

nota

De forma predeterminada, cuando Automation ejecuta el manual de procedimientos AWS-UpdateLinuxAmi, el sistema crea una instancia temporal en la VPC predeterminada (172.30.0.0/16). Si ha eliminado la VPC predeterminada, recibirá el siguiente error:

VPC not defined 400

Para solucionar este problema, debe generar una copia del manual de procedimientos AWS-UpdateLinuxAmi y especificar un ID de subred. Para obtener más información, consulte VPC not defined 400.

Para crear una AMI con revisiones mediante Automation
  1. Si aún no lo ha hecho, instale y configure la AWS Command Line Interface (AWS CLI).

    Para obtener más información, consulte Instalación o actualización de la última versión de la AWS CLI.

  2. Ejecute el siguiente comando para ejecutar el manual de procedimientos AWS-UpdateLinuxAmi. Reemplace cada example resource placeholder con su propia información.

    aws ssm start-automation-execution \ --document-name "AWS-UpdateLinuxAmi" \ --parameters \ SourceAmiId=AMI ID, \ IamInstanceProfileName=IAM instance profile, \ AutomationAssumeRole='arn:aws:iam::{{global:ACCOUNT_ID}}:role/AutomationServiceRole'

    El comando devuelve un ID de ejecución. Copie este ID en el portapapeles. Utilizará este ID para ver el estado de la automatización.

    { "AutomationExecutionId": "automation execution ID" }
  3. Ejecute el siguiente comando para ver la automatización con la AWS CLI:

    aws ssm describe-automation-executions
  4. Ejecute el siguiente comando para ver detalles acerca del progreso de la automatización. Reemplace automation execution ID con su propia información.

    aws ssm get-automation-execution --automation-execution-id automation execution ID

    El proceso de actualización puede tardar 30 minutos o más en completarse.

    nota

    También puede monitorear el estado de la automatización en la consola. En la lista, elija la automatización que acaba de ejecutar y, a continuación, elija la pestaña Steps (Pasos). Esta pestaña le muestra el estado de las acciones de la automatización.

Una vez finalizada la automatización, lance una instancia de prueba desde la AMI actualizada para verificar los cambios.

nota

Si se produce un error en cualquier paso de la automatización, la información acerca del error se muestra en la página Automation Executions (Ejecuciones de automatizaciones). La automatización está diseñada para terminar la instancia temporal después de completar correctamente todas las tareas. Si se produce un error en un paso, puede que el sistema no finalice la instancia. Por lo tanto, si se produce un error en un paso, termine manualmente la instancia temporal.