

• 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). 

# Uso del Generador de documentos para crear un manual de procedimientos
<a name="automation-document-builder"></a>

Si los manuales de procedimientos públicos de AWS Systems Manager no admiten todas las acciones que desea realizar en sus recursos de AWS, puede crear sus propios manuales. Para crear un manual de procedimientos personalizado, puede crear manualmente un archivo de formato YAML o JSON local con las acciones de automatización adecuadas. Como alternativa, puede usar el Generador de documentos en la consola de Automatización de Systems Manager para crear un manual de procedimientos personalizado.

Con el Generador de documentos, puede agregar acciones de automatización a su manual de procedimientos personalizado y proporcionar los parámetros necesarios sin tener que usar la sintaxis JSON o YAML. Después de agregar pasos y crear el manual de procedimientos, el sistema convierte las acciones que ha agregado al formato YAML que Systems Manager puede utilizar para ejecutar la automatización.

Los manuales de procedimientos admiten el uso de Markdown, un lenguaje de marcado que le permite agregar descripciones de estilo Wiki a manuales de procedimientos y pasos individuales dentro del manual. Para obtener más información acerca del uso de Markdown, consulte [Uso de Markdown en AWS](https://docs.aws.amazon.com/general/latest/gr/aws-markdown.html).

## Crear un manual de procedimientos con el Generador de documentos
<a name="create-runbook"></a>

**Antes de empezar**  
Le recomendamos que lea acerca de las diferentes acciones que puede usar dentro de un manual de procedimientos. Para obtener más información, consulte [Referencia de acciones de Automatización de Systems Manager](automation-actions.md).

**Para crear un manual de procedimientos con el Generador de documentos**

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. Elija **Create automation (Crear automatización)**.

1. En **Name** (Nombre), ingrese un nombre descriptivo para el manual de procedimientos.

1. En **Document description** (Descripción del documento), proporcione la descripción del estilo Markdown del manual de procedimientos. Puede proporcionar instrucciones para utilizar el manual de procedimientos, pasos numerados o cualquier otro tipo de información para describir el manual de procedimientos. Consulte el texto predeterminado para obtener información sobre cómo dar formato al contenido.
**sugerencia**  
Alterna entre **Hide preview (Ocultar vista previa)** y **Show preview (Mostrar vista previa)** para ver el aspecto del contenido de la descripción mientras redacta.

1. De forma opcional, en **Assume role (Asumir rol)**, escriba el nombre o ARN de un rol de servicio que realizará acciones en su nombre. Si no especifica un rol, Automation utiliza los permisos de acceso del usuario que ejecuta la automatización.
**importante**  
Para los manuales de procedimientos que no son propiedad de Amazon y que utilizan la acción `aws:executeScript`, es necesario especificar un rol. Para obtener más información, consulte [Permisos para utilizar los manuales de procedimientos](automation-document-script-considerations.md#script-permissions).

1. (Opcional) En **Outputs** (Salidas), ingrese cualquier salida para la automatización de este manual de procedimientos a fin de que esté disponible para otros procesos. 

   Por ejemplo, si el manual de procedimientos crea una AMI nueva, puede especificar ["CreateImage.ImageId"] y, a continuación, utilizar esta salida para crear instancias nuevas en una automatización posterior.

1. De forma opcional, expanda la sección **Input parameters (Parámetros de entrada)** y haga lo siguiente.

   1. En **Parameter name** (Nombre de parámetro), ingrese un nombre descriptivo para el parámetro del manual de procedimientos que está creando.

   1. En **Type (Tipo)**, elija un tipo para el parámetro, como `String` o `MapList`.

   1. En **Required (Requerido)**, realice una de las acciones siguientes: 
      + Elija **Yes** (Sí) si se debe proporcionar un valor para este parámetro del manual de procedimientos en el tiempo de ejecución.
      + Elija **No** si el parámetro no es necesario y, de forma opcional, ingrese el valor de un parámetro predeterminado en **Default value** (Valor predeterminado).

   1. En **Description** (Descripción), ingrese una descripción para el parámetro del manual de procedimientos.
**nota**  
Para agregar más parámetros del manual de procedimientos, elija **Add a parameter** (Agregar un parámetro). Para quitar un parámetro del manual de procedimientos, elija el botón **X** (quitar).

1. (Opcional) Expanda la sección **Target type** (Tipo de destino) y elija un tipo de destino para definir los tipos de recursos en los que se puede ejecutar la automatización. Por ejemplo, para usar un manual de procedimientos en instancias EC2, elija `/AWS::EC2::Instance`.
**nota**  
Si especifica un valor de “`/`”, el manual de procedimientos puede ejecutarse en todos los tipos de recursos. Para obtener una lista de los tipos de recursos válidos, consulte la [Referencia de tipos de recursos de AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html) en la *Guía del usuario AWS CloudFormation*.

1. (Opcional) Expanda la sección **Document tags** (Etiquetas del documento) e ingrese uno o más pares de clave-valor de etiqueta para aplicarlos al manual de procedimientos. Las etiquetas facilitan la identificación, la organización y la búsqueda de recursos.

1. En la sección **Step 1 (Paso 1)** proporcione la siguiente información.
   + En **Step name** (Nombre del paso), escriba un nombre descriptivo para el primer paso de la automatización.
   + En **Action type (Tipo de acción)**, seleccione el tipo de acción que desea utilizar para este paso.

     Para obtener una lista e información acerca de los tipos de acción disponibles, consulte [Referencia de acciones de Automatización de Systems Manager](automation-actions.md).
   + En **Description (Descripción)**, escriba una descripción del paso de automatización. Puede usar Markdown para dar formato al texto.
   + Según el **Action type (Tipo de acción)** seleccionado, introduzca las entradas necesarias para el tipo de acción en la sección **Step inputs (Entradas de paso)**. Por ejemplo, si ha seleccionado la acción `aws:approve`, debe especificar un valor para la propiedad `Approvers`.

     Para obtener información acerca de los campos de entrada de pasos, consulte la entrada de [Referencia de acciones de Automatización de Systems Manager](automation-actions.md) correspondiente al tipo de acción seleccionado. Por ejemplo: [`aws:executeStateMachine`: ejecutar una máquina de estado de AWS Step Functions](automation-action-executeStateMachine.md).
   + (Opcional) En **Additional inputs** (Entradas adicionales), proporcione los valores de entrada adicionales que se necesitan para el manual de procedimientos. Los tipos de entrada disponibles dependen del tipo de acción seleccionado para el paso. (Tenga en cuenta que algunos tipos de acción requieren valores de entrada).
**nota**  
Para agregar más entradas, elija **Add optional input (Agregar entrada opcional)**. Para eliminar una entrada, elija el botón **X** (eliminar).
   + (Opcional) En **Outputs** (Salidas), ingrese cualquier salida que corresponda a este paso a fin de que esté disponible para otros procesos.
**nota**  
Las **Outputs (Salidas)** no están disponibles para todos los tipos de acción.
   + (Opcional) Expanda la sección **Common properties** (Propiedades comunes) y especifique propiedades para las acciones que son comunes a todas las acciones de automatización. Por ejemplo, para **Timeout seconds** (Segundos de tiempo de espera), puede proporcionar un valor en segundos para especificar cuánto tiempo se puede ejecutar el paso antes de que se detenga.

     Para obtener más información, consulte [Propiedades compartidas por todas las acciones](automation-actions.md#automation-common).
**nota**  
Para agregar más pasos, seleccione **Add step** (Agregar paso) y repita el procedimiento para crear un paso. Para quitar un paso, elija **Remove step** (Quitar paso).

1. Elija **Create automation** (Crear automatización) para guardar el manual de procedimientos.

## Crear un manual de procedimientos que ejecute scripts
<a name="create-runbook-scripts"></a>

El siguiente procedimiento muestra cómo usar el Generador de documentos en la consola de Automation de AWS Systems Manager para crear un manual de procedimientos personalizado que ejecuta un script.

El primer paso del manual de procedimientos que crea ejecuta un script para lanzar una instancia de Amazon Elastic Compute Cloud (Amazon EC2). El segundo paso ejecuta otro script para monitorear que el estado de la instancia pase a ser `ok`. A continuación, se informa el estado general `Success` para la automatización.

**Antes de empezar**  
Asegúrese de haber completado los pasos siguientes:
+ Verifique que tiene privilegios de administrador o que se le han concedido los permisos adecuados para acceder a Systems Manager en AWS Identity and Access Management (IAM). 

  Para obtener más información, consulte [Comprobación del acceso del usuario para manuales de procedimientos](automation-setup.md#automation-setup-user-access).
+ Compruebe que tiene un rol de servicio de IAM para Automation (también conocido como *rol de asunción*) en su Cuenta de AWS. El rol es necesario porque esta explicación utiliza la acción `aws:executeScript`. 

  Para obtener información acerca de la creación de esta función, consulta [Configuración del acceso de un rol de servicio (rol de asunción) para automatizaciones](automation-setup.md#automation-setup-configure-role). 

  Para obtener información acerca del requisito de rol de servicio de IAM para ejecutar `aws:executeScript`, consulte [Permisos para utilizar los manuales de procedimientos](automation-document-script-considerations.md#script-permissions).
+ Compruebe que tiene permiso para lanzar instancias EC2. 

  Para obtener información, consulte [IAM y Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UsingIAM.html#intro-to-iam) en la *Guía del usuario de Amazon EC2*.

**Para crear un manual de procedimientos personalizado que ejecute scripts mediante el Generador de documentos**

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. Elija **Create automation (Crear automatización)**.

1. En **Name** (Nombre), escriba este nombre descriptivo para el manual de procedimientos: **LaunchInstanceAndCheckStatus**.

1. (Opcional) En **Document description** (Descripción del documento), reemplace el texto predeterminado con una descripción de este manual de procedimientos utilizando Markdown. A continuación se muestra un ejemplo.

   ```
   ##Title: LaunchInstanceAndCheckState
       -----
       **Purpose**: This runbook first launches an EC2 instance using the AMI ID provided in the parameter ```imageId```. The second step of this runbook continuously checks the instance status check value for the launched instance until the status ```ok``` is returned.
       
       ##Parameters:
       -----
       Name | Type | Description | Default Value
       ------------- | ------------- | ------------- | -------------
       assumeRole | String | (Optional) The ARN of the role that allows Automation to perform the actions on your behalf. | -
       imageId  | String | (Optional) The AMI ID to use for launching the instance. The default value uses the latest Amazon Linux 2023 AMI ID available. | {{ ssm:/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-arm64 }}
   ```

1. En **Assume role** (Rol de asunción), ingrese el ARN del rol de servicio de IAM para Automation (Rol de asunción) para la automatización, en el formato **arn:aws:iam::111122223333:role/AutomationServiceRole**. Sustituya el ID de la Cuenta de AWS por 111122223333.

   El rol que especifique se utiliza para proporcionar los permisos necesarios para iniciar la automatización.
**importante**  
Para los manuales de procedimientos que no son propiedad de Amazon y que utilizan la acción `aws:executeScript`, es necesario especificar un rol. Para obtener más información, consulte [Permisos para utilizar los manuales de procedimientos](automation-document-script-considerations.md#script-permissions).

1. Expanda **Input parameters (Parámetros de entrada)** y haga lo siguiente.

   1. En **Parameter name (Nombre de parámetro)**, introduzca **imageId**.

   1. En **Type (Tipo)**, elija **String**.

   1. En **Required (Requerido)**, elija `No`. 

   1. En **Default value (Valor predeterminado)**, escriba lo siguiente.

      ```
      {{ ssm:/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-arm64 }}
      ```
**nota**  
Este valor lanza una instancia de Amazon EC2 con el ID de la última Amazon Machine Image (AMI) de Amazon Linux 2023. Si desea utilizar una AMI diferente, reemplace el valor con el ID de su AMI.

   1. En **Description (Descripción)**, escriba lo siguiente.

      ```
      (Optional) The AMI ID to use for launching the instance. The default value uses the latest released Amazon Linux 2023 AMI ID.
      ```

1. Seleccione **Add a parameter (Añadir un parámetro)** para crear el segundo parámetro, **tagValue**, y escriba lo siguiente.

   1. En **Parameter name (Nombre de parámetro)**, introduzca **tagValue**.

   1. En **Type (Tipo)**, elija **String**.

   1. En **Required (Requerido)**, elija `No`. 

   1. En **Default value (Valor predeterminado)**, introduzca **LaunchedBySsmAutomation**. Esto agrega el valor de par de claves de etiqueta `Name:LaunchedBySsmAutomation` a la instancia.

   1. En **Description (Descripción)**, escriba lo siguiente.

      ```
      (Optional) The tag value to add to the instance. The default value is LaunchedBySsmAutomation.
      ```

1. Seleccione **Add a parameter (Añadir un parámetro)** para crear el tercer parámetro, **instanceType**, y escriba lo siguiente.

   1. En **Parameter name (Nombre de parámetro)**, introduzca **instanceType**.

   1. En **Type (Tipo)**, elija **String**.

   1. En **Required (Requerido)**, elija `No`. 

   1. En **Default value (Valor predeterminado)**, introduzca **t2.micro**.

   1. En **Parameter description (Descripción del parámetro)**, escriba lo siguiente.

      ```
      (Optional) The instance type to use for the instance. The default value is t2.micro.
      ```

1. Expanda **Target type (Tipo de destino)** y elija **"/"**.

1. (Opcional) Expanda **Document tags** (Etiquetas de documento) para aplicar etiquetas de recursos al manual de procedimientos. En **Tag key (Clave de etiqueta)**, escriba **Purpose** y en **Tag value (Valor de etiqueta)**, escriba **LaunchInstanceAndCheckState**.

1. En la sección **Step 1 (Paso 1)** siga los pasos siguientes.

   1. En **Step name** (Nombre del paso), ingrese este nombre descriptivo para el primer paso de la automatización: **LaunchEc2Instance**.

   1. En **Action type (Tipo de acción)**, seleccione **Run a script)** (**aws:executeScript**).

   1. En **Description (Descripción)**, escriba una descripción para el paso de automatización, como la siguiente.

      ```
      **About This Step**
          
          This step first launches an EC2 instance using the ```aws:executeScript``` action and the provided script.
      ```

   1. Amplíe **Inputs (Entradas)**.

   1. En **Runtime (Entorno de ejecución)**, elija el lenguaje del entorno de ejecución que se va a usar para ejecutar el script proporcionado.

   1. En **Handler (Controlador)**, escriba **launch\_instance**. Este es el nombre de la función declarado en el siguiente script.
**nota**  
Esto no es necesario para PowerShell.

   1. En **Script**, reemplace el contenido predeterminado por lo siguiente. Asegúrese de que el script coincide con el valor del entorno de ejecución.

------
#### [ Python ]

      ```
      def launch_instance(events, context):
            import boto3
            ec2 = boto3.client('ec2')
          
            image_id = events['image_id']
            tag_value = events['tag_value']
            instance_type = events['instance_type']
          
            tag_config = {'ResourceType': 'instance', 'Tags': [{'Key':'Name', 'Value':tag_value}]}
          
            res = ec2.run_instances(ImageId=image_id, InstanceType=instance_type, MaxCount=1, MinCount=1, TagSpecifications=[tag_config])
          
            instance_id = res['Instances'][0]['InstanceId']
          
            print('[INFO] 1 EC2 instance is successfully launched', instance_id)
          
            return { 'InstanceId' : instance_id }
      ```

------
#### [ PowerShell ]

      ```
      Install-Module AWS.Tools.EC2 -Force
          Import-Module AWS.Tools.EC2
          
          $payload = $env:InputPayload | ConvertFrom-Json
          
          $imageid = $payload.image_id
          
          $tagvalue = $payload.tag_value
          
          $instanceType = $payload.instance_type
          
          $type = New-Object Amazon.EC2.InstanceType -ArgumentList $instanceType
          
          $resource = New-Object Amazon.EC2.ResourceType -ArgumentList 'instance'
          
          $tag = @{Key='Name';Value=$tagValue}
          
          $tagSpecs = New-Object Amazon.EC2.Model.TagSpecification
          
          $tagSpecs.ResourceType = $resource
          
          $tagSpecs.Tags.Add($tag)
          
          $res = New-EC2Instance -ImageId $imageId -MinCount 1 -MaxCount 1 -InstanceType $type -TagSpecification $tagSpecs
          
          return @{'InstanceId'=$res.Instances.InstanceId}
      ```

------

   1. Amplíe **Additional inputs (Entradas adicionales)**. 

   1. En **Input name (Nombre de entrada)**, elija **InputPayload**. En **Input Value (Valor de entrada)**, introduzca los siguientes datos YAML. 

      ```
      image_id: "{{ imageId }}"
          tag_value: "{{ tagValue }}"
          instance_type: "{{ instanceType }}"
      ```

1. Expanda **Outputs (Salidas)** y realice lo siguiente:
   + En **Nombre**, escriba **payload**.
   + Para **Selector**, escriba **$.Payload**.
   + En **Type (Tipo)**, elija `StringMap`.

1. Seleccione **Add step** (Agregar paso) para agregar un segundo paso al manual de procedimientos. El segundo paso consulta el estado de la instancia iniciada en el paso 1 y espera hasta que el estado devuelto sea `ok`.

1. En la sección **Step 2 (Paso 2)** haga lo siguiente.

   1. En **Step name** (Nombre del paso), ingrese este nombre descriptivo para el segundo paso de la automatización: **WaitForInstanceStatusOk**.

   1. En **Action type (Tipo de acción)**, seleccione **Run a script)** (**aws:executeScript**).

   1. En **Description (Descripción)**, escriba una descripción para el paso de automatización, como la siguiente.

      ```
      **About This Step**
          
          The script continuously polls the instance status check value for the instance launched in Step 1 until the ```ok``` status is returned.
      ```

   1. En **Runtime (Entorno de ejecución)**, elija el lenguaje del entorno de ejecución que se va a usar para ejecutar el script proporcionado.

   1. En **Handler (Controlador)**, escriba **poll\_instance**. Este es el nombre de la función declarado en el siguiente script.
**nota**  
Esto no es necesario para PowerShell.

   1. En **Script**, reemplace el contenido predeterminado por lo siguiente. Asegúrese de que el script coincide con el valor del entorno de ejecución.

------
#### [ Python ]

      ```
      def poll_instance(events, context):
            import boto3
            import time
          
            ec2 = boto3.client('ec2')
          
            instance_id = events['InstanceId']
          
            print('[INFO] Waiting for instance status check to report ok', instance_id)
          
            instance_status = "null"
          
            while True:
              res = ec2.describe_instance_status(InstanceIds=[instance_id])
          
              if len(res['InstanceStatuses']) == 0:
                print("Instance status information is not available yet")
                time.sleep(5)
                continue
          
              instance_status = res['InstanceStatuses'][0]['InstanceStatus']['Status']
          
              print('[INFO] Polling to get status of the instance', instance_status)
          
              if instance_status == 'ok':
                break
          
              time.sleep(10)
          
            return {'Status': instance_status, 'InstanceId': instance_id}
      ```

------
#### [ PowerShell ]

      ```
          Install-Module AWS.Tools.EC2 -Force
          
          $inputPayload = $env:InputPayload | ConvertFrom-Json
          
          $instanceId = $inputPayload.payload.InstanceId
          
          $status = Get-EC2InstanceStatus -InstanceId $instanceId
          
          while ($status.Status.Status -ne 'ok'){
             Write-Host 'Polling get status of the instance', $instanceId
          
             Start-Sleep -Seconds 5
          
             $status = Get-EC2InstanceStatus -InstanceId $instanceId
          }
          
          return @{Status = $status.Status.Status; InstanceId = $instanceId}
      ```

------

   1. Amplíe **Additional inputs (Entradas adicionales)**. 

   1. En **Input name (Nombre de entrada)**, elija **InputPayload**. En **Input value (Valor de entrada)**, introduzca lo siguiente:

      ```
      {{ LaunchEc2Instance.payload }}
      ```

1. Elija **Create automation** (Crear automatización) para guardar el manual de procedimientos.