

• El panel de AWS Systems Manager CloudWatch dejará de estar disponible después del 30 de abril de 2026. Los clientes pueden seguir utilizando la consola de Amazon CloudWatch para ver, crear y administrar sus paneles de Amazon CloudWatch, tal y como lo hacen actualmente. Para obtener más información, consulte la [documentación del panel de Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html). 

# Tutoriales
<a name="automation-tutorials"></a>

Los siguientes tutoriales le serán de ayuda para utilizar Automation de AWS Systems Manager para abordar casos de uso comunes. Estos tutoriales demuestran cómo usar sus propios manuales de procedimientos, manuales de procedimientos predefinidos proporcionados por Automatización y otras herramientas de Systems Manager con otros Servicios de AWS.

**Contents**
+ [Actualización de AMIs](automation-tutorial-update-ami.md)
  + [Actualizar una AMI de Linux](automation-tutorial-update-patch-linux-ami.md)
  + [Actualizar una AMI (AWS CLI) de Linux](automation-tutorial-update-ami.md#update-patch-linux-ami-cli)
  + [Actualización de un Windows Server AMI](automation-tutorial-update-patch-windows-ami.md)
  + [Actualice un golden AMI mediante la Automation, AWS Lambda, y Parameter Store](automation-tutorial-update-patch-golden-ami.md)
    + [Tarea 1: crear un parámetro en Systems Manager Parameter Store](automation-tutorial-update-patch-golden-ami.md#create-parameter-ami)
    + [Tarea 2: crear un rol de IAM para AWS Lambda](automation-tutorial-update-patch-golden-ami.md#create-lambda-role)
    + [Tarea 3: crear una función de AWS Lambda](automation-tutorial-update-patch-golden-ami.md#create-lambda-function)
    + [Tarea 4: crear un manual de procedimientos y aplicar revisiones a la AMI](automation-tutorial-update-patch-golden-ami.md#create-custom-ami-update-runbook)
  + [Actualización de las AMIs mediante Automatización y Jenkins](automation-tutorial-update-patch-ami-jenkins-integration.md)
  + [Actualización de AMIs para grupos de escalado automático](automation-tutorial-update-patch-windows-ami-autoscaling.md)
    + [Crear el manual de procedimientos **PatchAMIAndUpdateASG**](automation-tutorial-update-patch-windows-ami-autoscaling.md#create-autoscaling-update-runbook)
+ [Uso de los manuales de procedimientos de autoservicio de AWS Support](automation-tutorial-support-runbooks.md)
  + [Ejecutar la herramienta EC2Rescue en instancias inaccesibles](automation-ec2rescue.md)
    + [Funcionamiento](automation-ec2rescue.md#automation-ec2rescue-how)
    + [Antes de empezar](automation-ec2rescue.md#automation-ec2rescue-begin)
      + [Concesión de permisos `AWSSupport-EC2Rescue` para realizar acciones en las instancias](automation-ec2rescue.md#automation-ec2rescue-access)
        + [Concesión de permisos mediante políticas de IAM](automation-ec2rescue.md#automation-ec2rescue-access-iam)
        + [Concesión de permisos mediante una plantilla de CloudFormation](automation-ec2rescue.md#automation-ec2rescue-access-cfn)
    + [Ejecución de Automation](automation-ec2rescue.md#automation-ec2rescue-executing)
  + [Restablecimiento de contraseñas y claves de SSH en instancias EC2](automation-ec2reset.md)
    + [Funcionamiento](automation-ec2reset.md#automation-ec2reset-how)
    + [Antes de empezar](automation-ec2reset.md#automation-ec2reset-begin)
      + [Concesión de permisos a AWSSupport-EC2Rescue para realizar acciones en las instancias](automation-ec2reset.md#automation-ec2reset-access)
        + [Concesión de permisos mediante políticas de IAM](automation-ec2reset.md#automation-ec2reset-access-iam)
        + [Concesión de permisos mediante una plantilla de CloudFormation](automation-ec2reset.md#automation-ec2reset-access-cfn)
    + [Ejecución de Automation](automation-ec2reset.md#automation-ec2reset-executing)
+ [Transferir datos a Automatización usando transformadores de entrada](automation-tutorial-eventbridge-input-transformers.md)

# Actualización de AMIs
<a name="automation-tutorial-update-ami"></a>

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

**Topics**
+ [Actualizar una AMI de Linux](automation-tutorial-update-patch-linux-ami.md)
+ [Actualizar una AMI (AWS CLI) de Linux](#update-patch-linux-ami-cli)
+ [Actualización de un Windows Server AMI](automation-tutorial-update-patch-windows-ami.md)
+ [Actualice un golden AMI mediante la Automation, AWS Lambda, y Parameter Store](automation-tutorial-update-patch-golden-ami.md)
+ [Actualización de las AMIs mediante Automatización y Jenkins](automation-tutorial-update-patch-ami-jenkins-integration.md)
+ [Actualización de AMIs para grupos de escalado automático](automation-tutorial-update-patch-windows-ami-autoscaling.md)

# Actualizar una AMI de Linux
<a name="automation-tutorial-update-patch-linux-ami"></a>

Este tutorial de Automatización de Systems Manager le muestra cómo utilizar la consola o AWS CLI y el manual de procedimientos de `AWS-UpdateLinuxAmi` para actualizar una AMI de Linux con las revisiones más recientes de los paquetes que especifique. Automatización es una herramienta 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, Red Hat Enterprise Linux (RHEL) o Amazon Linux AMIs. Para obtener una lista completa de las versiones de Linux compatibles, consulte [Patch ManagerRequisitos previos de](patch-manager-prerequisites.md).

El manual de procedimientos de `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.
+ Actualice todos los paquetes de distribución y el software de Amazon en una Red Hat Enterprise Linux de Amazon Linux o Ubuntu Server Amazon Machine Image (AMI). Este es el comportamiento predeterminado del manual de procedimientos.
+ Instale AWS Systems Manager SSM Agent en una imagen existente para habilitar las herramientas 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 Inventario.
+ 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](automation-setup.md). 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](setup-instance-permissions.md).

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.  | 
|  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](setup-instance-permissions.md). 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. Si especifica el nombre de recurso de Amazon (ARN), se produce un error en la automatización.  | 
|  AutomationAssumeRole  |  Cadena  |  (Obligatorio) El nombre del rol de servicio de IAM que ha creado en [Configuración de Automation](automation-setup.md). 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 (\$1"none\$1") 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 (\$1"none\$1") es no ejecutar un script.  | 
|  IncludePackages  |  Cadena  |  (Opcional) Actualizar solo estos paquetes designados. De forma predeterminada (\$1"all\$1"), 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 (\$1"none\$1"), no se excluye ningún paquete.  | 

**Pasos de Automation**  
El manual de procedimientos `AWS-UpdateLinuxAmi` incluye las siguientes acciones de automatización 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 el SSM Agent adecuado en función del sistema operativo. La instalación del SSM Agent le permite utilizar herramientas de Systems Manager, como Run Command, State Manager e Inventario.

**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 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) \$1\$1global:DATE\$1TIME\$1\$1 a partir de \$1\$1SourceAmiId\$1\$1” donde DATE\$1TIME 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.

**Output**  
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](automation-troubleshooting.md#automation-trbl-common-vpc).

**Para crear una AMI con revisiones mediante Automation (AWS Systems Manager)**

1. Abra la consola de AWS Systems Manager en [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. En el panel de navegación, elija **automatización**.

1. Elija **Ejecutar automatización**.

1. En la lista **Automation document** (Documento de Automation), elija `AWS-UpdateLinuxAmi`.

1. En la sección **Document details (Detalles del documento)**, compruebe que el valor de **Document version (Versión del documento)** es **Default version at runtime (Versión predeterminada en tiempo de ejecución)**.

1. Elija **Siguiente**.

1. En la sección **Execution mode (Modo de ejecución)**, seleccione **Simple Execution (Ejecución sencilla)**.

1. En la sección **Input parameters** (Parámetros de entrada), ingrese la información que ha recopilado en la sección **Before you begin** (Antes de empezar).

1. Elija **Ejecutar**. La consola muestra el estado de la ejecución de Automation.

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.

## Actualizar una AMI (AWS CLI) de Linux
<a name="update-patch-linux-ami-cli"></a>

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. Automatización es una herramienta 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, Red Hat Enterprise Linux (RHEL) o Amazon Linux AMIs. Para obtener una lista completa de las versiones de Linux compatibles, consulte [Patch ManagerRequisitos previos de](patch-manager-prerequisites.md).

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.
+ Actualice todos los paquetes de distribución y el software de Amazon en una RHEL de Amazon Linux o Ubuntu Server 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](automation-setup.md). 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](setup-instance-permissions.md).

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](https://aws.amazon.com/blogs/compute/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](setup-instance-permissions.md). 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](automation-setup.md). 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 (\$1"none\$1") 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 (\$1"none\$1") es no ejecutar un script.  | 
|  IncludePackages  |  Cadena  |  (Opcional) Actualizar solo estos paquetes designados. De forma predeterminada (\$1"all\$1"), 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 (\$1"none\$1"), 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 herramientas de Systems Manager, como Run Command, State Manager e Inventario.

**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) \$1\$1global:DATE\$1TIME\$1\$1 a partir de \$1\$1SourceAmiId\$1\$1” donde DATE\$1TIME 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.

**Output**  
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](automation-troubleshooting.md#automation-trbl-common-vpc).

**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](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).

1. 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"
   }
   ```

1. Ejecute el siguiente comando para ver la automatización con la AWS CLI:

   ```
   aws ssm describe-automation-executions
   ```

1. 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.

# Actualización de un Windows Server AMI
<a name="automation-tutorial-update-patch-windows-ami"></a>

El manual de procedimientos `AWS-UpdateWindowsAmi` le permite automatizar las tareas de mantenimiento de imágenes en sus Amazon Machine Image (AMI) de Amazon Windows sin tener que crear el manual de procedimientos en JSON o YAML. Este manual de procedimientos es compatible con Windows Server 2008 R2 o versiones posteriores. Puede utilizar el manual de procedimientos `AWS-UpdateWindowsAmi` para realizar los siguientes tipos de tareas.
+ Instalar todas las actualizaciones de Windows y actualizar el software de Amazon (comportamiento predeterminado).
+ Instalar actualizaciones de Windows específicas y actualizar el software de Amazon.
+ Personalizar una AMI con sus propios scripts.

**Antes de empezar**  
Antes de empezar a trabajar con manuales de procedimientos, [configure roles para Automation](automation-setup-iam.md) a fin de agregar una política `iam:PassRole` que referencie el ARN del perfil de instancia al que desea conceder acceso. De forma opcional, configure Amazon EventBridge para Automatización, una herramienta de AWS Systems Manager. Para obtener más información, consulte [Configuración de Automation](automation-setup.md). 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](setup-instance-permissions.md).

**nota**  
Las actualizaciones de AWS Systems Manager SSM Agent normalmente se implementan en diferentes regiones y en distintos momentos. Al personalizar o actualizar una AMI, utilice únicamente las AMI de origen publicadas para la región en la que está trabajando. De este modo, se asegurará de que está trabajando con el último SSM Agent lanzado para esa región y evitará problemas de compatibilidad.

El manual de procedimientos `AWS-UpdateWindowsAmi` 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 ID de la versión más reciente de la AMI de Windows Server mediante un parámetro de Systems Manager Parameter Store *público*. Para obtener más información, vea [Consulta de los últimos ID de la AMI de Windows mediante el Parameter Store de AWS Systems Manager](https://aws.amazon.com/blogs/mt/query-for-the-latest-windows-ami-using-systems-manager-parameter-store/).  | 
|  SubnetId  |  Cadena  |  (Opcional) La subred en la que quiere lanzar la instancia temporal. Debe especificar un valor para este parámetro si ha eliminado su VPC predeterminada.  | 
|  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](setup-instance-permissions.md). 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](automation-setup.md). 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.medium.  | 
|  PreUpdateScript  |  Cadena  |  (Opcional) Un script que se ejecutará antes de actualizar la AMI. Ingrese un script en el manual de procedimientos o en el tiempo de ejecución como parámetro.  | 
|  PostUpdateScript  |  Cadena  |  (Opcional) Un script que se ejecutará después de actualizar la AMI. Ingrese un script en el manual de procedimientos o en el tiempo de ejecución como parámetro.  | 
|  IncludeKbs  |  Cadena  |  (Opcional) Especifique uno o varios ID de artículo de la Base de conocimientos de Microsoft (KB) para incluirlos. Puede instalar varios ID utilizando valores separados por comas. Formatos válidos: KB9876543 o 9876543.  | 
|  ExcludeKbs  |  Cadena  |  (Opcional) Especifique uno o varios ID de artículo de la Base de conocimientos de Microsoft (KB) para excluirlos. Puede excluir varios ID utilizando valores separados por comas. Formatos válidos: KB9876543 o 9876543.  | 
|  Categorías  |  Cadena  |  (Opcional) Especifique una o más categorías de actualización. Puede filtrar las categorías usando valores separados por comas. Opciones: Critical Update, Security Update, Definition Update, Update Rollup, Service Pack, Tool, Update o Driver. Los formatos válidos incluyen una sola entrada, por ejemplo: Critical Update. O bien, puede especificar una lista separada por comas: Critical Update,Security Update,Definition Update.  | 
|  SeverityLevels  |  Cadena  |  (Opcional) Especifique uno o varios niveles de seguridad de MSRC asociados con una actualización. Puede filtrar los niveles de gravedad usando valores separados por comas. Opciones: Critical, Important, Low, Moderate o Unspecified. Los formatos válidos incluyen una sola entrada, por ejemplo: Critical. O bien, puede especificar una lista separada por comas: Critical,Important,Low.  | 

**Pasos de Automation**  
El manual de procedimientos `AWS-UpdateWindowsAmi` incluye los siguientes pasos de forma predeterminada.

**Paso 1: launchInstance (acción `aws:runInstances`)**  
Este paso lanza una instancia con un rol de perfil de instancia de IAM desde el especificado `SourceAmiID`.

**Paso 2: runPreUpdateScript (acción `aws:runCommand`)**  
Este paso le permite especificar un script como una cadena que se ejecuta antes de que se instalen las actualizaciones.

**Paso 3: updateEC2Config (acción `aws:runCommand`)**  
En este paso, se utiliza el manual de procedimientos `AWS-InstallPowerShellModule` para descargar un módulo de PowerShell de AWS público. Systems Manager verifica la integridad del módulo con un hash SHA-256. A continuación, Systems Manager revisa el sistema operativo para determinar si debe actualizar EC2Launch o EC2Config. EC2Config se ejecuta desde Windows Server 2008 R2 a Windows Server 2012 R2. EC2Launch se ejecuta en Windows Server 2016.

**Paso 4: updateSSMAgent (acción `aws:runCommand`)**  
Este paso actualiza SSM Agent con el manual de procedimientos `AWS-UpdateSSMAgent`.

**Paso 5: updateAWSPVDriver (acción `aws:runCommand`)**  
Este paso actualiza controladores PV de AWS con el manual de procedimientos `AWS-ConfigureAWSPackage`.

**Paso 6: updateAwsEnaNetworkDriver (acción `aws:runCommand`)**  
Este paso actualiza controladores de red ENA de AWS con el manual de procedimientos `AWS-ConfigureAWSPackage`.

**Paso 7: installWindowsUpdates (acción `aws:runCommand`) **  
Este paso instala actualizaciones de Windows con el manual de procedimientos `AWS-InstallWindowsUpdates`. De forma predeterminada, Systems Manager busca e instala todas las actualizaciones que faltan. Puede cambiar el comportamiento predeterminado si especifica uno de los siguientes parámetros: `IncludeKbs`, `ExcludeKbs`, `Categories` o `SeverityLevels`. 

**Paso 8: runPostUpdateScript (acción `aws:runCommand`)**  
Este paso le permite especificar un script como una cadena que se ejecuta después de que se hayan instalado las actualizaciones.

**Paso 9: runSysprepGeneralize (acción `aws:runCommand`) **  
En este paso, se utiliza el manual de procedimientos `AWS-InstallPowerShellModule` para descargar un módulo de PowerShell de AWS público. Systems Manager verifica la integridad del módulo con un hash SHA-256. A continuación, Systems Manager ejecuta sysprep mediante el uso de métodos admitidos por AWS para EC2Launch (Windows Server 2016) o EC2Config (Windows Server 2008 R2 a 2012 R2).

**Paso 10: stopInstance (acción `aws:changeInstanceState`) **  
Este paso detiene la instancia actualizada. 

**Paso 11: 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) \$1\$1global:DATE\$1TIME\$1\$1 a partir de \$1\$1SourceAmiId\$1\$1” donde DATE\$1TIME y SourceID representan variables de Automation.

**Paso 12: TerminateInstance (acción `aws:changeInstanceState`) **  
Este paso limpia la automatización con la terminación de la instancia en ejecución. 

**Output**  
Esta sección le permite designar las salidas de diversos pasos o los valores de cualquier parámetro como la salida de Automation. De forma predeterminada, la salida es el ID de la AMI de Windows actualizada que se creó con la automatización.

**nota**  
De forma predeterminada, cuando Automation ejecuta el manual de procedimientos `AWS-UpdateWindowsAmi` y crea una instancia temporal, el sistema usa 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-UpdateWindowsAmi` y especificar un ID de subred. Para obtener más información, consulte [VPC not defined 400](automation-troubleshooting.md#automation-trbl-common-vpc).

**Para crear una AMI de Windows 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](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).

1. Ejecute el siguiente comando para ejecutar el manual de procedimientos `AWS-UpdateWindowsAmi`. Reemplace cada *example resource placeholder* con su propia información. El comando de ejemplo que aparece a continuación utiliza una AMI de Amazon EC2 reciente para minimizar el número de revisiones que es necesario aplicar. Si ejecuta este comando más de una vez, debe especificar un valor único para `targetAMIname`. Los nombres para las AMI deben ser únicos.

   ```
   aws ssm start-automation-execution \
       --document-name="AWS-UpdateWindowsAmi" \
       --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"
   }
   ```

1. Ejecute el siguiente comando para ver la automatización con la AWS CLI:

   ```
   aws ssm describe-automation-executions
   ```

1. Ejecute el siguiente comando para ver detalles acerca del progreso de la automatización.

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

**nota**  
En función del número de revisiones aplicados, el proceso de aplicación de revisiones de Windows que se ejecuta en esta automatización de muestra puede tardar 30 minutos o más en completarse.

# Actualice un golden AMI mediante la Automation, AWS Lambda, y Parameter Store
<a name="automation-tutorial-update-patch-golden-ami"></a>

El siguiente ejemplo utiliza el modelo en el que una organización mantiene sus propias AMIs propietarias y les aplica revisiones de forma periódica, en lugar de basarse en las AMIs de Amazon Elastic Compute Cloud (Amazon EC2).

En el siguiente procedimiento se muestra cómo aplicar de forma automática las revisiones de sistema operativo (SO) a una AMI que ya se considera la AMI más actualizada o la *más reciente*. En el ejemplo, el valor predeterminado, el parámetro `SourceAmiId` se define mediante un parámetro de AWS Systems Manager Parameter Store que se denomina `latestAmi`. El valor de `latestAmi` se actualiza mediante una función de AWS Lambda invocada al final de la automatización. Como resultado de este proceso de Automatización, se reducen el tiempo y el esfuerzo empleados en la aplicación de revisiones a las AMIs, ya que las revisiones siempre se aplican a la AMI más actualizada. Parameter Store y Automatización son herramientas de AWS Systems Manager.

**Antes de empezar**  
Configure los roles de Automation y, si así lo desea, Amazon EventBridge para Automation. Para obtener más información, consulte [Configuración de Automation](automation-setup.md).

**Topics**
+ [Tarea 1: crear un parámetro en Systems Manager Parameter Store](#create-parameter-ami)
+ [Tarea 2: crear un rol de IAM para AWS Lambda](#create-lambda-role)
+ [Tarea 3: crear una función de AWS Lambda](#create-lambda-function)
+ [Tarea 4: crear un manual de procedimientos y aplicar revisiones a la AMI](#create-custom-ami-update-runbook)

## Tarea 1: crear un parámetro en Systems Manager Parameter Store
<a name="create-parameter-ami"></a>

Cree un parámetro de cadena en Parameter Store que utilice la siguiente información:
+ **Nombre**: `latestAmi`.
+ **Valor**: un ID de AMI. Por ejemplo: .:` ami-188d6e0e`.

Para obtener información sobre cómo crear un parámetro de cadena de Parameter Store, consulte [Creación de parámetros de Parameter Store en Systems Manager](sysman-paramstore-su-create.md).

## Tarea 2: crear un rol de IAM para AWS Lambda
<a name="create-lambda-role"></a>

Utilice el siguiente procedimiento para crear un rol de servicio de IAM para AWS Lambda. Estas políticas conceden permiso a Lambda para que actualice el valor del parámetro `latestAmi` con una función de Lambda y Systems Manager.

**Para crear un rol de servicio de IAM para Lambda**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación, seleccione **Políticas** y, a continuación, **Crear política**.

1. Seleccione la pestaña **JSON**.

1. Reemplace el contenido predeterminado por la siguiente política. Reemplace cada *example resource placeholder* por su propia información.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "logs:CreateLogGroup",
               "Resource": "arn:aws:logs:us-east-1:111122223333:*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "logs:CreateLogStream",
                   "logs:PutLogEvents"
               ],
               "Resource": [
                   "arn:aws:logs:us-east-1:111122223333:log-group:/aws/lambda/function name:*"
               ]
           }
       ]
   }
   ```

------

1. Elija **Siguiente: etiquetas**.

1. (Opcional) Agregue uno o varios pares de valor etiqueta-clave para organizar, realizar un seguimiento o controlar el acceso a esta política. 

1. Elija **Siguiente: Revisar**.

1. En la página **Review Policy (Revisar política)**, en **Name (Nombre)**, escriba un nombre para la política insertada, como **amiLambda**.

1. Elija **Crear política**.

1. Repita los pasos 2 y 3.

1. Pegue la política siguiente. Reemplace cada *example resource placeholder* por su propia información.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "ssm:PutParameter",
               "Resource": "arn:aws:ssm:us-east-1:111122223333:parameter/latestAmi"
           },
           {
               "Effect": "Allow",
               "Action": "ssm:DescribeParameters",
               "Resource": "*"
           }
       ]
   }
   ```

------

1. Elija **Siguiente: etiquetas**.

1. (Opcional) Agregue uno o varios pares de valor etiqueta-clave para organizar, realizar un seguimiento o controlar el acceso a esta política. 

1. Elija **Siguiente: Revisar**.

1. En la página **Review Policy (Revisar política)**, en **Name (Nombre)**, escriba un nombre para la política insertada, como **amiParameter**.

1. Elija **Crear política**.

1. En el panel de navegación, seleccione **Roles** y luego seleccione **Crear rol**.

1. Inmediatamente debajo de **Caso de uso**, seleccione **Lambda** y, a continuación, **Siguiente**.

1. En la página **Agregar permisos**, utilice el campo **Buscar** para localizar las dos políticas que ha creado anteriormente.

1. Elija la casilla de verificación situada junto a las políticas y, a continuación, elija **Siguiente**.

1. En **Role name (Nombre del rol)**, escriba un nombre para el rol nuevo (por ejemplo, **lambda-ssm-role** o el nombre que prefiera). 
**nota**  
Dado que varias entidades pueden hacer referencia al rol, no puede cambiar el nombre del rol después de crearla.

1. (Opcional) Agregue uno o varios pares clave-valor de etiqueta para organizar o controlar el acceso a este rol o realizar su seguimiento y, a continuación, elija **Crear rol**.

## Tarea 3: crear una función de AWS Lambda
<a name="create-lambda-function"></a>

Utilice el siguiente procedimiento para crear una función de Lambda que actualice automáticamente el valor del parámetro `latestAmi`.

**Cómo crear una función de Lambda**

1. Inicie sesión en la Consola de administración de AWS y abra la consola AWS Lambda en [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. Seleccione **Creación de función**.

1. En la página **Crear función**, elija **Diseñar desde cero**.

1. En **Nombre de la función**, introduzca **Automation-UpdateSsmParam**.

1. En **Tiempo de ejecución**, seleccione **Python 3.11**.

1. En **Arquitectura**, seleccione el tipo de procesador de equipo que Lambda utilizará para ejecutar la función, **x86\$164** o **arm64**, 

1. En la sección **Permisos**, expanda **Cambiar rol de ejecución predeterminado**.

1. Elija **Use an existing role** (Usar un rol existente) y, a continuación, elija el rol de servicio para Lambda que creó en la tarea 2.

1. Seleccione **Creación de función**.

1. En la sección **Origen de código** de la pestaña **lambda\$1function**, elimine el código existente en el campo y, a continuación, pegue el siguiente código de ejemplo.

   ```
   from __future__ import print_function
   
   import json
   import boto3
   
   print('Loading function')
   
   
   #Updates an SSM parameter
   #Expects parameterName, parameterValue
   def lambda_handler(event, context):
       print("Received event: " + json.dumps(event, indent=2))
   
       # get SSM client
       client = boto3.client('ssm')
   
       #confirm  parameter exists before updating it
       response = client.describe_parameters(
          Filters=[
             {
              'Key': 'Name',
              'Values': [ event['parameterName'] ]
             },
           ]
       )
   
       if not response['Parameters']:
           print('No such parameter')
           return 'SSM parameter not found.'
   
       #if parameter has a Description field, update it PLUS the Value
       if 'Description' in response['Parameters'][0]:
           description = response['Parameters'][0]['Description']
           
           response = client.put_parameter(
             Name=event['parameterName'],
             Value=event['parameterValue'],
             Description=description,
             Type='String',
             Overwrite=True
           )
       
       #otherwise just update Value
       else:
           response = client.put_parameter(
             Name=event['parameterName'],
             Value=event['parameterValue'],
             Type='String',
             Overwrite=True
           )
           
       responseString = 'Updated parameter %s with value %s.' % (event['parameterName'], event['parameterValue'])
           
       return responseString
   ```

1. Elija **Archivo, Guardar**.

1. Para probar la función de Lambda, en el menú **Prueba**, elija **Configurar eventos de prueba**.

1. En **Event Name** (Nombre del evento), escriba un nombre para el evento de prueba, como **MyTestEvent**.

1. Reemplace el texto existente por el código JSON siguiente. Reemplace *AMI ID* con su propia información para establecer el valor del parámetro `latestAmi`.

   ```
   {
      "parameterName":"latestAmi",
      "parameterValue":"AMI ID"
   }
   ```

1. Seleccione **Save**.

1. Elija **Test (Probar)** para probar la función. En la pestaña **Resultado de la ejecución**, el estado debe indicarse como **Correcto**, junto con otros detalles sobre la actualización.

## Tarea 4: crear un manual de procedimientos y aplicar revisiones a la AMI
<a name="create-custom-ami-update-runbook"></a>

Utilice el siguiente procedimiento para crear y ejecutar un manual de procedimientos que aplique revisiones a la AMI que ha especificado en el parámetro **latestAmi**. Después de que se complete la automatización, el valor de **latestAmi** se actualiza con el ID de la AMI a la cual se acaba de aplicar revisiones. Las automatizaciones posteriores utilizan la AMI creada con la ejecución anterior.

**Para crear y ejecutar el manual de procedimientos**

1. Abra la consola de AWS Systems Manager en [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. En el panel de navegación, elija **Documentos**.

1. Para **Crear documento**, seleccione **Automatización**.

1. En **Nombre**, escriba **UpdateMyLatestWindowsAmi**.

1. Elija la pestaña **Editor** y después elija **Edit (Editar)**.

1. Elija **Aceptar** cuando se le solicite.

1. En el campo **Editor de documentos**, reemplace el contenido predeterminado con el siguiente manual de procedimientos YAML de muestra.

   ```
   ---
   description: Systems Manager Automation Demo - Patch AMI and Update ASG
   schemaVersion: '0.3'
   assumeRole: '{{ AutomationAssumeRole }}'
   parameters:
     AutomationAssumeRole:
       type: String
       description: '(Required) The ARN of the role that allows Automation to perform the actions on your behalf. If no role is specified, Systems Manager Automation uses your IAM permissions to execute this document.'
       default: ''
     SourceAMI:
       type: String
       description: The ID of the AMI you want to patch.
       default: '{{ ssm:latestAmi }}'
     SubnetId:
       type: String
       description: The ID of the subnet where the instance from the SourceAMI parameter is launched.
     SecurityGroupIds:
       type: StringList
       description: The IDs of the security groups to associate with the instance that's launched from the SourceAMI parameter.
     NewAMI:
       type: String
       description: The name of of newly patched AMI.
       default: 'patchedAMI-{{global:DATE_TIME}}'
     InstanceProfile:
       type: String
       description: The name of the IAM instance profile you want the source instance to use.
     SnapshotId:
       type: String
       description: (Optional) The snapshot ID to use to retrieve a patch baseline snapshot.
       default: ''
     RebootOption:
       type: String
       description: '(Optional) Reboot behavior after a patch Install operation. If you choose NoReboot and patches are installed, the instance is marked as non-compliant until a subsequent reboot and scan.'
       allowedValues:
         - NoReboot
         - RebootIfNeeded
       default: RebootIfNeeded
     Operation:
       type: String
       description: (Optional) The update or configuration to perform on the instance. The system checks if patches specified in the patch baseline are installed on the instance. The install operation installs patches missing from the baseline.
       allowedValues:
         - Install
         - Scan
       default: Install
   mainSteps:
     - name: startInstances
       action: 'aws:runInstances'
       timeoutSeconds: 1200
       maxAttempts: 1
       onFailure: Abort
       inputs:
         ImageId: '{{ SourceAMI }}'
         InstanceType: m5.large
         MinInstanceCount: 1
         MaxInstanceCount: 1
         IamInstanceProfileName: '{{ InstanceProfile }}'
         SubnetId: '{{ SubnetId }}'
         SecurityGroupIds: '{{ SecurityGroupIds }}'
     - name: verifyInstanceManaged
       action: 'aws:waitForAwsResourceProperty'
       timeoutSeconds: 600
       inputs:
         Service: ssm
         Api: DescribeInstanceInformation
         InstanceInformationFilterList:
           - key: InstanceIds
             valueSet:
               - '{{ startInstances.InstanceIds }}'
         PropertySelector: '$.InstanceInformationList[0].PingStatus'
         DesiredValues:
           - Online
       onFailure: 'step:terminateInstance'
     - name: installPatches
       action: 'aws:runCommand'
       timeoutSeconds: 7200
       onFailure: Abort
       inputs:
         DocumentName: AWS-RunPatchBaseline
         Parameters:
           SnapshotId: '{{SnapshotId}}'
           RebootOption: '{{RebootOption}}'
           Operation: '{{Operation}}'
         InstanceIds:
           - '{{ startInstances.InstanceIds }}'
     - name: stopInstance
       action: 'aws:changeInstanceState'
       maxAttempts: 1
       onFailure: Continue
       inputs:
         InstanceIds:
           - '{{ startInstances.InstanceIds }}'
         DesiredState: stopped
     - name: createImage
       action: 'aws:createImage'
       maxAttempts: 1
       onFailure: Continue
       inputs:
         InstanceId: '{{ startInstances.InstanceIds }}'
         ImageName: '{{ NewAMI }}'
         NoReboot: false
         ImageDescription: Patched AMI created by Automation
     - name: terminateInstance
       action: 'aws:changeInstanceState'
       maxAttempts: 1
       onFailure: Continue
       inputs:
         InstanceIds:
           - '{{ startInstances.InstanceIds }}'
         DesiredState: terminated
     - name: updateSsmParam
       action: aws:invokeLambdaFunction
       timeoutSeconds: 1200
       maxAttempts: 1
       onFailure: Abort
       inputs:
           FunctionName: Automation-UpdateSsmParam
           Payload: '{"parameterName":"latestAmi", "parameterValue":"{{createImage.ImageId}}"}'
   outputs:
   - createImage.ImageId
   ```

1. Elija **Create automation (Crear automatización)**.

1. En el panel de navegación, elija **Automatización** y, después, seleccione **Ejecutar automatización**.

1. En la página **Choose document** (Elegir documento), seleccione la pestaña **Owned by me** (De mi propiedad).

1. Busque el manual de procedimientos **UpdateMyLatestWindowsAmi** y seleccione el botón en la tarjeta **UpdateMyLatestWindowsAmi**.

1. Elija **Siguiente**.

1. Elija **Simple execution (Ejecución sencilla)**.

1. Especifique los valores de los parámetros de entrada.

1. Elija **Ejecutar**.

1. Una vez que se complete la automatización, elija **Parameter Store** en el panel de navegación y confirme que el nuevo valor de `latestAmi` coincide con el valor que devuelve la automatización. También puede verificar que el nuevo ID de AMI coincida con la salida de Automation en la sección **AMIs** de la consola de Amazon EC2.

# Actualización de las AMIs mediante Automatización y Jenkins
<a name="automation-tutorial-update-patch-ami-jenkins-integration"></a>

Si su organización utiliza el software Jenkins en una canalización de CI/CD, puede agregar Automatización como un paso posterior a la compilación para preinstalar las versiones de las aplicaciones en las Amazon Machine Images (AMIs). Automatización es una herramienta de AWS Systems Manager. También puede utilizar la característica de programación de Jenkins para llamar a Automatización y crear su propia cadencia de revisiones de sistema operativo (SO).

En el siguiente ejemplo, se muestra cómo invocar a Automatización desde un servidor Jenkins que se ejecuta en las instalaciones o en Amazon Elastic Compute Cloud (Amazon EC2). Para la autenticación, el servidor Jenkins utiliza las credenciales AWS basadas en una política de (IAM) que usted crea en el ejemplo y adjunta al perfil de instancia.

**nota**  
Asegúrese de seguir las prácticas recomendadas de seguridad Jenkins al configurar la instancia.

**Antes de empezar**  
Complete las siguientes tareas antes de configurar Automatización con Jenkins:
+ Complete el ejemplo [Actualice un golden AMI mediante la Automation, AWS Lambda, y Parameter Store](automation-tutorial-update-patch-golden-ami.md). En el siguiente ejemplo, se utiliza el manual de procedimientos **UpdateMyLatestWindowsAmi** creado en ese ejemplo.
+ Configure los roles de IAM para Automation. Systems Manager requiere un rol de perfil de instancia y un ARN de rol de servicio para procesar automatizaciones. Para obtener más información, consulte [Configuración de Automation](automation-setup.md).

**Para crear una política de IAM para el servidor Jenkins**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación, seleccione **Políticas** y, a continuación, **Crear política**.

1. Seleccione la pestaña **JSON**.

1. Reemplace cada *example resource placeholder* con su propia información.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "ssm:StartAutomationExecution",
               "Resource": [
                   "arn:aws:ssm:us-east-1:111122223333:document/UpdateMyLatestWindowsAmi",
                   "arn:aws:ssm:us-east-1:111122223333:automation-execution/*"
               ]
           }
       ]
   }
   ```

------

1. Elija **Revisar política**.

1. En la página **Review Policy (Revisar política)**, en **Name (Nombre)**, escriba un nombre para la política insertada, como **JenkinsPolicy**.

1. Elija **Crear política**.

1. Seleccione **Roles** en el panel de navegación.

1. Elija el perfil de instancia que está asociado a su servidor Jenkins.

1. En la pestaña **Permisos**, elija **Agregar permisos** y, a continuación, **Adjuntar políticas**.

1. En la sección **Otras políticas de permisos**, ingrese el nombre de la política que ha creado en los pasos anteriores. Por ejemplo, **JenkinsPolicy**.

1. Marque la casilla de verificación situada junto a la política y, a continuación, elija **Adjuntar políticas**.

Utilice el siguiente procedimiento para configurar AWS CLI en su servidor Jenkins.

**Configuración del servidor Jenkins para Automatización**

1. Conéctese a su servidor Jenkins en el puerto 8080 con su navegador preferido para acceder a la interfaz de administración.

1. Ingrese la contraseña que se encuentra en `/var/lib/jenkins/secrets/initialAdminPassword`. Para mostrar la contraseña, ejecute el comando siguiente.

   ```
   sudo cat /var/lib/jenkins/secrets/initialAdminPassword
   ```

1. El script de instalación Jenkins lo dirige a la página **Personalizar Jenkins**. Seleccione **Install suggested plugins** (Instalar complementos sugeridos).

1. Una vez que se complete la instalación, elija **Credenciales de Administrador**, seleccione **Guardar credenciales** y, a continuación, seleccione **Empezar a usarJenkins**.

1. En el panel de navegación de la izquierda, elija **AdministrarJenkins** y, a continuación, elija **Administrar complementos**.

1. Seleccione la pestaña **Available** (Disponible) y, a continuación, ingrese **Amazon EC2 plugin**.

1. Seleccione la casilla de verificación para **Amazon EC2 plugin** y, a continuación, **Install without restart** (Instalar sin reiniciar).

1. Una vez que se complete la instalación, seleccione **Go back to the top page** (Volver a la página superior).

1. Elija **Administrar Jenkins** y, a continuación, seleccione **Administrar nodos y nubes**.

1. En la sección **Configurar nubes**, seleccione **Agregar una nube nueva** y, a continuación, elija **Amazon EC2**.

1. Ingrese su información en los campos restantes. Asegúrese de seleccionar la opción **Usar perfil de instancia de EC2 para obtener credenciales**.

Utilice el siguiente procedimiento a fin de configurar su proyecto de Jenkins para invocar a Automatización.

**Configuración del servidor Jenkins para invocar a Automatización**

1. Abra la consola Jenkins en un navegador web.

1. Elija el proyecto que desee configurar con Automation y, a continuación, elija **Configure**.

1. En la pestaña **Build**, elija **Add Build Step**.

1. Elija **Execute shell** o **Execute Windows batch command** (en función de su sistema operativo).

1. En el campo **Command** (Comando), ejecute un comando de la AWS CLI como el siguiente. Reemplace cada *example resource placeholder* con su propia información.

   ```
   aws ssm start-automation-execution \
           --document-name runbook name \
           --region Región de AWS of your source AMI \
           --parameters runbook parameters
   ```

   El siguiente comando de ejemplo usa el manual de procedimientos **UpdateMyLatestWindowsAmi** y el parámetro `latestAmi` de Systems Manager creado en [Actualice un golden AMI mediante la Automation, AWS Lambda, y Parameter Store](automation-tutorial-update-patch-golden-ami.md).

   ```
   aws ssm start-automation-execution \
           --document-name UpdateMyLatestWindowsAmi \
           --parameters \
               "sourceAMIid='{{ssm:latestAmi}}'"
           --region region
   ```

   En Jenkins, el comando se parece al ejemplo de la siguiente captura de pantalla.  
![\[Un comando de ejemplo en el software de Jenkins.\]](http://docs.aws.amazon.com/es_es/systems-manager/latest/userguide/images/sysman-ami-jenkins2.png)

1. En el proyecto Jenkins, seleccione **Construir ahora**. Jenkins devuelve un resultado similar al del siguiente ejemplo.  
![\[Ejemplo de salida de comandos en el software de Jenkins.\]](http://docs.aws.amazon.com/es_es/systems-manager/latest/userguide/images/sysman-ami-jenkins.png)

# Actualización de AMIs para grupos de escalado automático
<a name="automation-tutorial-update-patch-windows-ami-autoscaling"></a>

En el ejemplo siguiente se actualiza un grupo de escalado automático con una AMI a la que recién se ha aplicado revisiones. Este enfoque garantiza que las nuevas imágenes se pongan automáticamente a disposición de los entornos informáticos que utilizan grupos de escalado automático

El paso final de la automatización en este ejemplo utiliza una función de Python para crear una nueva plantilla de lanzamiento que utiliza la AMI a la que recién se ha aplicado revisiones. A continuación, el grupo de escalado automático se actualiza para utilizar la nueva plantilla de lanzamiento. En este tipo de escenario de escalado automático, los usuarios podrían terminar las instancias existentes en el grupo de escalado automático para forzar el lanzamiento de una instancia nueva que utilice la nueva imagen. O los usuarios podrían esperar y permitir que los eventos de escala vertical y horizontal lancen instancias más recientes de forma natural.

**Antes de empezar**  
Complete las tareas siguientes antes de comenzar este ejemplo.
+ Configure los roles de IAM para Automatización, una herramienta de AWS Systems Manager. Systems Manager requiere un rol de perfil de instancia y un ARN de rol de servicio para procesar automatizaciones. Para obtener más información, consulte [Configuración de Automation](automation-setup.md).

## Crear el manual de procedimientos **PatchAMIAndUpdateASG**
<a name="create-autoscaling-update-runbook"></a>

Utilice el siguiente procedimiento para crear el manual de procedimientos **PatchAMIAndUpdateASG** que aplica revisiones a la AMI que especifica para el parámetro **SourceAMI**. El manual de procedimientos también actualiza un grupo de escalado automático para utilizar la última AMI a la que se ha aplicado revisiones.

**Para crear y ejecutar el manual de procedimientos**

1. Abra la consola de AWS Systems Manager en [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. En el panel de navegación, elija **Documentos**.

1. En el menú desplegable **Create document** (Crear documento), seleccione **Automation**.

1. En el campo **Nombre**, escriba **PatchAMIAndUpdateASG**.

1. Seleccione la pestaña **Editor** (Editor) y elija **Edit** (Editar).

1. Elija **OK** (Aceptar) cuando se le solicite y elimine el contenido en el campo **Document editor** (Editor de documentos).

1. En el campo **Document editor** (Editor de documentos), pegue el siguiente contenido del manual de procedimientos YAML de muestra.

   ```
   ---
   description: Systems Manager Automation Demo - Patch AMI and Update ASG
   schemaVersion: '0.3'
   assumeRole: '{{ AutomationAssumeRole }}'
   parameters:
     AutomationAssumeRole:
       type: String
       description: '(Required) The ARN of the role that allows Automation to perform the actions on your behalf. If no role is specified, Systems Manager Automation uses your IAM permissions to execute this document.'
       default: ''
     SourceAMI:
       type: String
       description: '(Required) The ID of the AMI you want to patch.'
     SubnetId:
       type: String
       description: '(Required) The ID of the subnet where the instance from the SourceAMI parameter is launched.'
     SecurityGroupIds:
       type: StringList
       description: '(Required) The IDs of the security groups to associate with the instance launched from the SourceAMI parameter.'
     NewAMI:
       type: String
       description: '(Optional) The name of of newly patched AMI.'
       default: 'patchedAMI-{{global:DATE_TIME}}'
     TargetASG:
       type: String
       description: '(Required) The name of the Auto Scaling group you want to update.'
     InstanceProfile:
       type: String
       description: '(Required) The name of the IAM instance profile you want the source instance to use.'
     SnapshotId:
       type: String
       description: (Optional) The snapshot ID to use to retrieve a patch baseline snapshot.
       default: ''
     RebootOption:
       type: String
       description: '(Optional) Reboot behavior after a patch Install operation. If you choose NoReboot and patches are installed, the instance is marked as non-compliant until a subsequent reboot and scan.'
       allowedValues:
         - NoReboot
         - RebootIfNeeded
       default: RebootIfNeeded
     Operation:
       type: String
       description: (Optional) The update or configuration to perform on the instance. The system checks if patches specified in the patch baseline are installed on the instance. The install operation installs patches missing from the baseline.
       allowedValues:
         - Install
         - Scan
       default: Install
   mainSteps:
     - name: startInstances
       action: 'aws:runInstances'
       timeoutSeconds: 1200
       maxAttempts: 1
       onFailure: Abort
       inputs:
         ImageId: '{{ SourceAMI }}'
         InstanceType: m5.large
         MinInstanceCount: 1
         MaxInstanceCount: 1
         IamInstanceProfileName: '{{ InstanceProfile }}'
         SubnetId: '{{ SubnetId }}'
         SecurityGroupIds: '{{ SecurityGroupIds }}'
     - name: verifyInstanceManaged
       action: 'aws:waitForAwsResourceProperty'
       timeoutSeconds: 600
       inputs:
         Service: ssm
         Api: DescribeInstanceInformation
         InstanceInformationFilterList:
           - key: InstanceIds
             valueSet:
               - '{{ startInstances.InstanceIds }}'
         PropertySelector: '$.InstanceInformationList[0].PingStatus'
         DesiredValues:
           - Online
       onFailure: 'step:terminateInstance'
     - name: installPatches
       action: 'aws:runCommand'
       timeoutSeconds: 7200
       onFailure: Abort
       inputs:
         DocumentName: AWS-RunPatchBaseline
         Parameters:
           SnapshotId: '{{SnapshotId}}'
           RebootOption: '{{RebootOption}}'
           Operation: '{{Operation}}'
         InstanceIds:
           - '{{ startInstances.InstanceIds }}'
     - name: stopInstance
       action: 'aws:changeInstanceState'
       maxAttempts: 1
       onFailure: Continue
       inputs:
         InstanceIds:
           - '{{ startInstances.InstanceIds }}'
         DesiredState: stopped
     - name: createImage
       action: 'aws:createImage'
       maxAttempts: 1
       onFailure: Continue
       inputs:
         InstanceId: '{{ startInstances.InstanceIds }}'
         ImageName: '{{ NewAMI }}'
         NoReboot: false
         ImageDescription: Patched AMI created by Automation
     - name: terminateInstance
       action: 'aws:changeInstanceState'
       maxAttempts: 1
       onFailure: Continue
       inputs:
         InstanceIds:
           - '{{ startInstances.InstanceIds }}'
         DesiredState: terminated
     - name: updateASG
       action: 'aws:executeScript'
       timeoutSeconds: 300
       maxAttempts: 1
       onFailure: Abort
       inputs:
         Runtime: python3.11
         Handler: update_asg
         InputPayload:
           TargetASG: '{{TargetASG}}'
           NewAMI: '{{createImage.ImageId}}'
         Script: |-
           from __future__ import print_function
           import datetime
           import json
           import time
           import boto3
   
           # create auto scaling and ec2 client
           asg = boto3.client('autoscaling')
           ec2 = boto3.client('ec2')
   
           def update_asg(event, context):
               print("Received event: " + json.dumps(event, indent=2))
   
               target_asg = event['TargetASG']
               new_ami = event['NewAMI']
   
               # get object for the ASG we're going to update, filter by name of target ASG
               asg_query = asg.describe_auto_scaling_groups(AutoScalingGroupNames=[target_asg])
               if 'AutoScalingGroups' not in asg_query or not asg_query['AutoScalingGroups']:
                   return 'No ASG found matching the value you specified.'
   
               # gets details of an instance from the ASG that we'll use to model the new launch template after
               source_instance_id = asg_query.get('AutoScalingGroups')[0]['Instances'][0]['InstanceId']
               instance_properties = ec2.describe_instances(
                   InstanceIds=[source_instance_id]
               )
               source_instance = instance_properties['Reservations'][0]['Instances'][0]
   
               # create list of security group IDs
               security_groups = []
               for group in source_instance['SecurityGroups']:
                   security_groups.append(group['GroupId'])
   
               # create a list of dictionary objects for block device mappings
               mappings = []
               for block in source_instance['BlockDeviceMappings']:
                   volume_query = ec2.describe_volumes(
                       VolumeIds=[block['Ebs']['VolumeId']]
                   )
                   volume_details = volume_query['Volumes']
                   device_name = block['DeviceName']
                   volume_size = volume_details[0]['Size']
                   volume_type = volume_details[0]['VolumeType']
                   device = {'DeviceName': device_name, 'Ebs': {'VolumeSize': volume_size, 'VolumeType': volume_type}}
                   mappings.append(device)
   
               # create new launch template using details returned from instance in the ASG and specify the newly patched AMI
               time_stamp = time.time()
               time_stamp_string = datetime.datetime.fromtimestamp(time_stamp).strftime('%m-%d-%Y_%H-%M-%S')
               new_template_name = f'{new_ami}_{time_stamp_string}'
               try:
                   ec2.create_launch_template(
                       LaunchTemplateName=new_template_name,
                       LaunchTemplateData={
                           'BlockDeviceMappings': mappings,
                           'ImageId': new_ami,
                           'InstanceType': source_instance['InstanceType'],
                           'IamInstanceProfile': {
                               'Arn': source_instance['IamInstanceProfile']['Arn']
                           },
                           'KeyName': source_instance['KeyName'],
                           'SecurityGroupIds': security_groups
                       }
                   )
               except Exception as e:
                   return f'Exception caught: {str(e)}'
               else:
                   # update ASG to use new launch template
                   asg.update_auto_scaling_group(
                       AutoScalingGroupName=target_asg,
                       LaunchTemplate={
                           'LaunchTemplateName': new_template_name
                       }
                   )
                   return f'Updated ASG {target_asg} with new launch template {new_template_name} which uses AMI {new_ami}.'
   outputs:
   - createImage.ImageId
   ```

1. Elija **Create automation (Crear automatización)**.

1. En el panel de navegación, elija **Automatización** y, después, seleccione **Ejecutar automatización**.

1. En la página **Choose document** (Elegir documento), seleccione la pestaña **Owned by me** (De mi propiedad).

1. Busque el manual de procedimientos **PatchAMIAndUpdateASG** y seleccione el botón de la tarjeta **PatchAMIAndUpdateASG**.

1. Elija **Siguiente**.

1. Elija **Simple execution (Ejecución sencilla)**.

1. Especifique los valores de los parámetros de entrada. Asegúrese de que el `SubnetId` y `SecurityGroupIds` que especifica permitan el acceso a los puntos de conexión públicos de Systems Manager o a los puntos de conexión de la interfaz para Systems Manager.

1. Elija **Ejecutar**.

1. Una vez finalizada la automatización, en la consola de Amazon EC2, elija **Auto Scaling** y, a continuación, **Launch Templates** (Plantillas de lanzamiento). Verifique que ve la nueva plantilla de lanzamiento y que utiliza la nueva AMI.

1. Seleccione **Auto Scaling** y, a continuación, **Auto Scaling Groups** (grupo de escalado automático). Verifique que el grupo de escalado automático utiliza la nueva plantilla de lanzamiento.

1. Termine una o más instancias de su grupo de escalado automático. Las instancias de reemplazo se lanzarán con la nueva AMI.

# Uso de los manuales de procedimientos de autoservicio de AWS Support
<a name="automation-tutorial-support-runbooks"></a>

En esta sección, se describe cómo utilizar algunas de las automatizaciones de autoservicio que creó el equipo de AWS Support. Estas automatizaciones lo ayudan a administrar sus recursos de AWS.

**Flujos de trabajo de automatización de Support**  
Los flujos de trabajo de automatización de Support (SAW, Support Automation Workflow) son manuales de procedimientos de automatización que escribe y mantiene el equipo de AWS Support. Estos manuales de procedimientos lo ayudan a solucionar problemas comunes en sus recursos de AWS, monitorear e identificar de forma proactiva los problemas de red, recopilar y analizar registros, entre muchas otras actividades.

Los unbooks SAW utilizan el prefijo **`AWSSupport`**. Por ejemplo, [https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-awssupport-activatewindowswithamazonlicense.html](https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-awssupport-activatewindowswithamazonlicense.html).

Asimismo, los clientes con planes Business Support\$1 y superiores a AWS Support tienen acceso a los manuales de procedimientos que utilizan el prefijo **`AWSPremiumSupport`**. Por ejemplo, [https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-awspremiumsupport-troubleshootEC2diskusage.html](https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-awspremiumsupport-troubleshootEC2diskusage.html).

Para obtener más información acerca de AWS Support, consulte [Introducción a AWS Support](https://docs.aws.amazon.com/awssupport/latest/user/getting-started.html).

**Topics**
+ [Ejecutar la herramienta EC2Rescue en instancias inaccesibles](automation-ec2rescue.md)
+ [Restablecimiento de contraseñas y claves de SSH en instancias EC2](automation-ec2reset.md)

# Ejecutar la herramienta EC2Rescue en instancias inaccesibles
<a name="automation-ec2rescue"></a>

EC2Rescue puede ayudarlo a diagnosticar y resolver problemas de las instancias de Amazon Elastic Compute Cloud (Amazon EC2) para Linux y Windows Server. Puede ejecutar la herramienta manualmente, tal y como se describe en [Uso de EC2Rescue para Linux Server](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Linux-Server-EC2Rescue.html) y [Uso de EC2Rescue para Windows Server](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/Windows-Server-EC2Rescue.html). También puede ejecutar la herramienta de forma automática a través de Automatización de Systems Manager y el manual de procedimientos **`AWSSupport-ExecuteEC2Rescue`**. Automatización es una herramienta de AWS Systems Manager. El manual de procedimientos **`AWSSupport-ExecuteEC2Rescue`** está diseñado para realizar una combinación de acciones de Systems Manager, acciones de CloudFormation y funciones de Lambda que automatizan los pasos que normalmente se necesitan para utilizar EC2Rescue. 

Puede utilizar el manual de procedimientos **`AWSSupport-ExecuteEC2Rescue`** para solucionar diferentes tipos de problemas del sistema operativo (OS). No se admiten instancias con volúmenes raíz cifrados. Consulte los temas siguientes para obtener una lista completa:

**Windows**: consulte *Acción de rescate* en [Uso de EC2Rescue for Windows Server con la línea de comando](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2rw-cli.html#ec2rw-rescue).

**Linux** y **macOS**: algunos módulos de EC2Rescue para Linux detectan problemas e intentan remediarlos. Para obtener más información, consulte la documentación [https://github.com/awslabs/aws-ec2rescue-linux/tree/master/docs](https://github.com/awslabs/aws-ec2rescue-linux/tree/master/docs) de cada módulo en GitHub.

## Funcionamiento
<a name="automation-ec2rescue-how"></a>

La solución de problemas de una instancia con Automation y el manual de procedimientos **`AWSSupport-ExecuteEC2Rescue`** funciona de la siguiente manera:
+ Usted especifica el ID de la instancia inaccesible y activa el manual de procedimientos.
+ El sistema crea una VPC temporal y, a continuación, ejecuta una serie de funciones de Lambda para configurar la VPC.
+ El sistema identifica una subred para su VPC temporal en la misma zona de disponibilidad que la instancia original.
+ El sistema lanza una instancia auxiliar de habilitada para SSM y temporal.
+ El sistema detiene la instancia original y crea una copia de seguridad. A continuación, asocia el volumen raíz original a la instancia auxiliar.
+ El sistema utiliza Run Command para ejecutar EC2Rescue en la instancia auxiliar. EC2Rescue identifica e intenta corregir los problemas en el volumen raíz original asociado. Cuando finaliza, EC2Rescue vuelve a asociar el volumen raíz a la instancia original.
+ El sistema reinicia la instancia original y termina la instancia temporal. El sistema también termina la VPC temporal y las funciones de Lambda creadas al inicio de la Automation.

## Antes de empezar
<a name="automation-ec2rescue-begin"></a>

Antes de ejecutar la siguiente Automation, haga lo siguiente:
+ Copie el ID de instancia de la instancia inaccesible. Especificará este ID en el procedimiento.
+ Opcionalmente, recopile el ID de una subred en la misma zona de disponibilidad que su instancia inaccesible. La instancia de EC2Rescue se creará en esta subred. Si no especifica ninguna subred, Automation crea una nueva VPC temporal en su Cuenta de AWS. Verifique que su Cuenta de AWS tiene al menos una VPC disponible. De forma predeterminada, puede crear cinco VPC en una región. Si ya ha creado cinco VPC en la región, se produce un error en la Automation sin realizar cambios en la instancia. Para obtener más información acerca de las cuotas de Amazon VPC, consulte [VPC y subredes](https://docs.aws.amazon.com/vpc/latest/userguide/amazon-vpc-limits.html#vpc-limits-vpcs-subnets) en la *Guía del usuario de Amazon VPC*.
+ También puede crear y especificar un rol de AWS Identity and Access Management (IAM) para Automation. Si no especifica este rol, Automation se ejecuta en el contexto del usuario que ha ejecutado la Automation.

### Concesión de permisos `AWSSupport-EC2Rescue` para realizar acciones en las instancias
<a name="automation-ec2rescue-access"></a>

EC2Rescue necesita permiso para realizar una serie de acciones en las instancias durante la automatización. Estas acciones invocan los servicios AWS Lambda, IAM y Amazon EC2 para intentar solucionar los problemas de sus instancias de forma segura. Si dispone de permisos de nivel de administrador en su Cuenta de AWS o VPC, es probable que pueda ejecutar la automatización sin configurar permisos, tal y como se describe en esta sección. Si no dispone de permisos de nivel de administrador, usted o un administrador deben configurarlos mediante una de las siguientes opciones.
+ [Concesión de permisos mediante políticas de IAM](#automation-ec2rescue-access-iam)
+ [Concesión de permisos mediante una plantilla de CloudFormation](#automation-ec2rescue-access-cfn)

#### Concesión de permisos mediante políticas de IAM
<a name="automation-ec2rescue-access-iam"></a>

Puede adjuntar la siguiente política de IAM a su cuenta de usuario, grupo o rol como una política insertada o bien puede crear una nueva política administrada de IAM y adjuntarla a su usuario, grupo o rol. Para obtener más información sobre la adición de una política insertada a su usuario, grupo o rol, consulte [Uso de políticas insertadas](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_inline-using.html). Para obtener más información sobre cómo crear una política administrada, consulte [Uso de políticas administradas](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html).

**nota**  
Si crea una nueva política administrada de IAM, también debe adjuntar la política administrada **AmazonSSMAutomationRole** para que la instancia se pueda comunicar con la API de Systems Manager.

**Política de IAM para AWSSupport-EC2Rescue**

Reemplace *account ID* con su propia información.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "lambda:InvokeFunction",
                "lambda:DeleteFunction",
                "lambda:GetFunction"
            ],
            "Resource": "arn:aws:lambda:*:111122223333:function:AWSSupport-EC2Rescue-*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::awssupport-ssm.*/*.template",
                "arn:aws:s3:::awssupport-ssm.*/*.zip"
            ],
            "Effect": "Allow"
        },
        {
            "Action": [
                "iam:CreateRole",
                "iam:CreateInstanceProfile",
                "iam:GetRole",
                "iam:GetInstanceProfile",
                "iam:PutRolePolicy",
                "iam:DetachRolePolicy",
                "iam:AttachRolePolicy",
                "iam:PassRole",
                "iam:AddRoleToInstanceProfile",
                "iam:RemoveRoleFromInstanceProfile",
                "iam:DeleteRole",
                "iam:DeleteRolePolicy",
                "iam:DeleteInstanceProfile"
            ],
            "Resource": [
                "arn:aws:iam::111122223333:role/AWSSupport-EC2Rescue-*",
                "arn:aws:iam::111122223333:instance-profile/AWSSupport-EC2Rescue-*"
            ],
            "Effect": "Allow"
        },
        {
            "Action": [
                "lambda:CreateFunction",
                "ec2:CreateVpc",
                "ec2:ModifyVpcAttribute",
                "ec2:DeleteVpc",
                "ec2:CreateInternetGateway",
                "ec2:AttachInternetGateway",
                "ec2:DetachInternetGateway",
                "ec2:DeleteInternetGateway",
                "ec2:CreateSubnet",
                "ec2:DeleteSubnet",
                "ec2:CreateRoute",
                "ec2:DeleteRoute",
                "ec2:CreateRouteTable",
                "ec2:AssociateRouteTable",
                "ec2:DisassociateRouteTable",
                "ec2:DeleteRouteTable",
                "ec2:CreateVpcEndpoint",
                "ec2:DeleteVpcEndpoints",
                "ec2:ModifyVpcEndpoint",
                "ec2:Describe*",
                "autoscaling:DescribeAutoScalingInstances"
            ],
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}
```

------

#### Concesión de permisos mediante una plantilla de CloudFormation
<a name="automation-ec2rescue-access-cfn"></a>

CloudFormation automatiza el proceso de creación de roles y políticas de IAM a través de una plantilla preconfigurada. Utilice el siguiente procedimiento para crear los roles y las políticas de IAM necesarios para EC2Rescue Automation mediante CloudFormation.

**Para crear los roles y las políticas de IAM necesarios para EC2Rescue**

1. Descargue [https://docs.aws.amazon.com/systems-manager/latest/userguide/samples/AWSSupport-EC2RescueRole.zip](https://docs.aws.amazon.com/systems-manager/latest/userguide/samples/AWSSupport-EC2RescueRole.zip) y extraiga el archivo `AWSSupport-EC2RescueRole.json` en un directorio de su equipo local.

1. Si su Cuenta de AWS está en una partición especial, edite la plantilla para cambiar los valores de ARN por los de su partición.

   Por ejemplo, para las regiones de China, cambie todas las instancias de `arn:aws` por `arn:aws-cn`.

1. Inicie sesión en la Consola de administración de AWS y abra la consola de CloudFormation en [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/).

1. Elija **Create stack (Crear pila)**, **With new resources (standard) (Con nuevos recursos [estándar])**.

1. En la página **Create stack (Crear pila)** en **Prerequisite - Prepare template (Requisito previo: preparar plantilla)**, elija **Template is ready (La plantilla está lista)**.

1. En **Specify template (Especificar plantilla)**, elija **Upload a template file (Cargar un archivo de plantilla)**.

1. Elija **Choose file (Elegir archivo)**, y, a continuación, busque y seleccione el archivo `AWSSupport-EC2RescueRole.json` del directorio en el que lo extrajo.

1. Elija **Siguiente**.

1. En la página **Specify stack details (Especificar detalles de la pila)** para el campo **Stack name (Nombre de la pila)**, escriba un nombre para identificar esta pila y, a continuación, elija **Next (Siguiente)**.

1. (Opcional) En el área **Tags (Etiquetas)**, aplique a la pila uno o varios pares de nombre-valor de claves de etiqueta.

   Las etiquetas son metadatos opcionales que usted asigna a un recurso. Las etiquetas le permiten clasificar los recursos de diversas maneras, por ejemplo, según su finalidad, propietario o entorno. Por ejemplo, puede que desee etiquetar una pila para identificar el tipo de tareas que ejecuta, los tipos de destinos u otros recursos implicados y el entorno en el que se ejecuta.

1. Elegir **Next** (Siguiente)

1. En la página **Review** (Revisar), revise los detalles de la pila y, a continuación, desplácese hacia abajo y elija la opción **I acknowledge that CloudFormation might create IAM resources** (Acepto que es posible que cree recursos de IAM).

1. Seleccione **Creación de pila**.

   CloudFormation muestra el estado **CREATE\$1IN\$1PROGRESS** durante unos minutos. El estado cambia a **CREATE\$1COMPLETE** tras crear la pila. También puede elegir el icono de actualización para comprobar el estado del proceso de creación.

1. En la lista **Stacks** (Pilas), seleccione el botón situado junto a la pila que acaba de crear y, a continuación, elija la pestaña **Outputs** (Salidas).

1. Anote el valor de **Value (Valor)**. Es el ARN de AssumeRole. Especifique este ARN cuando ejecute la automatización en el siguiente procedimiento, [Ejecución de Automation](#automation-ec2rescue-executing). 

## Ejecución de Automation
<a name="automation-ec2rescue-executing"></a>

**importante**  
La siguiente automatización detiene la instancia inaccesible. La detención de la instancia puede ocasionar la pérdida de datos en los volúmenes de almacén de instancias asociados (si los hubiera). La detención de la instancia también puede provocar que cambie la IP pública, si no hay asociada ninguna IP elástica.

**Para ejecutar el manual de procedimientos de Automation `AWSSupport-ExecuteEC2Rescue`**

1. Abra la consola de AWS Systems Manager en [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. En el panel de navegación, elija **automatización**.

1. Elija **Ejecutar automatización**.

1. En la sección **Automation document (Documento de Automation)**, elija **Owned by Amazon (Propiedad de Amazon)** en la lista.

1. En la lista de manuales de procedimientos, seleccione el botón de la tarjeta que corresponde a `AWSSupport-ExecuteEC2Rescue` y, a continuación, elija **Next** (Siguiente).

1. En la página **Execute automation document (Ejecutar documento de Automation)**, elija **Simple execution (Ejecución sencilla)**.

1. En la sección **Document details (Detalles del documento)**, asegúrese de que el valor de **Document version (Versión del documento)** sea la versión predeterminada más alta. Por ejemplo, **\$1DEFAULT** o **3 (default) (3 [predeterminada])**.

1. En la sección **Input parameters**, especifique los siguientes parámetros: 

   1. En **UnreachableInstanceId**, especifique la ID de la instancia inaccesible. 

   1. (Opcional) En **EC2RescueInstanceType**, especifique un tipo de instancia para la instancia de EC2Rescue. El tipo de instancia predeterminada es `t2.medium`.

   1. En **AutomationAssumeRole**, si ha creado roles para esta automatización mediante el procedimiento de CloudFormation descrito anteriormente en este tema, elija el ARN del AssumeRole que creó en la consola de CloudFormation.

   1. (Opcional) En **LogDestination**, especifique un bucket de S3 si desea recopilar registros de nivel del sistema operativo mientras soluciona los problemas de la instancia. Los registros se cargan automáticamente en el bucket especificado.

   1. En **SubnetId**, especifique una subred en una VPC existente en la misma zona de disponibilidad que la instancia inaccesible. De forma predeterminada, Systems Manager crea una nueva VPC, pero usted puede especificar una subred en una VPC existente, si así lo desea.
**nota**  
Si no ve la opción para especificar un ID de subred o bucket, verifique que está usando la versión más reciente **predeterminada** del manual de procedimientos.

1. (Opcional) En el área **Tags** (Etiquetas), aplique uno o más pares de nombre-valor de claves de etiqueta para ayudar a identificar la automatización, como `Key=Purpose,Value=EC2Rescue`.

1. Elija **Ejecutar**.

El manual de procedimientos crea una AMI de copia de seguridad como parte de la automatización. Los demás recursos creados por la automatización se eliminan automáticamente, pero esta AMI permanece en su cuenta. La AMI recibe su nombre siguiendo esta convención:

AMI de copia de seguridad: AWSSupport-EC2Rescue:*UnreachableInstanceId*

Puede localizar esta AMI en la consola de Amazon EC2 mediante la búsqueda del ID de ejecución de Automation.

# Restablecimiento de contraseñas y claves de SSH en instancias EC2
<a name="automation-ec2reset"></a>

Puede utilizar el manual de procedimientos `AWSSupport-ResetAccess` para volver a activar de forma automática la generación de contraseñas del administrador local en las instancias de Amazon Elastic Compute Cloud (Amazon EC2) para Windows Server y generar una nueva clave de SSH en instancias de EC2 para Linux. El manual de procedimientos `AWSSupport-ResetAccess` se ha diseñado para realizar una combinación de acciones de AWS Systems Manager, acciones de AWS CloudFormation y funciones de AWS Lambda que automatizan los pasos que normalmente se requieren para restablecer la contraseña de administrador local.

Puede utilizar Automatización, una herramienta de AWS Systems Manager, con el manual de procedimientos `AWSSupport-ResetAccess` para solucionar los siguientes problemas:

**Windows**

*Ha perdido el par de claves de EC2*: si desea resolver este problema, puede utilizar el manual de procedimientos **AWSSupport-ResetAccess** para crear una AMI que se habilita con contraseñas con la instancia actual, lanzar una nueva instancia a partir de la AMI y seleccionar un par de claves de su propiedad.

*Ha perdido la contraseña de administrador local*: si desea solucionar este problema, puede utilizar el manual de procedimientos `AWSSupport-ResetAccess` para generar una nueva contraseña que se pueda descifrar con el par de claves de EC2 actual.

**Linux**

*Ha perdido el par de claves de EC2 o configuró el acceso de SSH a la instancia con una clave que ha perdido*: si desea solucionar este problema, puede utilizar el manual de procedimientos `AWSSupport-ResetAccess` a fin de crear una nueva clave de SSH para la instancia actual, lo que le permitirá conectarse de nuevo a la instancia.

**nota**  
Si su instancia de EC2 para Windows Server está configurada para Systems Manager, también puede restablecer su contraseña de administrador local mediante EC2Rescue y AWS Systems Manager Run Command. Para obtener más información, consulte [Uso de EC2Rescue para Windows Server con Systems Manager Run Command](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2rw-ssm.html) en la *Guía del usuario de Amazon EC2*.

**Información relacionada**  
[Conexión a una instancia de Linux desde Windows mediante PuTTY](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/putty.html) en la *Guía del usuario de Amazon EC2*

## Funcionamiento
<a name="automation-ec2reset-how"></a>

La solución de problemas de una instancia con Automation y el manual de procedimientos `AWSSupport-ResetAccess` funciona de la siguiente manera:
+ Especifica el ID de la instancia y ejecuta el manual de procedimientos.
+ El sistema crea una VPC temporal y, a continuación, ejecuta una serie de funciones de Lambda para configurar la VPC.
+ El sistema identifica una subred para su VPC temporal en la misma zona de disponibilidad que la instancia original.
+ El sistema lanza una instancia auxiliar de habilitada para SSM y temporal.
+ El sistema detiene la instancia original y crea una copia de seguridad. A continuación, asocia el volumen raíz original a la instancia auxiliar.
+ El sistema utiliza Run Command para ejecutar EC2Rescue en la instancia auxiliar. En Windows, EC2Rescue permite generar la contraseña para el administrador local usando EC2Config o EC2Launch en el volumen raíz original asociado. En Linux, EC2Rescue genera e introduce una nueva clave de SSH y guarda la clave privada (cifrada) en Parameter Store. Cuando finaliza, EC2Rescue vuelve a asociar el volumen raíz a la instancia original.
+ El sistema crea una nueva Amazon Machine Image (AMI) de su instancia, ahora que la generación de contraseña está habilitada. Puede usar esta AMI para crear una nueva instancia de EC2 y asociar un par de claves nuevo, en caso de ser necesario.
+ El sistema reinicia la instancia original y termina la instancia temporal. El sistema también termina la VPC temporal y las funciones de Lambda creadas al inicio de la Automation.
+ **Windows**: la instancia genera una nueva contraseña que se puede descodificar en la consola de Amazon EC2 con el par de claves que la instancia tiene asignado en este momento.

  **Linux**: puede aplicar SSH a la instancia utilizando la clave de SSH almacenada en Systems Manager Parameter Store como **/ec2rl/openssh/*instance ID*/key**.

## Antes de empezar
<a name="automation-ec2reset-begin"></a>

Antes de ejecutar la siguiente Automation, haga lo siguiente:
+ Copie el ID de la instancia en la que desea restablecer la contraseña de administrador. Especificará este ID en el procedimiento.
+ Opcionalmente, recopile el ID de una subred en la misma zona de disponibilidad que su instancia inaccesible. La instancia de EC2Rescue se creará en esta subred. Si no especifica ninguna subred, Automation crea una nueva VPC temporal en su Cuenta de AWS. Verifique que su Cuenta de AWS tiene al menos una VPC disponible. De forma predeterminada, puede crear cinco VPC en una región. Si ya ha creado cinco VPC en la región, se produce un error en la Automation sin realizar cambios en la instancia. Para obtener más información acerca de las cuotas de Amazon VPC, consulte [VPC y subredes](https://docs.aws.amazon.com/vpc/latest/userguide/amazon-vpc-limits.html#vpc-limits-vpcs-subnets) en la *Guía del usuario de Amazon VPC*.
+ También puede crear y especificar un rol de AWS Identity and Access Management (IAM) para Automation. Si no especifica este rol, Automation se ejecuta en el contexto del usuario que ha ejecutado la Automation.

### Concesión de permisos a AWSSupport-EC2Rescue para realizar acciones en las instancias
<a name="automation-ec2reset-access"></a>

EC2Rescue necesita permiso para realizar una serie de acciones en las instancias durante la automatización. Estas acciones invocan los servicios AWS Lambda, IAM y Amazon EC2 para intentar solucionar los problemas de sus instancias de forma segura. Si dispone de permisos de nivel de administrador en su Cuenta de AWS o VPC, es probable que pueda ejecutar la automatización sin configurar permisos, tal y como se describe en esta sección. Si no dispone de permisos de nivel de administrador, usted o un administrador deben configurarlos mediante una de las siguientes opciones.
+ [Concesión de permisos mediante políticas de IAM](#automation-ec2reset-access-iam)
+ [Concesión de permisos mediante una plantilla de CloudFormation](#automation-ec2reset-access-cfn)

#### Concesión de permisos mediante políticas de IAM
<a name="automation-ec2reset-access-iam"></a>

Puede adjuntar la siguiente política de IAM a su cuenta de usuario, grupo o rol como una política insertada o bien puede crear una nueva política administrada de IAM y adjuntarla a su usuario, grupo o rol. Para obtener más información sobre la adición de una política insertada a su usuario, grupo o rol, consulte [Uso de políticas insertadas](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_inline-using.html). Para obtener más información sobre cómo crear una política administrada, consulte [Uso de políticas administradas](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html).

**nota**  
Si crea una nueva política administrada de IAM, también debe adjuntar la política administrada **AmazonSSMAutomationRole** para que la instancia se pueda comunicar con la API de Systems Manager.

**Política de IAM para `AWSSupport-ResetAccess`**

Reemplace *account ID* con su propia información.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "lambda:InvokeFunction",
                "lambda:DeleteFunction",
                "lambda:GetFunction"
            ],
            "Resource": "arn:aws:lambda:*:111122223333:function:AWSSupport-EC2Rescue-*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::awssupport-ssm.*/*.template",
                "arn:aws:s3:::awssupport-ssm.*/*.zip"
            ],
            "Effect": "Allow"
        },
        {
            "Action": [
                "iam:CreateRole",
                "iam:CreateInstanceProfile",
                "iam:GetRole",
                "iam:GetInstanceProfile",
                "iam:PutRolePolicy",
                "iam:DetachRolePolicy",
                "iam:AttachRolePolicy",
                "iam:PassRole",
                "iam:AddRoleToInstanceProfile",
                "iam:RemoveRoleFromInstanceProfile",
                "iam:DeleteRole",
                "iam:DeleteRolePolicy",
                "iam:DeleteInstanceProfile"
            ],
            "Resource": [
                "arn:aws:iam::111122223333:role/AWSSupport-EC2Rescue-*",
                "arn:aws:iam::111122223333:instance-profile/AWSSupport-EC2Rescue-*"
            ],
            "Effect": "Allow"
        },
        {
            "Action": [
                "lambda:CreateFunction",
                "ec2:CreateVpc",
                "ec2:ModifyVpcAttribute",
                "ec2:DeleteVpc",
                "ec2:CreateInternetGateway",
                "ec2:AttachInternetGateway",
                "ec2:DetachInternetGateway",
                "ec2:DeleteInternetGateway",
                "ec2:CreateSubnet",
                "ec2:DeleteSubnet",
                "ec2:CreateRoute",
                "ec2:DeleteRoute",
                "ec2:CreateRouteTable",
                "ec2:AssociateRouteTable",
                "ec2:DisassociateRouteTable",
                "ec2:DeleteRouteTable",
                "ec2:CreateVpcEndpoint",
                "ec2:DeleteVpcEndpoints",
                "ec2:ModifyVpcEndpoint",
                "ec2:Describe*"
            ],
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}
```

------

#### Concesión de permisos mediante una plantilla de CloudFormation
<a name="automation-ec2reset-access-cfn"></a>

CloudFormation automatiza el proceso de creación de roles y políticas de IAM a través de una plantilla preconfigurada. Utilice el siguiente procedimiento para crear los roles y las políticas de IAM necesarios para EC2Rescue Automation mediante CloudFormation.

**Para crear los roles y las políticas de IAM necesarios para EC2Rescue**

1. Descargue [https://docs.aws.amazon.com/systems-manager/latest/userguide/samples/AWSSupport-EC2RescueRole.zip](https://docs.aws.amazon.com/systems-manager/latest/userguide/samples/AWSSupport-EC2RescueRole.zip) y extraiga el archivo `AWSSupport-EC2RescueRole.json` en un directorio de su equipo local.

1. Si su Cuenta de AWS está en una partición especial, edite la plantilla para cambiar los valores de ARN por los de su partición.

   Por ejemplo, para las regiones de China, cambie todas las instancias de `arn:aws` por `arn:aws-cn`.

1. Inicie sesión en la Consola de administración de AWS y abra la consola de CloudFormation en [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/).

1. Elija **Create stack (Crear pila)**, **With new resources (standard) (Con nuevos recursos [estándar])**.

1. En la página **Create stack (Crear pila)** en **Prerequisite - Prepare template (Requisito previo: preparar plantilla)**, elija **Template is ready (La plantilla está lista)**.

1. En **Specify template (Especificar plantilla)**, elija **Upload a template file (Cargar un archivo de plantilla)**.

1. Elija **Choose file (Elegir archivo)**, y, a continuación, busque y seleccione el archivo `AWSSupport-EC2RescueRole.json` del directorio en el que lo extrajo.

1. Elija **Siguiente**.

1. En la página **Specify stack details (Especificar detalles de la pila)** para el campo **Stack name (Nombre de la pila)**, escriba un nombre para identificar esta pila y, a continuación, elija **Next (Siguiente)**.

1. (Opcional) En el área **Tags (Etiquetas)**, aplique a la pila uno o varios pares de nombre-valor de claves de etiqueta.

   Las etiquetas son metadatos opcionales que usted asigna a un recurso. Las etiquetas le permiten clasificar los recursos de diversas maneras, por ejemplo, según su finalidad, propietario o entorno. Por ejemplo, puede que desee etiquetar una pila para identificar el tipo de tareas que ejecuta, los tipos de destinos u otros recursos implicados y el entorno en el que se ejecuta.

1. Elegir **Next** (Siguiente)

1. En la página **Review** (Revisar), revise los detalles de la pila y, a continuación, desplácese hacia abajo y elija la opción **I acknowledge that CloudFormation might create IAM resources** (Acepto que es posible que cree recursos de IAM).

1. CloudFormation muestra el estado **CREATE\$1IN\$1PROGRESS** durante unos minutos. El estado cambia a **CREATE\$1COMPLETE** tras crear la pila. También puede elegir el icono de actualización para comprobar el estado del proceso de creación.

1. En la lista de pilas, elija la opción situada junto al pila que acaba de crear y, a continuación, elija la pestaña **Outputs (Salidas)**.

1. Copie el contenido de **Value (Valor)**. Es el ARN de AssumeRole. Especificará este ARN al ejecutar Automation. 

## Ejecución de Automation
<a name="automation-ec2reset-executing"></a>

El siguiente procedimiento describe cómo ejecutar el manual de procedimientos `AWSSupport-ResetAccess` a través de la consola de AWS Systems Manager.

**importante**  
La siguiente automatización detiene la instancia. La detención de la instancia puede ocasionar la pérdida de datos en los volúmenes de almacén de instancias asociados (si los hubiera). La detención de la instancia también puede provocar que cambie la IP pública, si no hay asociada ninguna IP elástica. Para evitar estos cambios de configuración, use Run Command para restablecer el acceso. Para obtener más información, consulte [Uso de EC2Rescue para Windows Server con Systems Manager Run Command](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2rw-ssm.html) en la *Guía del usuario de Amazon EC2*.

**Para ejecutar el documento de AWSSupport-ResetAccess Automation**

1. Abra la consola de AWS Systems Manager en [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. En el panel de navegación, elija **automatización**.

1. Elija **Ejecutar automatización**.

1. En la sección **Automation document (Documento de Automation)**, elija **Owned by Amazon (Propiedad de Amazon)** en la lista.

1. En la lista de manuales de procedimientos, seleccione el botón de la tarjeta que corresponde a **AWSSupport-ResetAccess** y, a continuación, elija **Next** (Siguiente).

1. En la página **Execute automation document (Ejecutar documento de Automation)**, elija **Simple execution (Ejecución sencilla)**.

1. En la sección **Document details (Detalles del documento)**, asegúrese de que el valor de **Document version (Versión del documento)** sea la versión predeterminada más alta. Por ejemplo, **\$1DEFAULT** o **3 (default) (3 [predeterminada])**.

1. En la sección **Input parameters**, especifique los siguientes parámetros: 

   1. En **InstanceID**, especifique la ID de la instancia inaccesible. 

   1. En **SubnetId**, especifique una subred en una VPC existente en la misma zona de disponibilidad que la instancia que haya indicado. De forma predeterminada, Systems Manager crea una nueva VPC, pero usted puede especificar una subred en una VPC existente, si así lo desea.
**nota**  
Si no ve la opción para especificar un ID de subred, verifique que está usando la versión más reciente **predeterminada** del manual de procedimientos.

   1. En **EC2RescueInstanceType**, especifique un tipo de instancia para la instancia de EC2Rescue, El tipo de instancia predeterminada es `t2.medium`.

   1. Para **AssumeRole**, si ha creado roles para esta automatización mediante el procedimiento de CloudFormation descrito anteriormente en este tema, especifique el ARN de AssumeRole que anotó en la consola de CloudFormation.

1. (Opcional) En el área **Tags** (Etiquetas), aplique uno o más pares de nombre-valor de claves de etiqueta para ayudar a identificar la automatización, como `Key=Purpose,Value=ResetAccess`.

1. Elija **Ejecutar**.

1. Para supervisar el progreso de la automatización, elija la automatización que se esté ejecutando, y luego la pestaña **Steps** (Pasos). Una vez que se haya completado la automatización, elija la pestaña **Descriptions** (Descripciones) y, a continuación, **View output** (Ver salida) para ver los resultados. Para ver la salida de pasos individuales, elija la pestaña **Steps (Pasos)** y, a continuación, **View Outputs (Ver salidas)** junto a un paso.

El manual de procedimientos crea una AMI de copia de seguridad y una AMI que se habilita con contraseñas como parte de la automatización. Los demás recursos que creó la automatización se eliminan automáticamente, pero estas AMIs permanecen en su cuenta. Las AMIs reciben su nombre según las convenciones siguientes:
+ AMI de copia de seguridad: `AWSSupport-EC2Rescue:InstanceID`
+ AMI habilitada con contraseña: AWSSupport-EC2Rescue: AMI habilitada con contraseña de *Instance ID*

Puede localizar estas AMIs buscando el ID de ejecución de Automation.

En Linux, la nueva clave privada de SSH para la instancia se guarda (cifrada) en Parameter Store. El nombre del parámetro es **/ec2rl/openssh/*instance ID*/key**.

# Transferir datos a Automatización usando transformadores de entrada
<a name="automation-tutorial-eventbridge-input-transformers"></a>

Este tutorial de AWS Systems Manager Automation muestra cómo utilizar la característica de transformador de entrada de Amazon EventBridge para extraer el `instance-id` de una instancia de Amazon Elastic Compute Cloud (Amazon EC2) a partir de un evento de cambio de estado de instancia. Automatización es una herramienta de AWS Systems Manager. Utilizamos el transformador de entrada para transmitir esos datos al destino del manual de procedimientos `AWS-CreateImage` como el parámetro de entrada `InstanceId`. La regla se activa cuando alguna instancia cambia al estado `stopped`.

Para obtener más información acerca de cómo trabajar con transformadores de entrada, consulte [Tutorial: utilizar el transformador de entrada para personalizar los datos que se transmiten al destino del evento](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-input-transformer-tutorial.html) en la *Guía del usuario de Amazon EventBridge*.

**Antes de empezar**  
Compruebe que ha agregado los permisos y la política de confianza necesarios de EventBridge a su rol de servicio de Automatización de Systems Manager. Para obtener más información, consulte [Información general sobre la administración de permisos de acceso a los recursos de EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/iam-access-control-identity-based-eventbridge.html) en la *Guía del usuario de Amazon EventBridge*.

**Para utilizar transformadores de entrada con Automation**

1. Abra la consola de Amazon EventBridge en [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/).

1. En el panel de navegación, seleccione **Reglas**.

1. Elija **Creación de regla**.

1. Escriba un nombre y una descripción para la regla.

   Una regla no puede tener el mismo nombre que otra regla de la misma región y del mismo bus de eventos.

1. En **Bus de eventos**, seleccione el bus de eventos que desea asociar a esta regla. Si desea que esta regla responda a eventos coincidentes procedentes de su propia Cuenta de AWS, seleccione **default** (predeterminado). Cuando un Servicio de AWS en su cuenta emite un evento, siempre va al bus de eventos predeterminado de su cuenta.

1. En **Tipo de regla**, elija **Regla con un patrón de evento**.

1. Elija **Siguiente**.

1. En **Origen del evento**, elija **Eventos de AWS o eventos de socios de EventBridge**.

1. En la sección **Patrón de eventos**, elija **Formulario de patrón de eventos**.

1. En **Event source** (Origen del evento), elija **AWS services** (Servicios de ).

1. En **AWS service** (Servicio de ), elija **EC2**.

1. En **Event Type (Tipo de evento)**, elija **EC2 Instance State-change Notification (Notificación de cambio de estado de instancia de EC2)**.

1. En **Especificación de tipo de evento 1**, seleccione **Estados específicos** y, a continuación, seleccione **Detenido**.

1. En **Especificación del tipo de evento 2**, seleccione **Cualquier instancia** o seleccione **ID de instancia específicos** e introduzca los ID de las instancias que desee supervisar.

1. Elija **Siguiente**.

1. En **Target types** (Tipos de destino), elija **AWS service**.

1. Para **Select a target** (Seleccione un destino), elija **Systems Manager Automation** (Automatización de Systems Manager).

1. En **Document (Documento)**, elija **AWS-CreateImage**.

1. Expanda la sección **Configure automation parameter(s)** (Configurar parámetros de automatización) y seleccione **Input Transformer** (Transformador de entrada).

1. En **Input path** (Ruta de entrada), escriba **\$1"instance":"\$1.detail.instance-id"\$1**.

1. En **Template** (Plantilla), escriba **\$1"InstanceId":[<instance>]\$1**.

1. En **Execution role** (Rol de ejecución), elija **Use existing role** (Usar rol existente) y elija su rol de servicio de Automation.

1. Elija **Siguiente**.

1. (Opcional) Introduzca una o varias etiquetas para la regla. Para obtener más información, consulte [Etiquetado de los recursos de Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-tagging.html) en la *Guía del usuario de Amazon EventBridge*.

1. Elija **Siguiente**.

1. Revise los detalles de la regla y seleccione **Creación de regla**.