

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

# Documentos de AWS Systems Manager
<a name="documents"></a>

Un documento de AWS Systems Manager (documento de SSM) define las acciones que Systems Manager realiza en las instancias administradas. Systems Manager incluye más de 100 documentos preconfigurados que puede utilizar especificando los parámetros en tiempo de ejecución. Los documentos preconfigurados se pueden encontrar en la consola de documentos de Systems Manager en la pestaña **Owned by Amazon** (Propiedad de Amazon) o si especifica Amazon para el filtro `Owner` (Propietario) al llamar a la operación de la API `ListDocuments`. Los documentos usan JSON (JavaScript Object Notation, notación de objetos de JavaScript) o YAML e incluyen los pasos y los parámetros que especifique. 

Para mejorar la seguridad, a partir del 14 de julio de 2025, los documentos SSM admiten la interpolación de variables de entorno al procesar los parámetros. Esta característica, disponible en la versión 2.2 del esquema y en la versión 3.3.2746.0 o superior de SSM Agent, ayuda a prevenir los ataques de inyección de comandos.

Para comenzar a utilizar documentos de SSM, abra la [consola de Systems Manager](https://console.aws.amazon.com/systems-manager/documents). En el panel de navegación, elija **Documentos**.

**importante**  
En Systems Manager, un documento de SSM *propiedad de Amazon* es un documento creado y administrado por Amazon Web Services. Los documentos que son *propiedad de Amazon* incluyen un prefijo como `AWS-*` en el nombre del documento. Se considera que el propietario del documento es Amazon, no una cuenta de usuario específica de AWS. Estos documentos están a disposición del público para que los utilicen todos los usuarios.

## ¿Cómo puede beneficiar la herramienta Documentos a mi organización?
<a name="ssm-docs-benefits"></a>

Documentos, una herramienta de AWS Systems Manager, ofrece los siguientes beneficios:
+ **Categorías de documentos**

  Para ayudarlo a encontrar los documentos que necesita, elija una categoría según el tipo de documento que esté buscando. Para ampliar la búsqueda, puede elegir varias categorías del mismo tipo de documento. No se admite la selección de categorías de distintos tipos de documento. Las categorías solo se admiten para documentos propiedad de Amazon.
+  **Versiones de los documentos** 

  Puede crear y guardar distintas versiones de los documentos. A continuación, puede especificar una versión predeterminada para cada documento. La versión predeterminada de un documento se puede actualizar a una versión más reciente o revertir a una versión anterior del documento. Cuando cambia el contenido de un documento, Systems Manager incrementa automáticamente la versión del documento. Especifique la versión de un documento en la consola, los comandos de AWS Command Line Interface (AWS CLI) o las llamadas a la API para recuperar o utilizar cualquier versión de un documento.
+  **Personalizar documentos según sus necesidades** 

  Si desea personalizar los pasos y las acciones en un documento, puede crear el suyo propio. El sistema almacena el documento con su Cuenta de AWS en la Región de AWS en la que lo cree. Para obtener más información acerca de cómo crear un documento de SSM, consulte [Crear contenido en el documento de SSM](documents-creating-content.md).
+  **Etiquetar documentos** 

  Puede etiquetar sus documentos para identificar rápidamente uno o varios documentos en función de las etiquetas que les haya asignado. Por ejemplo, puede etiquetar documentos para entornos específicos, departamentos, usuarios, grupos o períodos. También puede restringir el acceso a documentos mediante la creación de una política de AWS Identity and Access Management (IAM) que especifique las etiquetas a las que podrá obtener acceso un usuario o un grupo. 
+  **Compartir documentos** 

  Puede hacer que los documentos sean públicos o compartirlos con determinadas Cuentas de AWS en la misma Región de AWS. Compartir documentos entre cuentas puede resultar útil si, por ejemplo, desea que todas las instancias de Amazon Elastic Compute Cloud (Amazon EC2) que proporcione a los clientes o a los empleados tengan la misma configuración. Además de mantener actualizadas las aplicaciones o las revisiones en las instancias, quizá le interese restringir las instancias de cliente en determinadas actividades. O bien, quizá desee asegurarse de que las instancias utilizadas por las cuentas de los empleados en toda la empresa dispongan de acceso a recursos internos específicos. Para obtener más información, consulte [Uso compartido de documentos de SSM](documents-ssm-sharing.md).

## ¿Quién debería utilizar Documentos?
<a name="documents-who"></a>
+ Todo cliente de AWS que desee utilizar las herramientas de Systems Manager para mejorar su eficiencia operativa a escala, reducir los errores asociados a la intervención manual y reducir el tiempo de resolución de problemas comunes.
+ Expertos en infraestructura que deseen automatizar las tareas de implementación y configuración.
+ Administradores que deseen resolver problemas comunes de forma fiable, mejorar la eficiencia de la solución de problemas y reducir las operaciones repetitivas.
+ Usuarios que deseen automatizar una tarea que normalmente realizan de forma manual.

## ¿Cuáles son los tipos de documentos de SSM?
<a name="what-are-document-types"></a>

En la siguiente tabla, se describen los distintos tipos de documentos de SSM y los usos.


****  

| Tipo | Utilizar con | Details | 
| --- | --- | --- | 
|  ApplicationConfiguration ApplicationConfigurationSchema  |   [AWS AppConfig](https://docs.aws.amazon.com/appconfig/latest/userguide/what-is-appconfig.html)   |  AWS AppConfig, una herramienta de AWS Systems Manager, le permite crear, administrar e implementar rápidamente configuraciones de aplicaciones. Para almacenar los datos de configuración en un documento SSM, puede crear un documento que utilice el tipo de documento `ApplicationConfiguration`. Para obtener más información, consulte [Configuración libre](https://docs.aws.amazon.com/appconfig/latest/userguide/appconfig-creating-configuration-and-profile.html#free-form-configurations) en la *Guía del usuario de AWS AppConfig*. Si crea una configuración en un documento SSM, debe especificar un esquema JSON correspondiente. El esquema utiliza el tipo de documento `ApplicationConfigurationSchema` y, al igual que un conjunto de reglas, define las propiedades permitidas para cada ajuste de configuración de la aplicación. Para obtener más información, consulte [Acerca de los validadores](https://docs.aws.amazon.com/appconfig/latest/userguide/appconfig-creating-configuration-and-profile-validators.html) en la *Guía del usuario de AWS AppConfig*.  | 
|  Manual de procedimientos de Automation  |   [Automation](systems-manager-automation.md)   [State Manager](systems-manager-state.md)   [Maintenance Windows](maintenance-windows.md)   |  Utilice los manuales de procedimientos de Automation a la hora de realizar tareas de implementación y mantenimiento comunes como, por ejemplo, crear o actualizar una Amazon Machine Image (AMI). State Manager utiliza los documentos de automatización para aplicar una configuración. Estas acciones se pueden ejecutar en uno o varios destinos en cualquier momento durante el ciclo de vida de una instancia. Maintenance Windows utiliza manuales de procedimientos de Automation para realizar tareas de implementación y mantenimiento comunes en función de la programación especificada. Todos los documentos de Automation compatibles con sistemas operativos basados en Linux también se admiten en instancias EC2 para macOS.  | 
|  Documento de calendario de cambios  |   [Change Calendar](systems-manager-change-calendar.md)   |  Change Calendar, una herramienta de AWS Systems Manager, usa el tipo de documento `ChangeCalendar`. Un documento de Change Calendar almacena una entrada de calendario y eventos asociados que pueden permitir o impedir que las acciones de Automation cambien el entorno. En Change Calendar, un documento almacena datos de [iCalendar 2.0](https://icalendar.org/) en texto sin formato. Change Calendar no es compatible con instancias EC2 para macOS.  | 
|  AWS CloudFormationPlantilla de   |   [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)   |  AWS CloudFormationEstas plantillas de describen los recursos que desea aprovisionar en sus pilas de CloudFormation. El almacenamiento de plantillas de CloudFormation como documentos de Systems Manager le permite beneficiarse de las características de los documentos de Systems Manager. Estos incluyen crear y comparar varias versiones de su plantilla y compartir su plantilla con otras cuentas en la misma Región de AWS. Puede crear y editar plantillas y pilas de CloudFormation con Application Manager, una herramienta de Systems Manager. Para obtener más información, consulte [Trabajo con plantillas y pilas de CloudFormation en Application Manager](application-manager-working-stacks.md).  | 
|  Documento de comandos  |   [Run Command](run-command.md)   [State Manager](systems-manager-state.md)   [Maintenance Windows](maintenance-windows.md)   |  Run Command, una herramienta de AWS Systems Manager, utiliza documentos de comandos para ejecutar comandos. State Manager, una herramienta de AWS Systems Manager, utiliza documentos de comandos para aplicar una configuración. Estas acciones se pueden ejecutar en uno o más destinos en cualquier momento durante el ciclo de vida de una instancia. Maintenance Windows, una herramienta de AWS Systems Manager, utiliza los documentos de comandos para aplicar una configuración en función de la programación especificada. La mayoría de los documentos de Command son compatibles con todos los sistemas operativos Linux y Windows Server, que, a su vez, son compatibles con Systems Manager. Los siguientes documentos de Command se admiten en instancias EC2 para macOS: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/systems-manager/latest/userguide/documents.html)  | 
|  Plantilla de paquete de conformidad de AWS Config  |   [AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html)   |  Las plantillas de paquetes de conformidad de AWS Config son documentos con formato YAML que se utilizan para crear paquetes de conformidad que contienen la lista de reglas administradas o personalizadas de AWS Config y acciones de corrección. Para obtener más información, consulte [Conformance Packs](https://docs.aws.amazon.com/config/latest/developerguide/conformance-packs.html) (Paquetes de conformidad).  | 
|  Documento de paquete  |   [Distributor](distributor.md)   |  En Distributor, una herramienta de AWS Systems Manager, un paquete está representado por un documento de SSM. Un documento de paquete incluye archivos de almacenamiento ZIP asociados que contienen software o recursos para instalar en las instancias administradas. La creación de un paquete en Distributor crea el documento del paquete. Distributor no es compatible con Oracle Linux ni con las instancias administradas de macOS.  | 
|  Documento de política  |   [State Manager](systems-manager-state.md)   |  Inventario, una herramienta de AWS Systems Manager, utiliza el documento de política `AWS-GatherSoftwareInventory` con una asociación de State Manager para recopilar datos de inventario de instancias administradas. Cuando crea sus propios documentos de SSM, los manuales de procedimientos de Automation y los documentos de Command son el método preferido para aplicar una política a una instancia administrada. Systems Manager Inventory y el documento de política de `AWS-GatherSoftwareInventory` se admiten en todos los sistemas operativos compatibles con Systems Manager.  | 
|  Plantilla de análisis posterior a incidentes  |   [Análisis posterior a incidentes de Incident Manager](https://docs.aws.amazon.com/incident-manager/latest/userguide/analysis.html)   |  Incident Manager utiliza la plantilla de análisis posterior a incidentes para crear un análisis basado en prácticas recomendadas de administración de operaciones de AWS. Utilice la plantilla para crear un análisis que su equipo pueda utilizar para identificar mejoras en la respuesta a incidentes.   | 
|  Documento de sesión  |   [Session Manager](session-manager.md)   |  Session Manager, una herramienta de AWS Systems Manager, utiliza documentos de sesión para determinar qué tipo de sesión iniciar, como una sesión de reenvío de puertos, una sesión para ejecutar un comando interactivo o una sesión para crear un túnel SSH. Los documentos de sesión son compatibles con todos los sistemas operativos Linux y Windows Server que, a su vez, son compatibles con Systems Manager. Los siguientes documentos de Command se admiten en instancias EC2 para macOS: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/systems-manager/latest/userguide/documents.html)  | 

**Cuotas de documentos de SSM**  
Para obtener más información sobre las cuotas de los documentos de SSM, consulte [Service Quotas de Systems Manager](https://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm) en la *Referencia general de Amazon Web Services*.

**Topics**
+ [¿Cómo puede beneficiar la herramienta Documentos a mi organización?](#ssm-docs-benefits)
+ [¿Quién debería utilizar Documentos?](#documents-who)
+ [¿Cuáles son los tipos de documentos de SSM?](#what-are-document-types)
+ [Componentes del documento](documents-components.md)
+ [Crear contenido en el documento de SSM](documents-creating-content.md)
+ [Trabajo con documentos](documents-using.md)
+ [Solución de problemas de gestión de parámetros](parameter-troubleshooting.md)

# Componentes del documento
<a name="documents-components"></a>

Esta sección incluye información sobre los componentes de los documentos de SSM.

**Topics**
+ [Esquemas, características y ejemplos](documents-schemas-features.md)
+ [Elementos y parámetros de datos](documents-syntax-data-elements-parameters.md)
+ [Referencia de complementos del documento de comandos](documents-command-ssm-plugin-reference.md)

# Esquemas, características y ejemplos
<a name="documents-schemas-features"></a>

AWS Systems ManagerLos documentos de (SSM) utilizan las siguientes versiones de esquema.
+ Los documentos del tipo `Command` pueden utilizar la versión de esquema 1.2, 2.0 y 2.2. Si utiliza documentos de esquema 1.2, le recomendamos que cree documentos que utilicen la versión de esquema 2.2.
+ Los documentos del tipo `Policy` deben utilizar la versión de esquema 2.0 o posterior.
+ Los documentos del tipo `Automation` deben utilizar la versión de esquema 0.3.
+ Los documentos del tipo `Session` deben utilizar la versión de esquema 1.0.
+ Puede crear documentos en JSON o YAML.

Para obtener más información acerca del esquema del documento de `Session`, consulte [Esquema del documento de Session](session-manager-schema.md).

Si utiliza la versión de esquema más reciente para los documentos de tipo `Command` y `Policy`, puede aprovechar las siguientes características.


**Características de los documentos con la versión de esquema 2.2**  

| Característica | Details | 
| --- | --- | 
|  Edición de documentos  |  Ahora los documentos pueden actualizarse. Con la versión 1.2, cualquier actualización de un documento requería guardarlo con otro nombre.  | 
|  Control de versiones automático  |  Cualquier actualización de un documento crea una versión nueva. No es una versión de esquema, sino una versión del documento.  | 
|  Versión predeterminada  |  Si tiene varias versiones de un documento, puede especificar qué versión es el documento predeterminado.  | 
|  Secuenciación  |  Los complementos o los *pasos* de un documento se ejecutan en el orden especificado.  | 
|  Compatibilidad multiplataforma  |  La compatibilidad multiplataforma le permite especificar diferentes sistemas operativos para distintos complementos dentro del mismo documento de SSM. La compatibilidad multiplataforma utiliza el parámetro `precondition` dentro de un paso.   | 
| Interpolación de parámetros | Interpolación significa insertar o sustituir un valor variable en una cadena. Es como rellenar un espacio en blanco con valores reales antes de usar la cadena. En el contexto de los documentos de SSM, la interpolación de parámetros permite interpolar los parámetros de cadena en las variables de entorno antes de la ejecución del comando, lo que proporciona una mayor seguridad contra las inyecciones de comandos. Cuando se establece en `ENV_VAR`, el agente crea una variable de entorno denominada `SSM_parameter-name` que contiene el valor del parámetro. | 

**nota**  
El AWS Systems Manager SSM Agent de las instancias debe mantenerse actualizado con la versión más reciente para poder utilizar las características nuevas de Systems Manager y las características del documento de SSM. Para obtener más información, consulte [Actualización de SSM Agent mediante Run Command](run-command-tutorial-update-software.md#rc-console-agentexample).

La siguiente tabla enumera las diferencias entre las versiones de esquema principales.


****  

| Versión 1.2 | Versión 2.2 (versión más reciente) | Details | 
| --- | --- | --- | 
|  runtimeConfig  |  mainSteps  |  En la versión 2.2, la sección `mainSteps` sustituye a la `runtimeConfig`. La sección `mainSteps` permite a Systems Manager ejecutar los pasos de forma secuencial.  | 
|  propiedades  |  inputs  |  En la versión 2.2, la sección `inputs` sustituye la sección `properties`. La sección `inputs` acepta parámetros en los pasos.  | 
|  comandos  |  runCommand  |  En la versión 2.2, la sección `inputs` toma el parámetro `runCommand` en lugar del parámetro `commands`.  | 
|  id  |  acción  |  En la versión 2.2, `Action` sustituye a `ID`. Se trata tan solo de un cambio de nombre.  | 
|  no se usa  |  name  |  En la versión 2.2, `name` es cualquier nombre definido por el usuario para un paso.  | 

**Uso del parámetro precondition**  
Con la versión de esquema 2.2 o posterior, puede utilizar el parámetro `precondition` para especificar el sistema operativo de destino de cada complemento o para validar los parámetros de entrada que definió en su documento de SSM. El parámetro `precondition` admite hacer referencia a los parámetros de entrada de su documento de SSM, y `platformType` utilizando los valores de `Linux`, `MacOS`, y `Windows`. Solo el operador `StringEquals` es compatible.

En el caso de documentos que utilizan la versión de esquema 2.2 o posterior, si no se especifica `precondition`, cada complemento se ejecuta u omite en función de la compatibilidad del complemento con el sistema operativo. La compatibilidad de los complementos con el sistema operativo se evalúa antes de `precondition`. En el caso de los documentos que utilizan el esquema 2.0 o anterior, los complementos incompatibles generarán un error.

Por ejemplo, en un documento con la versión de esquema 2.2, si no se especifica `precondition` y se incluye el complemento `aws:runShellScript`, el paso se ejecuta en las instancias de Linux, pero el sistema lo omite en las instancias de Windows Server, ya que `aws:runShellScript` no es compatible con las instancias de Windows Server. Sin embargo, en el caso de un documento con versión de esquema 2.0, si especifica el complemento `aws:runShellScript` y, a continuación, ejecuta el documento en una instancia de Windows Server, se produce un error en la ejecución. Puede ver un ejemplo del parámetro de condición previa en un documento de SSM más adelante en esta sección.

## Versión de esquema 2.2
<a name="documents-schema-twox"></a>

**Elementos de nivel superior**  
En el siguiente ejemplo, se muestran los elementos de nivel superior de un documento de SSM que utiliza la versión 2.2 del esquema.

------
#### [ YAML ]

```
---
schemaVersion: "2.2"
description: A description of the document.
parameters:
  parameter 1:
    property 1: "value"
    property 2: "value"
  parameter 2:
    property 1: "value"
    property 2: "value"
mainSteps:
  - action: Plugin name
    name: A name for the step.
    inputs:
      input 1: "value"
      input 2: "value"
      input 3: "{{ parameter 1 }}"
```

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

```
{
   "schemaVersion": "2.2",
   "description": "A description of the document.",
   "parameters": {
       "parameter 1": {
           "property 1": "value",
           "property 2": "value"
        },
        "parameter 2":{
           "property 1": "value",
           "property 2": "value"
        } 
    },
   "mainSteps": [
      {
         "action": "Plugin name",
         "name": "A name for the step.",
         "inputs": {
            "input 1": "value",
            "input 2": "value",
            "input 3": "{{ parameter 1 }}"
         }
      }
   ]
}
```

------

**Ejemplo de la versión 2.2 del esquema**  
En el ejemplo siguiente, se utiliza el complemento `aws:runPowerShellScript` para ejecutar un comando de PowerShell en las instancias de destino.

------
#### [ YAML ]

```
---
schemaVersion: "2.2"
description: "Example document"
parameters:
  Message:
    type: "String"
    description: "Example parameter"
    default: "Hello World"
    allowedValues: 
    - "Hello World"
mainSteps:
  - action: "aws:runPowerShellScript"
    name: "example"
    inputs:
      timeoutSeconds: '60'
      runCommand:
      - "Write-Output {{Message}}"
```

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

```
{
   "schemaVersion": "2.2",
   "description": "Example document",
   "parameters": {
      "Message": {
         "type": "String",
         "description": "Example parameter",
         "default": "Hello World",
         "allowedValues": ["Hello World"]
      }
   },
   "mainSteps": [
      {
         "action": "aws:runPowerShellScript",
         "name": "example",
         "inputs": {
            "timeoutSeconds": "60",
            "runCommand": [
               "Write-Output {{Message}}"
            ]
         }
      }
   ]
}
```

------

**Ejemplos del parámetro de condición previa de una versión de esquema 2.2**  
La versión de esquema 2.2 ofrece compatibilidad multiplataforma. Esto significa que dentro de un mismo documento de SSM puede especificar diferentes sistemas operativos para distintos complementos. La compatibilidad multiplataforma utiliza el parámetro `precondition` dentro de un paso, tal y como se muestra en el siguiente ejemplo. También puede utilizar el parámetro `precondition` para validar los parámetros de entrada que haya definido en el documento de SSM. Puede ver esto en el segundo caso de los siguientes ejemplos.

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: cross-platform sample
mainSteps:
- action: aws:runPowerShellScript
  name: PatchWindows
  precondition:
    StringEquals:
    - platformType
    - Windows
  inputs:
    runCommand:
    - cmds
- action: aws:runShellScript
  name: PatchLinux
  precondition:
    StringEquals:
    - platformType
    - Linux
  inputs:
    runCommand:
    - cmds
```

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

```
{
   "schemaVersion": "2.2",
   "description": "cross-platform sample",
   "mainSteps": [
      {
         "action": "aws:runPowerShellScript",
         "name": "PatchWindows",
         "precondition": {
            "StringEquals": [
               "platformType",
               "Windows"
            ]
         },
         "inputs": {
            "runCommand": [
               "cmds"
            ]
         }
      },
      {
         "action": "aws:runShellScript",
         "name": "PatchLinux",
         "precondition": {
            "StringEquals": [
               "platformType",
               "Linux"
            ]
         },
         "inputs": {
            "runCommand": [
               "cmds"
            ]
         }
      }
   ]
}
```

------

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
parameters:
  action:
    type: String
    allowedValues:
    - Install
    - Uninstall
  confirmed:
    type: String
    allowedValues:
    - True
    - False
mainSteps:
- action: aws:runShellScript
  name: InstallAwsCLI
  precondition:
    StringEquals:
    - "{{ action }}"
    - "Install"
  inputs:
    runCommand:
    - sudo apt install aws-cli
- action: aws:runShellScript
  name: UninstallAwsCLI
  precondition:
    StringEquals:
    - "{{ action }} {{ confirmed }}"
    - "Uninstall True"
  inputs:
    runCommand:
    - sudo apt remove aws-cli
```

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

```
{
   "schemaVersion": "2.2",
   "parameters": {
      "action": {
         "type": "String",
         "allowedValues": [
            "Install",
            "Uninstall"
         ]
      },
      "confirmed": {
         "type": "String",
         "allowedValues": [
            true,
            false
         ]
      }
   },
   "mainSteps": [
      {
         "action": "aws:runShellScript",
         "name": "InstallAwsCLI",
         "precondition": {
            "StringEquals": [
               "{{ action }}",
               "Install"
            ]
         },
         "inputs": {
            "runCommand": [
               "sudo apt install aws-cli"
            ]
         }
      },
      {
         "action": "aws:runShellScript",
         "name": "UninstallAwsCLI",
         "precondition": {
            "StringEquals": [
               "{{ action }} {{ confirmed }}",
               "Uninstall True"
            ]
         },
         "inputs": {
            "runCommand": [
               "sudo apt remove aws-cli"
            ]
         }
      }
   ]
}
```

------

**Ejemplo de interpolación de la versión 2.2 del esquema con versiones de SSM Agent anteriores a la 3.3.2746.0**  
En las versiones de SSM Agent anteriores a la 3.3.2746.0, el agente ignora el parámetro `interpolationType` y, en su lugar, realiza una sustitución de cadena sin procesar. Si hace referencia a `SSM_parameter-name` de forma explícita, debe configurarlo de forma explícita. En el siguiente ejemplo para Linux, se hace referencia explícita a la variable de entorno `SSM_Message`.

```
{
    "schemaVersion": "2.2",
    "description": "An example document",
    "parameters": {
        "Message": {
            "type": "String",
            "description": "Message to be printed",
            "default": "Hello",
            "interpolationType" : "ENV_VAR",
	     "allowedPattern: "^[^"]*$"

        }
    },
    "mainSteps": [{
        "action": "aws:runShellScript",
        "name": "printMessage",
        "inputs": {
            "runCommand": [
              "if [ -z "${SSM_Message+x}" ]; then",
              "    export SSM_Message=\"{{Message}}\"",
              "fi",
              "",
              "echo $SSM_Message"
            ]
        }
    }
}
```

**nota**  
`allowedPattern` no es técnicamente obligatorio si un documento SSM no utiliza doble llave: `{{ }}`

**Ejemplo de la versión 2.2 del esquema State Manager**  
Puede utilizar el siguiente documento de SSM con State Manager, una herramienta de Systems Manager, para descargar e instalar el software antivirus ClamAV. State Manager aplica una configuración específica, lo que significa que cada vez que se ejecuta la asociación de State Manager, el sistema comprueba si el software ClamAV está instalado. En caso contrario, State Manager vuelve a ejecutar este documento.

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: State Manager Bootstrap Example
parameters: {}
mainSteps:
- action: aws:runShellScript
  name: configureServer
  inputs:
    runCommand:
    - sudo yum install -y httpd24
    - sudo yum --enablerepo=epel install -y clamav
```

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

```
{
   "schemaVersion": "2.2",
   "description": "State Manager Bootstrap Example",
   "parameters": {},
   "mainSteps": [
      {
         "action": "aws:runShellScript",
         "name": "configureServer",
         "inputs": {
            "runCommand": [
               "sudo yum install -y httpd24",
               "sudo yum --enablerepo=epel install -y clamav"
            ]
         }
      }
   ]
}
```

------

**Ejemplo de inventario con la versión 2.2 del esquema**  
Puede utilizar el siguiente documento de SSM con State Manager para recopilar metadatos de inventario de las instancias.

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: Software Inventory Policy Document.
parameters:
  applications:
    type: String
    default: Enabled
    description: "(Optional) Collect data for installed applications."
    allowedValues:
    - Enabled
    - Disabled
  awsComponents:
    type: String
    default: Enabled
    description: "(Optional) Collect data for AWS Components like amazon-ssm-agent."
    allowedValues:
    - Enabled
    - Disabled
  networkConfig:
    type: String
    default: Enabled
    description: "(Optional) Collect data for Network configurations."
    allowedValues:
    - Enabled
    - Disabled
  windowsUpdates:
    type: String
    default: Enabled
    description: "(Optional) Collect data for all Windows Updates."
    allowedValues:
    - Enabled
    - Disabled
  instanceDetailedInformation:
    type: String
    default: Enabled
    description: "(Optional) Collect additional information about the instance, including
      the CPU model, speed, and the number of cores, to name a few."
    allowedValues:
    - Enabled
    - Disabled
  customInventory:
    type: String
    default: Enabled
    description: "(Optional) Collect data for custom inventory."
    allowedValues:
    - Enabled
    - Disabled
mainSteps:
- action: aws:softwareInventory
  name: collectSoftwareInventoryItems
  inputs:
    applications: "{{ applications }}"
    awsComponents: "{{ awsComponents }}"
    networkConfig: "{{ networkConfig }}"
    windowsUpdates: "{{ windowsUpdates }}"
    instanceDetailedInformation: "{{ instanceDetailedInformation }}"
    customInventory: "{{ customInventory }}"
```

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

```
{
   "schemaVersion": "2.2",
   "description": "Software Inventory Policy Document.",
   "parameters": {
      "applications": {
         "type": "String",
         "default": "Enabled",
         "description": "(Optional) Collect data for installed applications.",
         "allowedValues": [
            "Enabled",
            "Disabled"
         ]
      },
      "awsComponents": {
         "type": "String",
         "default": "Enabled",
         "description": "(Optional) Collect data for AWS Components like amazon-ssm-agent.",
         "allowedValues": [
            "Enabled",
            "Disabled"
         ]
      },
      "networkConfig": {
         "type": "String",
         "default": "Enabled",
         "description": "(Optional) Collect data for Network configurations.",
         "allowedValues": [
            "Enabled",
            "Disabled"
         ]
      },
      "windowsUpdates": {
         "type": "String",
         "default": "Enabled",
         "description": "(Optional) Collect data for all Windows Updates.",
         "allowedValues": [
            "Enabled",
            "Disabled"
         ]
      },
      "instanceDetailedInformation": {
         "type": "String",
         "default": "Enabled",
         "description": "(Optional) Collect additional information about the instance, including\nthe CPU model, speed, and the number of cores, to name a few.",
         "allowedValues": [
            "Enabled",
            "Disabled"
         ]
      },
      "customInventory": {
         "type": "String",
         "default": "Enabled",
         "description": "(Optional) Collect data for custom inventory.",
         "allowedValues": [
            "Enabled",
            "Disabled"
         ]
      }
   },
   "mainSteps": [
      {
         "action": "aws:softwareInventory",
         "name": "collectSoftwareInventoryItems",
         "inputs": {
            "applications": "{{ applications }}",
            "awsComponents": "{{ awsComponents }}",
            "networkConfig": "{{ networkConfig }}",
            "windowsUpdates": "{{ windowsUpdates }}",
            "instanceDetailedInformation": "{{ instanceDetailedInformation }}",
            "customInventory": "{{ customInventory }}"
         }
      }
   ]
}
```

------

**Ejemplo de la versión 2.2 del esquema `AWS-ConfigureAWSPackage`**  
El siguiente ejemplo muestra el documento de `AWS-ConfigureAWSPackage`. La sección `mainSteps` incluye el complemento `aws:configurePackage` en el paso `action`.

**nota**  
En sistemas operativos Linux, solo son compatibles los paquetes `AmazonCloudWatchAgent` y `AWSSupport-EC2Rescue`.

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: 'Install or uninstall the latest version or specified version of an AWS
  package. Available packages include the following: AWSPVDriver, AwsEnaNetworkDriver,
  AwsVssComponents, and AmazonCloudWatchAgent, and AWSSupport-EC2Rescue.'
parameters:
  action:
    description: "(Required) Specify whether or not to install or uninstall the package."
    type: String
    allowedValues:
    - Install
    - Uninstall
  name:
    description: "(Required) The package to install/uninstall."
    type: String
    allowedPattern: "^arn:[a-z0-9][-.a-z0-9]{0,62}:[a-z0-9][-.a-z0-9]{0,62}:([a-z0-9][-.a-z0-9]{0,62})?:([a-z0-9][-.a-z0-9]{0,62})?:package\\/[a-zA-Z][a-zA-Z0-9\\-_]{0,39}$|^[a-zA-Z][a-zA-Z0-9\\-_]{0,39}$"
  version:
    type: String
    description: "(Optional) A specific version of the package to install or uninstall."
mainSteps:
- action: aws:configurePackage
  name: configurePackage
  inputs:
    name: "{{ name }}"
    action: "{{ action }}"
    version: "{{ version }}"
```

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

```
{
   "schemaVersion": "2.2",
   "description": "Install or uninstall the latest version or specified version of an AWS package. Available packages include the following: AWSPVDriver, AwsEnaNetworkDriver, AwsVssComponents, and AmazonCloudWatchAgent, and AWSSupport-EC2Rescue.",
   "parameters": {
      "action": {
         "description":"(Required) Specify whether or not to install or uninstall the package.",
         "type":"String",
         "allowedValues":[
            "Install",
            "Uninstall"
         ]
      },
      "name": {
         "description": "(Required) The package to install/uninstall.",
         "type": "String",
         "allowedPattern": "^arn:[a-z0-9][-.a-z0-9]{0,62}:[a-z0-9][-.a-z0-9]{0,62}:([a-z0-9][-.a-z0-9]{0,62})?:([a-z0-9][-.a-z0-9]{0,62})?:package\\/[a-zA-Z][a-zA-Z0-9\\-_]{0,39}$|^[a-zA-Z][a-zA-Z0-9\\-_]{0,39}$"
      },
      "version": {
         "type": "String",
         "description": "(Optional) A specific version of the package to install or uninstall."
      }
   },
   "mainSteps":[
      {
         "action": "aws:configurePackage",
         "name": "configurePackage",
         "inputs": {
            "name": "{{ name }}",
            "action": "{{ action }}",
            "version": "{{ version }}"
         }
      }
   ]
}
```

------

## Versión de esquema 1.2
<a name="documents-schema-onex"></a>

El siguiente ejemplo muestra los elementos de nivel superior de un documento con la versión de esquema 1.2.

```
{
   "schemaVersion":"1.2",
   "description":"A description of the SSM document.",
   "parameters":{
      "parameter 1":{
         "one or more parameter properties"
      },
      "parameter 2":{
         "one or more parameter properties"
      },
      "parameter 3":{
         "one or more parameter properties"
      }
   },
   "runtimeConfig":{
      "plugin 1":{
         "properties":[
            {
               "one or more plugin properties"
            }
         ]
      }
   }
}
```

**Ejemplo de la versión 1.2 del esquema `aws:runShellScript`**  
El siguiente ejemplo muestra el documento de SSM `AWS-RunShellScript`. La sección **runtimeConfig** incluye el complemento `aws:runShellScript`.

```
{
    "schemaVersion":"1.2",
    "description":"Run a shell script or specify the commands to run.",
    "parameters":{
        "commands":{
            "type":"StringList",
            "description":"(Required) Specify a shell script or a command to run.",
            "minItems":1,
            "displayType":"textarea"
        },
        "workingDirectory":{
            "type":"String",
            "default":"",
            "description":"(Optional) The path to the working directory on your instance.",
            "maxChars":4096
        },
        "executionTimeout":{
            "type":"String",
            "default":"3600",
            "description":"(Optional) The time in seconds for a command to complete before it is considered to have failed. Default is 3600 (1 hour). Maximum is 172800 (48 hours).",
            "allowedPattern":"([1-9][0-9]{0,3})|(1[0-9]{1,4})|(2[0-7][0-9]{1,3})|(28[0-7][0-9]{1,2})|(28800)"
        }
    },
    "runtimeConfig":{
        "aws:runShellScript":{
            "properties":[
                {
                    "id":"0.aws:runShellScript",
                    "runCommand":"{{ commands }}",
                    "workingDirectory":"{{ workingDirectory }}",
                    "timeoutSeconds":"{{ executionTimeout }}"
                }
            ]
        }
    }
}
```

## Versión de esquema 0.3
<a name="automation-doc-syntax-examples"></a>

**Elementos de nivel superior**  
El siguiente ejemplo muestra los elementos de nivel superior de un manual de procedimientos de automatización con la versión de esquema 0.3 o posterior en formato JSON.

```
{
    "description": "document-description",
    "schemaVersion": "0.3",
    "assumeRole": "{{assumeRole}}",
    "parameters": {
        "parameter1": {
            "type": "String",
            "description": "parameter-1-description",
            "default": ""
        },
        "parameter2": {
            "type": "String",
            "description": "parameter-2-description",
            "default": ""
        }
    },
    "variables": {
        "variable1": {
            "type": "StringMap",
            "description": "variable-1-description",
            "default": {}
        },
        "variable2": {
            "type": "String",
            "description": "variable-2-description",
            "default": "default-value"
        }
    },
    "mainSteps": [
        {
            "name": "myStepName",
            "action": "action-name",
            "maxAttempts": 1,
            "inputs": {
                "Handler": "python-only-handler-name",
                "Runtime": "runtime-name",
                "Attachment": "script-or-zip-name"
            },
            "outputs": {
                "Name": "output-name",
                "Selector": "selector.value",
                "Type": "data-type"
            }
        }
    ],
    "files": {
        "script-or-zip-name": {
            "checksums": {
                "sha256": "checksum"
            },
            "size": 1234
        }
    }
}
```

**Ejemplo de manual de procedimientos de automatización YAML**  
En el siguiente ejemplo, se muestra el contenido de un manual de procedimientos de automatización en formato YAML. Este ejemplo de trabajo de la versión 0.3 del esquema del documento también demuestra el uso de Markdown para dar formato a las descripciones del documento.

```
description: >-
  ##Title: LaunchInstanceAndCheckState

  -----

  **Purpose**: This Automation runbook first launches an EC2 instance
  using the AMI ID provided in the parameter ```imageId```. The second step of
  this document 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 AMI ID available. | {{
  ssm:/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-x86_64 }}
schemaVersion: '0.3'
assumeRole: 'arn:aws:iam::111122223333::role/AutomationServiceRole'
parameters:
  imageId:
    type: String
    default: '{{ ssm:/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-x86_64 }}'
    description: >-
      (Optional) The AMI ID to use for launching the instance. The default value
      uses the latest released Amazon Linux AMI ID.
  tagValue:
    type: String
    default: ' LaunchedBySsmAutomation'
    description: >-
      (Optional) The tag value to add to the instance. The default value is
      LaunchedBySsmAutomation.
  instanceType:
    type: String
    default: t2.micro
    description: >-
      (Optional) The instance type to use for the instance. The default value is
      t2.micro.
mainSteps:
  - name: LaunchEc2Instance
    action: 'aws:executeScript'
    outputs:
      - Name: payload
        Selector: $.Payload
        Type: StringMap
    inputs:
      Runtime: python3.11
      Handler: launch_instance
      Script: ''
      InputPayload:
        image_id: '{{ imageId }}'
        tag_value: '{{ tagValue }}'
        instance_type: '{{ instanceType }}'
      Attachment: launch.py
    description: >-
      **About This Step**


      This step first launches an EC2 instance using the ```aws:executeScript```
      action and the provided python script.
  - name: WaitForInstanceStatusOk
    action: 'aws:executeScript'
    inputs:
      Runtime: python3.11
      Handler: poll_instance
      Script: |-
        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}
      InputPayload: '{{ LaunchEc2Instance.payload }}'
    description: >-
      **About This Step**


      The python script continuously polls the instance status check value for
      the instance launched in Step 1 until the ```ok``` status is returned.
files:
  launch.py:
    checksums:
      sha256: 18871b1311b295c43d0f...[truncated]...772da97b67e99d84d342ef4aEXAMPLE
```

## Ejemplos de gestión segura de parámetros
<a name="secure-parameter-examples"></a>

Los siguientes ejemplos demuestran la gestión seguro de parámetros mediante una variable de entorno `interpolationType`.

### Ejecución básica de comandos de forma segura
<a name="basic-secure-command"></a>

En este ejemplo se muestra cómo gestionar de forma segura un parámetro de comando:

**nota**  
`allowedPattern` no es técnicamente obligatorio en los documentos SSM que no utilizan doble llave: `{{ }}` 

------
#### [ YAML ]

```
---

schemaVersion: '2.2'
description: An example document.
parameters:
  Message:
    type: String
    description: "Message to be printed"
    default: Hello
    interpolationType: ENV_VAR
    allowedPattern: "^[^"]*$"
mainSteps:
  - action: aws:runShellScript
    name: printMessage
    precondition:
      StringEquals:
        - platformType
        - Linux
    inputs:
      runCommand:
        - echo {{Message}}
```

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

```
{
    "schemaVersion": "2.2",
    "description": "An example document.",
    "parameters": {
        "Message": {
            "type": "String",
            "description": "Message to be printed",
            "default": "Hello",
            "interpolationType": "ENV_VAR",
            "allowedPattern": "^[^"]*$"
        }
    },
    "mainSteps": [{
        "action": "aws:runShellScript",
        "name": "printMessage",
        "precondition": {
           "StringEquals": ["platformType", "Linux"]
        },
        "inputs": {
            "runCommand": [
              "echo {{Message}}"
            ]
        }
    }]
}
```

------

### Uso de parámetros en lenguajes interpretados
<a name="interpreted-language-example"></a>

Este ejemplo demuestra la gestión segura de parámetros en Python:

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: 'Secure Python script execution'
parameters:
  inputData:
    type: String
    description: 'Input data for processing'
    interpolationType: 'ENV_VAR'
mainSteps:
  - action: aws:runPowerShellScript
    name: runPython
    inputs:
      runCommand:
        - |
          python3 -c '
          import os
          import json
          
          # Safely access parameter through environment variable
          input_data = os.environ.get("SSM_inputData", "")
          
          # Process the data
          try:
              processed_data = json.loads(input_data)
              print(f"Successfully processed: {processed_data}")
          except json.JSONDecodeError:
              print("Invalid JSON input")
          '
```

------

### Ejemplo de compatibilidad con versiones anteriores
<a name="backwards-compatibility-example"></a>

En este ejemplo se muestra cómo gestionar los parámetros de forma segura y mantener la compatibilidad con versiones anteriores:

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: 'Backwards compatible secure parameter handling'
parameters:
  userInput:
    type: String
    description: 'User input to process'
    interpolationType: 'ENV_VAR'
    allowedPattern: '^[^"]*$'

mainSteps:
  - action: aws:runShellScript
    name: processInput
    inputs:
      runCommand:
        - |
          # Handle both modern and legacy agent versions
          if [ -z "${SSM_userInput+x}" ]; then
              # Legacy agent - fall back to direct parameter reference
              export SSM_userInput="{{userInput}}"
          fi
          
          # Process the input securely
          echo "Processing input: $SSM_userInput"
```

------

**nota**  
`allowedPattern` no es técnicamente obligatorio en los documentos SSM que no utilizan doble llave: `{{ }}` 

## Prácticas recomendadas de seguridad de parámetros
<a name="parameter-security-best-practices"></a>

Siga estas prácticas recomendadas cuando gestione parámetros en documentos SSM:
+ **Utilice la interpolación de variables de entorno**: utilice siempre `interpolationType: "ENV_VAR"` para los parámetros de cadena que se utilizarán en la ejecución de comandos.
+ **Implemente la validación de entradas**: utilice `allowedPattern` para restringir los valores de los parámetros a patrones seguros.
+ **Gestione los sistemas heredados**: incluya una lógica alternativa para las versiones de SSM Agent anteriores que no admitan la interpolación de variables de entorno.
+ **Escape los caracteres especiales**: cuando utilice valores de parámetros en los comandos, escape correctamente los caracteres especiales para evitar que el intérprete de comandos los interprete.
+ **Limite el alcance de los parámetros**: utilice los patrones de parámetros más restrictivos posibles para su caso de uso.

# Elementos y parámetros de datos
<a name="documents-syntax-data-elements-parameters"></a>

En este tema se describen los elementos de datos que se utilizan en los documentos de SSM. La versión del esquema utilizada para crear un documento define la sintaxis y los elementos de datos que el documento acepta. Se recomienda utilizar la versión de esquema 2.2 o una versión posterior para los documentos de Command. Los manuales de procedimientos de Automation utilizan la versión de esquema 0.3. Asimismo, los manuales de procedimientos de Automation admiten el uso de Markdown, un lenguaje de marcado que le permite agregar descripciones de estilo wiki a documentos y pasos individuales dentro del documento. Para obtener más información acerca del uso de Markdown, consulte [Uso de Markdown en la consola](https://docs.aws.amazon.com/general/latest/gr/aws-markdown.html) en la *Guía de introducción a la Consola de administración de AWS*.

En la siguiente sección se describen los elementos de datos que puede incluir en un documento de SSM.

## Elementos de datos de nivel superior
<a name="top-level"></a>

**schemaVersion**  
La versión de esquema que utilizar.  
Tipo: versión  
Obligatorio: sí

**description**  
La información que proporciona para describir el propósito del documento. También puede utilizar este campo para determinar si un parámetro requiere un valor para que se ejecute un documento o si es opcional proporcionar un valor para el parámetro. En los ejemplos de este tema, se pueden ver los parámetros obligatorios y opcionales.  
Tipo: cadena  
Requerido: no

**parameters**  
Una estructura que define los parámetros que acepta el documento.   
Para mejorar la seguridad al administrar los parámetros de cadena, puede utilizar la interpolación de variables de entorno si especifica la propiedad `interpolationType`. Cuando se establece en `ENV_VAR`, el sistema crea una variable de entorno denominada `SSM_parameter-name` que contiene el valor del parámetro.  
A continuación se incluye un ejemplo de un parámetro que utiliza una variable de entorno `interpolationType`:  

```
{
    "schemaVersion": "2.2",
    "description": "An example document.",
    "parameters": {
        "Message": {
            "type": "String",
            "description": "Message to be printed",
            "default": "Hello",
            "interpolationType" : "ENV_VAR",
            "allowedPattern": "^[^"]*$"

        }
    },
    "mainSteps": [{
        "action": "aws:runShellScript",
        "name": "printMessage",
        "precondition" : {
           "StringEquals" : ["platformType", "Linux"]
        },
        "inputs": {
            "runCommand": [
              "echo {{Message}}"
            ]
        }
    }
}
```
`allowedPattern` no es técnicamente obligatorio en los documentos SSM que no utilizan doble llave: `{{ }}` 
En el caso de los parámetros que usa con frecuencia, le recomendamos que los almacene en Parameter Store, una herramienta de AWS Systems Manager. A continuación, puede definir parámetros en el documento que hagan referencia a los parámetros de Parameter Store como su valor predeterminado. Para hacer referencia a un parámetro de Parameter Store, utilice la sintaxis siguiente.   

```
{{ssm:parameter-name}}
```
Puede utilizar un parámetro que haga referencia a un parámetro de Parameter Store igual que haría con cualquier otro parámetro de documentos. En el siguiente ejemplo, el valor predeterminado del parámetro `commands` es el parámetro `myShellCommands` de Parameter Store. Al especificar el parámetro `commands` como una cadena `runCommand`, el documento ejecuta los comandos almacenados en el parámetro `myShellCommands`.  

```
---
schemaVersion: '2.2'
description: runShellScript with command strings stored as Parameter Store parameter
parameters:
  commands:
    type: StringList
    description: "(Required) The commands to run on the instance."
    default: ["{{ ssm:myShellCommands }}"],
            interpolationType : 'ENV_VAR'
            allowedPattern: '^[^"]*$'

mainSteps:
- action: aws:runShellScript
  name: runShellScriptDefaultParams
  inputs:
    runCommand:"{{ commands }}"
```

```
{
    "schemaVersion": "2.2",
    "description": "runShellScript with command strings stored as Parameter Store parameter",
    "parameters": {
      "commands": {
        "type": "StringList",
        "description": "(Required) The commands to run on the instance.",
        "default": ["{{ ssm:myShellCommands }}"],
        "interpolationType" : "ENV_VAR"
      }
    },
    "mainSteps": [
      {
        "action": "aws:runShellScript",
        "name": "runShellScriptDefaultParams",
        "inputs": {
            "runCommand": [
              "{{ commands }}"
          ]
        }
      }
    ]
  }
```
Puede hacer referencia a los parámetros de `String` y `StringList` de Parameter Store en la sección `parameters` del documento. No puede hacer referencia a los parámetros `SecureString` de Parameter Store.
Para obtener más información acerca de Parameter Store, consulte [AWS Systems Manager Parameter Store](systems-manager-parameter-store.md).  
Tipo: estructura  
La estructura `parameters` acepta los siguientes campos y valores:  
+ `type`: (Obligatorio) Entre los valores permitidos se incluyen los siguientes: `String`, `StringList`, `Integer` `Boolean`, `MapList` y `StringMap`. Para ver ejemplos de cada tipo, consulte [Ejemplos del parámetro `type` en documentos de SSM](#top-level-properties-type) en la siguiente sección.
**nota**  
Los documentos de tipo comando solo admiten los tipos de parámetros `String` y `StringList`.
+ `description`: (Opcional) Una descripción del parámetro.
+ `default`: (Opcional) El valor predeterminado del parámetro o una referencia a un parámetro en Parameter Store.
+ `allowedValues`: (Opcional) Una matriz de valores permitidos para el parámetro. La definición de valores permitidos para el parámetro valida la entrada del usuario. Si un usuario introduce un valor que no está permitido, la ejecución no se iniciará.

------
#### [ YAML ]

  ```
  DirectoryType:
    type: String
    description: "(Required) The directory type to launch."
    default: AwsMad
    allowedValues:
    - AdConnector
    - AwsMad
    - SimpleAd
  ```

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

  ```
  "DirectoryType": {
    "type": "String",
    "description": "(Required) The directory type to launch.",
    "default": "AwsMad",
    "allowedValues": [
      "AdConnector",
      "AwsMad",
      "SimpleAd"
    ]
  }
  ```

------
+ `allowedPattern`: (Opcional) Una expresión regular que valida si la entrada del usuario coincide con el patrón definido para el parámetro. Si la entrada del usuario no coincide con el patrón permitido, la ejecución no se iniciará.
**nota**  
Systems Manager realiza dos validaciones para `allowedPattern`. La primera validación se lleva a cabo utilizando la [Biblioteca regex de Java](https://docs.oracle.com/javase/8/docs/api/java/util/regex/package-summary.html) en el nivel de API cuando usa un documento. La segunda validación se lleva a cabo en SSM Agent mediante el uso de la [Biblioteca regex](https://pkg.go.dev/regexp) antes de procesar el documento. 

------
#### [ YAML ]

  ```
  InstanceId:
    type: String
    description: "(Required) The instance ID to target."
    allowedPattern: "^i-(?:[a-f0-9]{8}|[a-f0-9]{17})$"
    default: ''
  ```

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

  ```
  "InstanceId": {
    "type": "String",
    "description": "(Required) The instance ID to target.",
    "allowedPattern": "^i-(?:[a-f0-9]{8}|[a-f0-9]{17})$",
    "default": ""
  }
  ```

------
+ `displayType`: (Opcional) Se utiliza para mostrar `textfield` o `textarea` en la Consola de administración de AWS. `textfield` es un cuadro de texto de línea única. `textarea` es un área de texto multilínea.
+ `minItems`: (Opcional) El número mínimo de elementos permitidos.
+ `maxItems`: (Opcional) El número máximo de elementos permitidos.
+ `minChars`: (Opcional) El número mínimo de caracteres del parámetro permitidos.
+ `maxChars`: (Opcional) El número máximo de caracteres del parámetro permitidos.
+ `interpolationType`: (Opcional) Define cómo se procesan los valores de los parámetros antes de ejecutar el comando. Cuando se establece en `ENV_VAR`, el valor del parámetro está disponible como una variable de entorno denominada `SSM_parameter-name`. Esta característica ayuda a evitar la inyección de comandos al tratar los valores de los parámetros como cadenas literales.

  Tipo: cadena

  Valores válidos: `ENV_VAR`
Obligatorio: no

**variables**  
(Solo en la versión 0.3 del esquema) Valores a los que puede hacer referencia o actualizar a lo largo de los pasos de un manual de procedimientos de automatización. Las variables son similares a los parámetros, pero difieren de forma muy importante. Los valores de los parámetros son estáticos en el contexto de un manual de procedimientos, pero los valores de las variables se pueden cambiar en el contexto del manual de procedimientos. Al actualizar el valor de una variable, el tipo de datos debe coincidir con el tipo de datos definido. Para obtener información sobre la actualización de los valores de las variables en una automatización, consulte [`aws:updateVariable` — Actualiza el valor de una variable del manual de procedimientos](automation-action-update-variable.md).  
Tipo: Boolean \$1 Integer \$1 MapList \$1 String \$1 StringList \$1 StringMap  
Obligatorio: no  

```
variables:
    payload:
        type: StringMap
        default: "{}"
```

```
{
    "variables": [
        "payload": {
            "type": "StringMap",
            "default": "{}"
        }
    ]
}
```

**runtimeConfig**  
(Versión de esquema 1.2 solamente) La configuración de la instancia aplicada por uno o varios complementos de Systems Manager. No se garantiza que los complementos se ejecuten en secuencia.   
Tipo: diccionario<cadena,PluginConfiguration>  
Obligatorio: no

**mainSteps**  
(Solo versiones de esquema 0.3, 2.0 y 2.2) Un objeto que puede incluir varios pasos (complementos). Los complementos se definen en pasos. Los pasos se ejecutan en orden secuencial según se indica en el documento.   
Tipo: diccionario<cadena,PluginConfiguration>  
Obligatorio: sí

**salidas**  
(Solo versión de esquema 0.3) Datos generados por la ejecución de este documento que puede utilizarse en otros procesos. Por ejemplo, si el documento crea una nueva AMI, puede especificar “CreateImage.ImageId” como valor de salida y, a continuación, utilizar este resultado para crear nuevas instancias en una ejecución de automatización posterior. Para obtener más información acerca de las salidas, consulte [Uso de salidas de acción como entradas](automation-action-outputs-inputs.md).  
Tipo: diccionario<cadena,OutputConfiguration>  
Obligatorio: no

**files**  
(Solo versión de esquema 0.3) Los archivos de script (y sus sumas de comprobación) están asociados al documento y se ejecutan durante una ejecución de automatización. Solo se aplica a los documentos que incluyen la acción `aws:executeScript` y para los que se han especificado datos adjuntos en uno o más pasos.   
Para obtener más información sobre los tiempos de ejecución compatibles con los manuales de procedimientos de Automatización, consulte [`aws:executeScript`: ejecutar un script](automation-action-executeScript.md). Para obtener más información acerca de la inclusión de secuencias de comandos en documentos de Automation, consulte [Uso de scripts en manuales de procedimientos](automation-document-script-considerations.md) y [Experiencia de diseño visual para manuales de procedimientos de automatización](automation-visual-designer.md).  
Cuando se crea un manual de procedimientos de automatización con datos adjuntos, también se deben especificar los archivos de los datos adjuntos mediante la opción `--attachments` (para AWS CLI) o `Attachments` (para API y SDK). Puede especificar la ubicación del archivo para los archivos y los documentos de SSM almacenados en buckets de Amazon Simple Storage Service (Amazon S3). Para obtener más información, consulte [Attachments](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_CreateDocument.html#systemsmanager-CreateDocument-request-Attachments) en la referencia de la API de AWS Systems Manager.  

```
---
files:
  launch.py:
    checksums:
      sha256: 18871b1311b295c43d0f...[truncated]...772da97b67e99d84d342ef4aEXAMPLE
```

```
"files": {
    "launch.py": {
        "checksums": {
            "sha256": "18871b1311b295c43d0f...[truncated]...772da97b67e99d84d342ef4aEXAMPLE"
        }
    }
}
```
Tipo: diccionario<cadena,FilesConfiguration>  
Obligatorio: no

## Ejemplos del parámetro `type` en documentos de SSM
<a name="top-level-properties-type"></a>

Los tipos de parámetros de los documentos de SSM son estáticos. Esto significa que el tipo de parámetro no se puede cambiar después de definirlo. Cuando se utilizan parámetros con complementos de documentos de SSM, el tipo de parámetro no se puede cambiar dinámicamente dentro de la entrada de un complemento. Por ejemplo, no se puede hacer referencia a un parámetro `Integer` dentro de la entrada `runCommand` del complemento `aws:runShellScript` porque esta entrada acepta una cadena o lista de cadenas. Para utilizar un parámetro para una entrada de un complemento, el tipo de parámetro debe coincidir con el tipo aceptado. Por ejemplo, debe especificar un parámetro de tipo `Boolean` para la entrada `allowDowngrade` del complemento `aws:updateSsmAgent`. Si el tipo de parámetro no coincide con el tipo de entrada de un complemento, el documento de SSM no se valida y el sistema no crea el documento. Esto también es cierto cuando se utilizan parámetros posteriores dentro de entradas para otros complementos o acciones de AWS Systems Manager automatización. Por ejemplo, no puede hacer referencia a un parámetro `StringList` dentro de la entrada `documentParameters` del complemento `aws:runDocument`. La entrada `documentParameters` acepta un mapa de cadenas incluso si el tipo de parámetro posterior de documento de SSM es un parámetro `StringList` y coincide con el parámetro al que está haciendo referencia.

Cuando se utilizan parámetros con acciones de Automation, los tipos de parámetros no se validan cuando se crea el documento de SSM en la mayoría de los casos. Solo cuando se utiliza la acción `aws:runCommand` se validan los tipos de parámetros cuando crea el documento de SSM. En todos los demás casos, la validación de parámetros se produce durante la ejecución de la automatización cuando se verifica la entrada de una acción antes de ejecutar la acción. Por ejemplo, si el parámetro de entrada es `String` y hace referencia a él como el valor de la entrada `MaxInstanceCount` de la acción `aws:runInstances`, se crea el documento de SSM. Sin embargo, al ejecutar el documento, la automatización produce un error al validar la acción `aws:runInstances` porque la entrada `MaxInstanceCount` requiere un valor `Integer`.

A continuación, se incluyen ejemplos de cada de parámetro `type`.

Cadena  
Una secuencia de cero o más caracteres Unicode escritos entre comillas. Por ejemplo, "i-1234567890abcdef0". Utilice barras diagonales invertidas para aplicar escape.  
Los parámetros de cadena pueden incluir un campo opcional `interpolationType` con el valor `ENV_VAR` para permitir la interpolación de variables de entorno y mejorar la seguridad.  

```
---
InstanceId:
  type: String
  description: "(Optional) The target EC2 instance ID."
  interpolationType: ENV_VAR
```

```
"InstanceId":{
  "type":"String",
  "description":"(Optional) The target EC2 instance ID.",
  "interpolationType": "ENV_VAR"
}
```

StringList  
Una lista de elementos de cadena separados por comas. Por ejemplo, ["cd \$1", "pwd"].  

```
---
commands:
  type: StringList
  description: "(Required) Specify a shell script or a command to run."
  default: ""
  minItems: 1
  displayType: textarea
```

```
"commands":{
  "type":"StringList",
  "description":"(Required) Specify a shell script or a command to run.",
  "minItems":1,
  "displayType":"textarea"
}
```

Booleano  
Admite solo `true` o `false`. No admite “true” o 0.  

```
---
canRun:
  type: Boolean
  description: ''
  default: true
```

```
"canRun": {
  "type": "Boolean",
  "description": "",
  "default": true
}
```

Entero  
Números enteros. No acepta números decimales, por ejemplo 3,14159 ni números escritos entre comillas, por ejemplo "3".  

```
---
timeout:
  type: Integer
  description: The type of action to perform.
  default: 100
```

```
"timeout": {
  "type": "Integer",
  "description": "The type of action to perform.",
  "default": 100    
}
```

StringMap  
Un mapeo de claves a valores. Las claves y los valores deben ser cadenas. Por ejemplo, \$1"Env": "Prod"\$1.  

```
---
notificationConfig:
  type: StringMap
  description: The configuration for events to be notified about
  default:
    NotificationType: 'Command'
    NotificationEvents:
    - 'Failed'
    NotificationArn: "$dependency.topicArn"
  maxChars: 150
```

```
"notificationConfig" : {
  "type" : "StringMap",
  "description" : "The configuration for events to be notified about",
  "default" : {
    "NotificationType" : "Command",
    "NotificationEvents" : ["Failed"],
    "NotificationArn" : "$dependency.topicArn"
  },
  "maxChars" : 150
}
```

MapList  
Una lista de objetos StringMap.  

```
blockDeviceMappings:
  type: MapList
  description: The mappings for the create image inputs
  default:
  - DeviceName: "/dev/sda1"
    Ebs:
      VolumeSize: "50"
  - DeviceName: "/dev/sdm"
    Ebs:
      VolumeSize: "100"
  maxItems: 2
```

```
"blockDeviceMappings":{
  "type":"MapList",
  "description":"The mappings for the create image inputs",
  "default":[
    {
      "DeviceName":"/dev/sda1",
      "Ebs":{
        "VolumeSize":"50"
      }
    },
    {
      "DeviceName":"/dev/sdm",
      "Ebs":{
        "VolumeSize":"100"
      }
    }
  ],
  "maxItems":2
}
```

## Visualización del contenido del documento de Command de SSM
<a name="viewing-ssm-document-content"></a>

Para tener una vista previa de los parámetros necesarios y opcionales para un documento de AWS Systems Manager (SSM) Command, además de las acciones que ejecuta, puede ver el contenido del documento en la consola de Systems Manager.

**Para ver el contenido del documento de SSM Command**

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 cuadro de búsqueda, seleccione **Tipo de documento** y, a continuación, seleccione **Comando**.

1. Elija el nombre de un documento y, a continuación, la pestaña **Contenido**. 

1. En el campo de contenido, revise los parámetros disponibles y los pasos de acción para el documento.

   Por ejemplo, en la siguiente imagen se muestra que (1) `version` y 2 `allowDowngrade` son parámetros opcionales para el documento `AWS-UpdateSSMAgent` y que la primera acción ejecutada por el documento es (3) `aws:updateSsmAgent`.  
![\[Ver el contenido del documento de SSM en la consola de Systems Manager\]](http://docs.aws.amazon.com/es_es/systems-manager/latest/userguide/images/view-document-content.png)

# Referencia de complementos del documento de comandos
<a name="documents-command-ssm-plugin-reference"></a>

Esta referencia describe los complementos que puede especificar en un documento de tipo de comandos de AWS Systems Manager (SSM). Estos complementos no se pueden utilizar en manuales de procedimientos de Automation, que utilizan acciones de automatización. Para obtener información acerca de las acciones de AWS Systems Manager Automation, consulte [Referencia de acciones de Automatización de Systems Manager](automation-actions.md).

Systems Manager determina las acciones que hay que realizar en una instancia administrada; para ello, lee el contenido de un documento de SSM. Cada documento incluye una sección de ejecución de código. En función de la versión de esquema de su documento, esta sección de ejecución de código puede incluir uno o más complementos o pasos. A efectos de este tema de ayuda, los complementos y los pasos se denominan *complementos*. En esta sección, se incluye información sobre cada uno de los complementos de Systems Manager. Para obtener más información sobre los documentos, incluida la información sobre la creación de documentos y las diferencias entre las versiones de esquema, consulte [Documentos de AWS Systems Manager](documents.md).

En el caso de los complementos que aceptan parámetros de cadena, como `aws:runShellScript` y `aws:runPowerShellScript`, el parámetro `interpolationType` se puede utilizar para mejorar la seguridad al tratar las entradas de los parámetros como cadenas literales en lugar de comandos potencialmente ejecutables. Por ejemplo:

```
{
    "schemaVersion": "2.2",
    "description": "runShellScript with command strings stored as Parameter Store parameter",
    "parameters": {
      "commands": {
        "type": "StringList",
        "description": "(Required) The commands to run on the instance.",
        "default": ["{{ ssm:myShellCommands }}"],
        "interpolationType" : "ENV_VAR"
      }
    },
    //truncated
 }
```

**nota**  
Algunos de los complementos descritos aquí se ejecutan solo en instancias de Windows Server o Linux. Se indican las dependencias de la plataforma para cada complemento.   
Los siguientes complementos de documentos se admiten en instancias Amazon Elastic Compute Cloud (Amazon EC2) para macOS:  
`aws:refreshAssociation`
`aws:runShellScript`
`aws:runPowerShellScript`
`aws:softwareInventory`
`aws:updateSsmAgent`

**Topics**
+ [Entradas compartidas](#shared-inputs)
+ [`aws:applications`](#aws-applications)
+ [`aws:cloudWatch`](#aws-cloudWatch)
+ [`aws:configureDocker`](#aws-configuredocker)
+ [`aws:configurePackage`](#aws-configurepackage)
+ [`aws:domainJoin`](#aws-domainJoin)
+ [`aws:downloadContent`](#aws-downloadContent)
+ [`aws:psModule`](#aws-psModule)
+ [`aws:refreshAssociation`](#aws-refreshassociation)
+ [`aws:runDockerAction`](#aws-rundockeraction)
+ [`aws:runDocument`](#aws-rundocument)
+ [`aws:runPowerShellScript`](#aws-runPowerShellScript)
+ [`aws:runShellScript`](#aws-runShellScript)
+ [`aws:softwareInventory`](#aws-softwareinventory)
+ [`aws:updateAgent`](#aws-updateagent)
+ [`aws:updateSsmAgent`](#aws-updatessmagent)

## Entradas compartidas
<a name="shared-inputs"></a>

Solo con la versión 3.0.502 y las versiones posteriores de SSM Agent, todos los complementos pueden utilizar las siguientes entradas:

**finallyStep**  
El último paso que desea que ejecute el documento. Si esta entrada se define para un paso, tendrá prioridad sobre un valor `exit` especificado en las entradas `onFailure` o `onSuccess`. Para que un paso con esta entrada se ejecute como se espera, el paso debe ser el último definido en los `mainSteps` del documento.  
Tipo: booleano  
Valores válidos: `true` \$1 `false`  
Obligatorio: no

**onFailure**  
Si especifica esta entrada para un complemento con el valor `exit` y el paso falla, el estado del paso refleja el error, y el documento no ejecuta los pasos restantes a menos que se haya definido un `finallyStep`. Si especifica esta entrada para un complemento con el valor `successAndExit` y el paso falla, el estado del paso aparece como realizado correctamente y el documento no ejecuta los pasos restantes a menos que se haya definido un `finallyStep`.  
Tipo: cadena  
Valores válidos: `exit` \$1 `successAndExit`  
Obligatorio: no

**onSuccess**  
Si especifica esta entrada para un complemento y el paso se ejecuta correctamente, el documento no ejecutará los pasos restantes a menos que se haya definido un `finallyStep`.  
Tipo: cadena  
Valores válidos: `exit`  
Obligatorio: no

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: Shared inputs example
parameters:
  customDocumentParameter:
    type: String
    description: Example parameter for a custom Command-type document.
mainSteps:
- action: aws:runDocument
  name: runCustomConfiguration
  inputs:
    documentType: SSMDocument
    documentPath: "yourCustomDocument"
    documentParameters: '"documentParameter":{{customDocumentParameter}}'
    onSuccess: exit
- action: aws:runDocument
  name: ifConfigurationFailure
  inputs:
    documentType: SSMDocument
    documentPath: "yourCustomRepairDocument"
    onFailure: exit
- action: aws:runDocument
  name: finalConfiguration
  inputs:
    documentType: SSMDocument
    documentPath: "yourCustomFinalDocument"
    finallyStep: true
```

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

```
{
   "schemaVersion": "2.2",
   "description": "Shared inputs example",
   "parameters": {
      "customDocumentParameter": {
         "type": "String",
         "description": "Example parameter for a custom Command-type document."
      }
   },
   "mainSteps":[
      {
         "action": "aws:runDocument",
         "name": "runCustomConfiguration",
         "inputs": {
            "documentType": "SSMDocument",
            "documentPath": "yourCustomDocument",
            "documentParameters": "\"documentParameter\":{{customDocumentParameter}}",
            "onSuccess": "exit"
         }
      },
      {
         "action": "aws:runDocument",
         "name": "ifConfigurationFailure",
         "inputs": {
            "documentType": "SSMDocument",
            "documentPath": "yourCustomRepairDocument",
            "onFailure": "exit"
         }
      },
      {
         "action": "aws:runDocument",
         "name":"finalConfiguration",
         "inputs": {
            "documentType": "SSMDocument",
            "documentPath": "yourCustomFinalDocument",
            "finallyStep": true
         }
      }
   ]
}
```

------

## `aws:applications`
<a name="aws-applications"></a>

Instalar, reparar o desinstalar aplicaciones en una instancia de EC2. Este complemento solo se ejecuta en los sistemas operativos Windows Server.

### Sintaxis
<a name="applications-syntax"></a>

#### Esquema 2.2
<a name="applications-syntax-2.2"></a>

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: aws:applications plugin
parameters:
  source:
    description: "(Required) Source of msi."
    type: String
mainSteps:
- action: aws:applications
  name: example
  inputs:
    action: Install
    source: "{{ source }}"
```

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

```
{
  "schemaVersion":"2.2",
  "description":"aws:applications",
  "parameters":{
    "source":{
    "description":"(Required) Source of msi.",
    "type":"String"
    }
  },
  "mainSteps":[
    {
      "action":"aws:applications",
      "name":"example",
      "inputs":{
        "action":"Install",
        "source":"{{ source }}"
      }
    }
  ]
}
```

------

#### Esquema 1.2
<a name="applications-syntax-1.2"></a>

------
#### [ YAML ]

```
---
runtimeConfig:
  aws:applications:
    properties:
    - id: 0.aws:applications
      action: "{{ action }}"
      parameters: "{{ parameters }}"
      source: "{{ source }}"
      sourceHash: "{{ sourceHash }}"
```

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

```
{
   "runtimeConfig":{
      "aws:applications":{
         "properties":[
            {
               "id":"0.aws:applications",
               "action":"{{ action }}",
               "parameters":"{{ parameters }}",
               "source":"{{ source }}",
               "sourceHash":"{{ sourceHash }}"
            }
         ]
      }
   }
}
```

------

### Propiedades
<a name="applications-properties"></a>

**acción**  
La acción que hay que realizar.  
Tipo: enumeración  
Valores válidos: `Install` \$1 `Repair` \$1 `Uninstall`  
Obligatorio: sí

**parameters**  
Los parámetros para el instalador.  
Tipo: cadena  
Requerido: no

**origen**  
La URL del archivo `.msi` para la aplicación.  
Tipo: cadena  
Obligatorio: sí

**sourceHash**  
Hash SHA256 del archivo `.msi`.  
Tipo: cadena  
Requerido: no

## `aws:cloudWatch`
<a name="aws-cloudWatch"></a>

Exportar datos desde Windows Server a Amazon CloudWatch o los Registros de Amazon CloudWatch y monitorear los datos mediante las métricas de CloudWatch. Este complemento solo se ejecuta en los sistemas operativos Windows Server. Para obtener más información sobre cómo configurar la integración de CloudWatch con Amazon Elastic Compute Cloud (Amazon EC2), consulte [Recopilación de métricas, registros y seguimientos con el agente de CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Install-CloudWatch-Agent.html) en la *Guía del usuario de Amazon CloudWatch*.

**importante**  
El agente unificado de CloudWatch ha sustituido a SSM Agent como herramienta para enviar datos de registro a los Registros de Amazon CloudWatch. El complemento aws:cloudWatch del SSM Agent no es compatible. Recomendamos utilizar solo el agente de CloudWatch unificado para sus procesos de recopilación de registros. Para obtener más información, consulte los temas siguientes:  
[Envío de registros de nodos a los Registros de CloudWatch (agente de CloudWatch) unificado](monitoring-cloudwatch-agent.md)
[Migrar la recopilación de registros del nodo de Windows Server al agente de CloudWatch](monitoring-cloudwatch-agent.md#monitoring-cloudwatch-agent-migrate)
[Recopilación de métricas, registros y seguimientos con el agente de CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Install-CloudWatch-Agent.html) en la *Guía del usuario de Amazon CloudWatch*.

Puede exportar y monitorizar los siguientes tipos de datos:

**ApplicationEventLog**  
Envía datos de registro de eventos de aplicación a los Registros de CloudWatch.

**CustomLogs**  
Envía cualquier archivo de registro basado en texto a los Registros de Amazon CloudWatch. El complemento de CloudWatch crea una huella digital para archivos de registro. El sistema asocia, a continuación, un desplazamiento de datos con cada huella digital. El complemento carga archivos cuando hay cambios, registra el desplazamiento y asocia el desplazamiento con una huella digital. Este método se utiliza para evitar una situación en la que un usuario activa el complemento, asocia el servicio con un directorio que contiene un gran número de archivos y el sistema carga todos los archivos.  
Tenga en cuenta que si la aplicación trunca o intenta limpiar registros durante el sondeo, cualquier registro especificado para `LogDirectoryPath` pueden perder entradas. Si, por ejemplo, desea limitar el tamaño de los archivos de registro, cree un nuevo archivo de registro cuando se alcance el límite y, a continuación, continúe escribiendo datos en el nuevo archivo.

**ETW**  
Envía datos de Seguimiento de eventos para Windows (ETW) a los Registros de CloudWatch.

**IIS**  
Envía datos de registro de IIS a los Registros de CloudWatch.

**PerformanceCounter**  
Envía contadores de rendimiento de Windows a CloudWatch. Puede seleccionar diferentes categorías para cargar a CloudWatch como métricas. Para cada contador de rendimiento que desee cargar, cree una sección **PerformanceCounter** con un ID único (por ejemplo, "PerformanceCounter2", "PerformanceCounter3", etc.) y configure sus propiedades.  
Si se detiene el SSM Agent de AWS Systems Manager o el complemento de CloudWatch, los datos del contador de rendimiento no se registran en CloudWatch. Este comportamiento es distinto de los registros personalizados o de los registros de eventos de Windows. Estos registros mantienen los datos de contador de rendimiento y los cargan a CloudWatch después de que el SSM Agent o el complemento de CloudWatch estén disponibles.

**SecurityEventLog**  
Envía datos de registro de eventos de seguridad a los Registros de CloudWatch.

**SystemEventLog**  
Envía datos de registro de eventos de sistema a los Registros de CloudWatch.

Puede definir los siguientes destinos para los datos:

**CloudWatch**  
El destino al que se envían los datos de las métricas del contador de rendimiento. Puede añadir más secciones con ID únicos (por ejemplo, "CloudWatch2", "CloudWatch3", etc.) y especificar una región diferente para cada ID nuevo para enviar los mismos datos a diferentes ubicaciones.

**CloudWatchLogs**  
El destino al que se envían los datos de registro. Puede añadir más secciones con ID únicos (por ejemplo, "CloudWatchLogs2", "CloudWatchLogs3", etc.) y especificar una región diferente para cada ID nuevo para enviar los mismos datos a diferentes ubicaciones.

### Sintaxis
<a name="cloudWatch-syntax"></a>

```
"runtimeConfig":{
        "aws:cloudWatch":{
            "settings":{
                "startType":"{{ status }}"
            },
            "properties":"{{ properties }}"
        }
    }
```

### Configuración y propiedades
<a name="cloudWatch-properties"></a>

**AccessKey**  
ID de clave de acceso. Esta propiedad es necesaria a menos que lanzara su instancia utilizando un rol de IAM. Esta propiedad no se puede utilizar con SSM.  
Tipo: cadena  
Requerido: no

**CategoryName**  
La categoría de contador de rendimiento de Performance Monitor.  
Tipo: cadena  
Obligatorio: sí

**CounterName**  
El nombre del contador de rendimiento de Performance Monitor.  
Tipo: cadena  
Obligatorio: sí

**CultureName**  
La configuración regional en la que se registra la marca temporal. Si **CultureName** está en blanco, se usa de forma predeterminada la misma configuración regional que utiliza su instancia de Windows Server.  
Tipo: cadena  
Valores válidos: para obtener una lista de los valores admitidos, consulte el tema [National Language Support (NLS) API Reference [Referencia de la API de compatibilidad con el idioma nacional (NLS)]](https://msdn.microsoft.com/en-us/library/cc233982.aspx) en el sitio web de Microsoft. No se admiten los valores **div**, **div-MV**, **hu** ni **hu-HU**.  
Obligatorio: no

**DimensionName**  
Una dimensión para la métrica de Amazon CloudWatch. Si especifica `DimensionName`, también debe especificar `DimensionValue`. Estos parámetros ofrecen otra vista al enumerar las métricas. Puede utilizar la misma dimensión para varias métricas, lo que le permite ver todas las métricas que pertenezcan a una dimensión concreta.  
Tipo: cadena  
Requerido: no

**DimensionValue**  
Un valor de dimensión para la métrica de Amazon CloudWatch.  
Tipo: cadena  
Requerido: no

**Codificación**  
La codificación del archivo que se va a utilizar (por ejemplo, UTF-8). Utilice el nombre de codificación, no el nombre de visualización.  
Tipo: cadena  
Valores válidos: para obtener una lista de los valores admitidos, consulte [Clase Encoding](https://learn.microsoft.com/en-us/dotnet/api/system.text.encoding?view=net-7.0) en la biblioteca de Microsoft Learn.  
Obligatorio: sí

**Filtro**  
El prefijo de los nombres de registro. Deje en blanco este parámetro para monitorear todos los archivos.  
Tipo: cadena  
Valores válidos: para obtener una lista de los valores admitidos, consulte el tema [Propiedad FileSystemWatcherFilter](http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.filter.aspx) en la biblioteca de MSDN.  
Obligatorio: no

**Flujos**  
Cada tipo de datos que se va a cargar, junto con el destino de los datos (CloudWatch o Registros de CloudWatch). Por ejemplo, para enviar un contador de rendimiento definido bajo `"Id": "PerformanceCounter"` al destino de CloudWatch definido bajo `"Id": "CloudWatch"`, escriba **“PerformanceCounter,CloudWatch”**. Del mismo modo, para enviar el registro personalizado, el registro de ETW y el registro del sistema al destino de los Registros de CloudWatch definido bajo `"Id": "ETW"`, escriba **“(ETW),CloudWatchLogs”**. Además, puede enviar el mismo contador de rendimiento o archivo de registro a más de un destino. Por ejemplo, para enviar el registro de la aplicación a dos destinos diferentes definidos bajo `"Id": "CloudWatchLogs"` y `"Id": "CloudWatchLogs2"`, escriba **"ApplicationEventLog,(CloudWatchLogs, CloudWatchLogs2)"**.  
Tipo: cadena  
Valores válidos (origen): `ApplicationEventLog` \$1 `CustomLogs` \$1 `ETW` \$1 `PerformanceCounter` \$1 `SystemEventLog` \$1 `SecurityEventLog`   
Los valores válidos (destino): `CloudWatch` \$1 `CloudWatchLogs` \$1 `CloudWatch`*n* \$1 `CloudWatchLogs`*n*   
Obligatorio: sí

**FullName**  
El nombre completo del componente.  
Tipo: cadena  
Obligatorio: sí

**Id**  
Identifica el origen o el destino de los datos. Este identificador deberá ser único dentro del archivo de configuración.  
Tipo: cadena  
Obligatorio: sí

**InstanceName**  
El nombre de la instancia del contador de rendimiento. No utilice un asterisco (\$1) para indicar todas las instancias, porque cada componente de contador de rendimiento solo admite una métrica. Puede, sin embargo utilizar **\$1Total**.  
Tipo: cadena  
Obligatorio: sí

**Niveles**  
Tipos de mensajes para enviar a Amazon CloudWatch.  
Tipo: cadena  
Valores válidos:   
+ **1** - solo los mensajes de error cargados.
+ **2** - solo los mensajes de advertencia cargados.
+ **4** - solo los mensajes de información cargados.
Puede agregar valores juntos para incluir más de un tipo de mensaje. Por ejemplo, **3** significa que se incluyen mensajes de error (**1**) y mensajes de advertencia (**2**). El valor **7** significa que se incluyen mensajes de error (**1**), mensajes de advertencia (**2**) y mensajes informativos (**4**).  
Obligatorio: sí  
Los registros de seguridad de Windows deben establecer los niveles en 7.

**LineCount**  
El número de líneas del encabezado para identificar el archivo de registro. Por ejemplo, los archivos de registros de IIS tienen encabezados prácticamente idénticos. Puede especificar **3**, que leería las tres primeras líneas del encabezado del archivo de registro para identificarlo. En los archivos de registro de IIS, la tercera línea es la marca de fecha y hora, que es distinta entre los archivos de registro.  
Tipo: entero  
Obligatorio: no

**LogDirectoryPath**  
Para CustomLogs, escriba la ruta donde se almacenan registros en la instancia de EC2. Para los registros de IIS, la carpeta en la que se almacenan los registros de IIS para un sitio individual (por ejemplo, **C:\$1\$1inetpub\$1\$1logs\$1\$1LogFiles\$1\$1W3SVC*n***). Para los registros de IIS, solo se admite el formato de registro W3C. No se admiten los formatos IIS, NCSA y personalizados.   
Tipo: cadena  
Obligatorio: sí

**LogGroup**  
El nombre de su grupo de registro. Este nombre se muestra en la pantalla **Grupos de registros** en la consola de CloudWatch.  
Tipo: cadena  
Obligatorio: sí

**LogName**  
El nombre del archivo de registro.  

1. Para encontrar el nombre del registro, en Visor de eventos, en el panel de navegación, seleccione **Registros de aplicaciones y servicios**.

1. En la lista de registros, haga clic con el botón derecho en el registro que desea cargar (por ejemplo, `Microsoft` > `Windows` > `Backup` > `Operational`) y, a continuación, seleccione **Crear vista personalizada**.

1. En el cuadro de diálogo **Create Custom View**, seleccione la pestaña **XML**. **LogName** se encuentra en la etiqueta <Select Path=> (por ejemplo, `Microsoft-Windows-Backup`). Copie este texto en el parámetro **LogName**.
Tipo: cadena  
Valores válidos: `Application` \$1 `Security` \$1 `System` \$1 `Microsoft-Windows-WinINet/Analytic`  
Obligatorio: sí

**LogStream**  
El flujo de registros de destino. Si utiliza **\$1instance\$1id\$1**, se utiliza el ID de la instancia predeterminado de esta instancia como el nombre de registro de destino.  
Tipo: cadena  
Valores válidos: `{instance_id}` \$1 `{hostname}` \$1 `{ip_address}`*<log\$1stream\$1name>*  
Si ingresa un nombre de flujo de registro que no existe, los Registros de CloudWatch lo crea automáticamente. Puede utilizar una cadena literal o variables predefinidas (**\$1instance\$1id\$1**, **\$1hostname\$1**, **\$1ip\$1address\$1**), o una combinación de las tres para definir el nombre del flujo de registro.  
El nombre del flujo de registro especificado en este parámetro aparece en la pantalla **Log Groups > Streams for *<YourLogStream>*** en la consola de CloudWatch.  
Obligatorio: sí

**MetricName**  
La métrica de CloudWatch bajo la que desea que se incluyan los datos de rendimiento.  
No utilice caracteres especiales en el nombre. Si lo hace, es posible que la métrica y las alarmas asociadas no funcionen.
Tipo: cadena  
Obligatorio: sí

**NameSpace**  
El espacio de nombres de métrica en el que desea que se escriban los datos de contadores de rendimiento.  
Tipo: cadena  
Obligatorio: sí

**PollInterval**  
¿Cuántos segundos deben transcurrir antes de que se carguen nuevos datos de registro y de contador de rendimiento?  
Tipo: número entero  
Valores válidos: establecer este en 5 o más segundos. Se recomiendan quince segundos (00:00:15).  
Obligatorio: sí

**Región**  
La Región de AWS a la que desea enviar los datos de registro. Aunque puede enviar contadores de rendimiento a una región distinta de la que envía los datos de registro, le recomendamos que ajuste este parámetro a la misma región en la que se ejecuta la instancia.  
Tipo: cadena  
Valores válidos: ID de regiones de las Regiones de AWS compatibles con Systems Manager y los Registros de CloudWatch, como `us-east-2`, `eu-west-1`, y `ap-southeast-1`. Para las listas de Regiones de AWS compatibles con cada servicio, consulte [Puntos de conexión de Registros de Amazon CloudWatch](https://docs.aws.amazon.com/general/latest/gr/cwl_region.html#cwl_region) y [Puntos de conexión de servicio de Systems Manager](https://docs.aws.amazon.com/general/latest/gr/ssm.html#ssm_region) en la *Referencia general de Amazon Web Services*.   
Obligatorio: sí

**SecretKey**  
Clave de acceso secreta. Esta propiedad es necesaria a menos que lanzara su instancia utilizando un rol de IAM.  
Tipo: cadena  
Requerido: no

**startType**  
Active o desactive CloudWatch en la instancia.  
Tipo: cadena  
Valores válidos: `Enabled` \$1 `Disabled`  
Obligatorio: sí

**TimestampFormat**  
El formato de marca temporal que desea utilizar. Para obtener una lista de los valores admitidos, consulte el tema [Custom Date and Time Format Strings](http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx) en la biblioteca de MSDN.  
Tipo: cadena  
Obligatorio: sí

**TimeZoneKind**  
Proporciona información sobre la zona horaria cuando no se incluye ninguna información sobre la zona horaria en la marca temporal del registro. Si este parámetro se deja en blanco y su marca temporal no incluye información sobre la zona horaria, los Registros de CloudWatch utilizan de forma predeterminada la zona horaria local. Se hace caso omiso a este parámetro si la marca temporal ya contiene información sobre la zona horaria.  
Tipo: cadena  
Valores válidos: `Local` \$1 `UTC`  
Obligatorio: no

**Unidad**  
La unidad de medida adecuada para la métrica.  
Tipo: cadena  
Valores válidos: segundos \$1 microsegundos \$1 milisegundos \$1 bytes \$1 kilobytes \$1 megabytes \$1 gigabytes \$1 terabytes \$1 bits \$1 kilobits \$1 megabits \$1 gigabits \$1 terabits \$1 porcentaje \$1 recuento \$1 bytes/segundo \$1 kilobytes/segundo \$1 megabytes/segundo \$1 gigabytes/segundo \$1 terabytes/segundo \$1 bits/segundo \$1 kilobits/segundo \$1 megabits/segundo \$1 gigabits/segundo \$1 terabits/segundo \$1 recuento/segundo o ninguno  
Obligatorio: sí

## `aws:configureDocker`
<a name="aws-configuredocker"></a>

(Versión de esquema 2.0 o posterior) Configure una instancia para trabajar con contenedores y Docker. Este complemento es compatible con la mayoría de las variantes y los sistemas operativos Linux y Windows Server.

### Sintaxis
<a name="configuredocker-syntax"></a>

#### Esquema 2.2
<a name="configuredocker-syntax-2.2"></a>

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: aws:configureDocker
parameters:
  action:
    description: "(Required) The type of action to perform."
    type: String
    default: Install
    allowedValues:
    - Install
    - Uninstall
mainSteps:
- action: aws:configureDocker
  name: configureDocker
  inputs:
    action: "{{ action }}"
```

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

```
{
  "schemaVersion": "2.2",
  "description": "aws:configureDocker plugin",
  "parameters": {
    "action": {
      "description": "(Required) The type of action to perform.",
      "type": "String",
      "default": "Install",
      "allowedValues": [
        "Install",
        "Uninstall"
      ]
    }
  },
  "mainSteps": [
    {
      "action": "aws:configureDocker",
      "name": "configureDocker",
      "inputs": {
        "action": "{{ action }}"
      }
    }
  ]
}
```

------

### Entradas
<a name="configuredocker-properties"></a>

**acción**  
El tipo de acción que se va a realizar.  
Tipo: enumeración  
Valores válidos: `Install` \$1 `Uninstall`  
Obligatorio: sí

## `aws:configurePackage`
<a name="aws-configurepackage"></a>

(Versión de esquema 2.0 o posterior) Instale o desinstale un paquete Distributor de AWS Systems Manager. Puede instalar la versión más reciente, la versión predeterminada o una versión del paquete que especifique. Los paquetes proporcionados por AWS también son compatibles. Este complemento se ejecuta en los sistemas operativos Windows Server y Linux, pero no todos los paquetes disponibles se admiten en sistemas operativos Linux.

Los paquetes de AWS disponibles para Windows Server, incluyen lo siguiente: `AWSPVDriver`, `AWSNVMe`, `AwsEnaNetworkDriver`, `AwsVssComponents`, `AmazonCloudWatchAgent`, `CodeDeployAgent`, y `AWSSupport-EC2Rescue.`

Los paquetes AWS disponibles para los sistemas operativos Linux incluyen los siguientes: `AmazonCloudWatchAgent`, `CodeDeployAgent`, y `AWSSupport-EC2Rescue`.

### Sintaxis
<a name="configurepackage-syntax"></a>

#### Esquema 2.2
<a name="configurepackage-syntax-2.2"></a>

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: aws:configurePackage
parameters:
  name:
    description: "(Required) The name of the AWS package to install or uninstall."
    type: String
  action:
    description: "(Required) The type of action to perform."
    type: String
    default: Install
    allowedValues:
    - Install
    - Uninstall
  ssmParameter:
    description: "(Required) Argument stored in Parameter Store."
    type: String
    default: "{{ ssm:parameter_store_arg }}"
mainSteps:
- action: aws:configurePackage
  name: configurePackage
  inputs:
    name: "{{ name }}"
    action: "{{ action }}"
    additionalArguments: 
      "{\"SSM_parameter_store_arg\": \"{{ ssmParameter }}\", \"SSM_custom_arg\": \"myValue\"}"
```

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

```
{
   "schemaVersion": "2.2",
   "description": "aws:configurePackage",
   "parameters": {
      "name": {
         "description": "(Required) The name of the AWS package to install or uninstall.",
         "type": "String"
      },
      "action": {
         "description": "(Required) The type of action to perform.",
         "type": "String",
         "default": "Install",
         "allowedValues": [
            "Install",
            "Uninstall"
         ]
      },
      "ssmParameter": {
         "description": "(Required) Argument stored in Parameter Store.",
         "type": "String",
         "default": "{{ ssm:parameter_store_arg }}"
      }
   },
   "mainSteps": [
      {
         "action": "aws:configurePackage",
         "name": "configurePackage",
         "inputs": {
            "name": "{{ name }}",
            "action": "{{ action }}",
            "additionalArguments": "{\"SSM_parameter_store_arg\": \"{{ ssmParameter }}\", \"SSM_custom_arg\": \"myValue\"}"
         }
      }
   ]
}
```

------

### Entradas
<a name="configurepackage-properties"></a>

**name**  
El nombre del paquete de AWS que se va a instalar o desinstalar. Los paquetes disponible incluyen lo siguiente: `AWSPVDriver`, `AwsEnaNetworkDriver`, `AwsVssComponents`, y `AmazonCloudWatchAgent`.  
Tipo: cadena  
Obligatorio: sí

**acción**  
Instalar o desinstalar un paquete.  
Tipo: enumeración  
Valores válidos: `Install` \$1 `Uninstall`  
Obligatorio: sí

**installationType**  
El tipo de instalación que se va a realizar. Si especifica `Uninstall and reinstall`, el paquete se desinstala por completo y, a continuación, se vuelve a instalar. La aplicación no estará disponible hasta que se complete la reinstalación. Si especifica `In-place update`, solo se agregan archivos nuevos o modificados a la instalación existente según las instrucciones que proporcione en un script de actualización. La aplicación permanece disponible durante todo el proceso de actualización. La opción `In-place update` no es compatible con paquetes publicados de AWS. `Uninstall and reinstall` es el valor predeterminado.  
Tipo: enumeración  
Valores válidos: `Uninstall and reinstall` \$1 `In-place update`  
Obligatorio: no

**additionalArguments**  
Una cadena JSON con los parámetros adicionales que se deben proporcionar a los scripts de instalación, desinstalación o actualización. Cada parámetro debe tener el prefijo `SSM_`. Puede hacer referencia a un parámetro Parameter Store en sus argumentos adicionales mediante el uso de la convención `{{ssm:parameter-name}}`. Para utilizar el parámetro adicional en el script de instalación, desinstalación o actualización, debe hacer referencia al parámetro como una variable de entorno utilizando la sintaxis adecuada para el sistema operativo. Por ejemplo, en PowerShell, se hace referencia al argumento `SSM_arg` como `$Env:SSM_arg`. No hay límite en el número de argumentos que define, pero la entrada de argumento adicional tiene un límite de 4096 caracteres. Este límite incluye todas las claves y los valores que defina.  
Tipo: StringMap  
Obligatorio: no

**versión**  
Una versión específica del paquete que se va a instalar o desinstalar. Si se va a instalar, el sistema instala la versión más reciente publicada, de forma predeterminada. Si se va a desinstalar, el sistema desinstala la versión instalada, de forma predeterminada. Si no se encuentra ninguna versión instalada, se descarga la versión más reciente publicada y se ejecuta la acción de desintalación.  
Tipo: cadena  
Requerido: no

## `aws:domainJoin`
<a name="aws-domainJoin"></a>

Unir una instancia de EC2 a un dominio. Este complemento se ejecuta en los sistemas operativos Linux y Windows Server. Este complemento cambia el nombre de host de las instancias de Linux al formato EC2AMAZ-*XXXXXXX*. Para obtener más información acerca de cómo unir instancias de EC2, consulte [Cómo unir una instancia de EC2 al Directorio de Microsoft AD administrado de AWS](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_join_instance.html) en la *Guía de administración de AWS Directory Service*.

### Sintaxis
<a name="domainJoin-syntax"></a>

#### Esquema 2.2
<a name="domainJoin-syntax-2.2"></a>

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: aws:domainJoin
parameters:
  directoryId:
    description: "(Required) The ID of the directory."
    type: String
  directoryName:
    description: "(Required) The name of the domain."
    type: String
  directoryOU:
    description: "(Optional) The organizational unit to assign the computer object to."
    type: String
  dnsIpAddresses:
    description: "(Required) The IP addresses of the DNS servers for your directory."
    type: StringList
  hostname:
    description: "(Optional) The hostname you want to assign to the node."
    type: String
mainSteps:
- action: aws:domainJoin
  name: domainJoin
  inputs:
    directoryId: "{{ directoryId }}"
    directoryName: "{{ directoryName }}"
    directoryOU: "{{ directoryOU }}"
    dnsIpAddresses: "{{ dnsIpAddresses }}"
    hostname: "{{ hostname }}"
```

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

```
{
  "schemaVersion": "2.2",
  "description": "aws:domainJoin",
  "parameters": {
    "directoryId": {
      "description": "(Required) The ID of the directory.",
      "type": "String"
    },
    "directoryName": {
      "description": "(Required) The name of the domain.",
      "type": "String"
    },
    "directoryOU": {
        "description": "(Optional) The organizational unit to assign the computer object to.",
        "type": "String"
      },
    "dnsIpAddresses": {
      "description": "(Required) The IP addresses of the DNS servers for your directory.",
      "type": "StringList"
    },
    "hostname": {
        "description": "(Optional) The hostname you want to assign to the node.",
        "type": "String"
      }
  },
  "mainSteps": [
    {
      "action": "aws:domainJoin",
      "name": "domainJoin",
      "inputs": {
        "directoryId": "{{ directoryId }}",
        "directoryName": "{{ directoryName }}",
        "directoryOU":"{{ directoryOU }}",
        "dnsIpAddresses":"{{ dnsIpAddresses }}",
        "hostname":"{{ hostname }}"
      }
    }
  ]
}
```

------

#### Esquema 1.2
<a name="domainJoin-syntax-1.2"></a>

------
#### [ YAML ]

```
---
runtimeConfig:
  aws:domainJoin:
    properties:
      directoryId: "{{ directoryId }}"
      directoryName: "{{ directoryName }}"
      directoryOU: "{{ directoryOU }}"
      dnsIpAddresses: "{{ dnsIpAddresses }}"
```

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

```
{
   "runtimeConfig":{
      "aws:domainJoin":{
         "properties":{
            "directoryId":"{{ directoryId }}",
            "directoryName":"{{ directoryName }}",
            "directoryOU":"{{ directoryOU }}",
            "dnsIpAddresses":"{{ dnsIpAddresses }}"
         }
      }
   }
}
```

------

### Propiedades
<a name="domainJoin-properties"></a>

**directoryId**  
El ID del directorio.  
Tipo: cadena  
Obligatorio: sí  
Ejemplo: "directoryId": "d-1234567890"

**directoryName**  
El nombre del dominio.  
Tipo: cadena  
Obligatorio: sí  
Ejemplo: "directoryName": "example.com"

**directoryOU**  
La unidad organizativa.  
Tipo: cadena  
Requerido: no  
Ejemplo: "directoryOU": "OU=test,DC=example,DC=com"

**dnsIpAddresses**  
Las direcciones IP de los servidores DNS.  
Tipo: StringList  
Obligatorio: sí  
Ejemplo: "dnsIpAddresses": ["198.51.100.1"," 198.51.100.2"]

**hostname**  
El nombre de host que desea asignar al nodo. Si no se proporciona, no se cambiará el nombre de las instancias de Windows Server, mientras que las instancias de Linux utilizarán el patrón de nomenclatura predeterminado. Si se proporciona, las instancias de Windows Server usarán el valor exacto proporcionado, mientras que, para las instancias de Linux, este servirá como prefijo (a menos que `keepHostName` se establezca como “true”).  
Tipo: cadena  
Requerido: no

**keepHostName**  
Determina si se cambia el nombre de host de las instancias de Linux cuando se unen al dominio. Este es un parámetro exclusivo de Linux. Los nombres de los hosts de Linux se cambiarán de forma predeterminada (sin entradas para `hostname`, `hostnameNumAppendDigits` y con `keepHostName` como “false”) siguiendo el patrón EC2AMAZ-XXXXXX. Cuando se establece como “true”, mantiene el nombre de host original e ignora las entradas para `hostname` y `hostnameNumAppendDigits`.  
Tipo: Booleano  
Obligatorio: no

**hostnameNumAppendDigits**  
Define el número de dígitos numéricos aleatorios que se añadirán después del valor del nombre de host. Este es un parámetro exclusivo de Linux y se utiliza junto con el parámetro `hostname`. Se ignora si no se proporciona el `hostname`.  
Tipo: cadena  
Valores permitidos: de 1 a 5  
Obligatorio: no

### Ejemplos
<a name="domainJoin-examples"></a>

Para ver ejemplos, consulte [Join an Amazon EC2 Instance to your AWS Managed Microsoft AD](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ec2-join-aws-domain.html) en la *Guía de administración de AWS Directory Service*.

## `aws:downloadContent`
<a name="aws-downloadContent"></a>

(Versión de esquema 2.0 o posterior) Descargue documentos y scripts de SSM de ubicaciones remotas. Los repositorios GitHub Enterprise no son compatibles. Este complemento es compatible con los sistemas operativos Linux y Microsoft Windows Server.

### Sintaxis
<a name="downloadContent-syntax"></a>

#### Esquema 2.2
<a name="downloadContent-syntax-2.2"></a>

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: aws:downloadContent
parameters:
  sourceType:
    description: "(Required) The download source."
    type: String
  sourceInfo:
    description: "(Required) The information required to retrieve the content from
      the required source."
    type: StringMap
mainSteps:
- action: aws:downloadContent
  name: downloadContent
  inputs:
    sourceType: "{{ sourceType }}"
    sourceInfo: "{{ sourceInfo }}"
```

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

```
{
  "schemaVersion": "2.2",
  "description": "aws:downloadContent",
  "parameters": {
    "sourceType": {
    "description": "(Required) The download source.",
    "type": "String"
  },
  "sourceInfo": {
    "description": "(Required) The information required to retrieve the content from the required source.",
    "type": "StringMap"
    }
  },
  "mainSteps": [
    {
      "action": "aws:downloadContent",
      "name": "downloadContent",
      "inputs": {
        "sourceType":"{{ sourceType }}",
        "sourceInfo":"{{ sourceInfo }}"
      }
    }
  ]
}
```

------

### Entradas
<a name="downloadContent-inputs"></a>

**sourceType**  
La fuente de descarga. Systems Manager admite los siguientes tipos de fuente para la descarga de scripts y documentos de SSM: `GitHub`, `Git`, `HTTP`, `S3`, y `SSMDocument`.  
Tipo: cadena  
Obligatorio: sí

**sourceInfo**  
La información necesaria para recuperar el contenido del origen necesario.  
Tipo: StringMap  
Obligatorio: sí  
 **Para sourceType `GitHub,`, especifique lo siguiente:**   
+ propietario: el propietario del repositorio.
+ repositorio: el nombre del repositorio.
+ ruta: la ruta del archivo o directorio que desea descargar.
+ getOptions: opciones adicionales para recuperar contenido de una rama que no sea maestra o de una confirmación específica en el repositorio. getOptions se pueden omitir si está utilizando la última confirmación en la rama maestra. Si su repositorio se creó después del 1 de octubre de 2020, la rama predeterminada podría llamarse principal en lugar de maestra. En este caso, deberá especificar valores para el parámetro getOptions.

  Este parámetro utiliza el siguiente formato:
  + branch:refs/heads/*branch\$1name*

    El valor predeterminado es `master`.

    Para especificar una ramificación no predeterminada, utilice el siguiente formato:

    branch:refs/heads/*branch\$1name*
  + commitID:*commitID*

    El valor predeterminado es `head`.

    Para utilizar la versión del documento SSM en una confirmación que no sea la última, especifique el ID de confirmación completo. Por ejemplo:

    ```
    "getOptions": "commitID:bbc1ddb94...b76d3bEXAMPLE",
    ```
+ tokenInfo: el parámetro de Systems Manager (un parámetro SecureString) donde almacena su información del token de acceso GitHub, en el formato `{{ssm-secure:secure-string-token-name}}`.
**nota**  
Este campo `tokenInfo` es el único campo del complemento de documentos de SSM que admite un parámetro SecureString. Los parámetros SecureString no se admiten para ningún otro campo ni para ningún otro complemento de documentos de SSM.

```
{
    "owner":"TestUser",
    "repository":"GitHubTest",
    "path":"scripts/python/test-script",
    "getOptions":"branch:master",
    "tokenInfo":"{{ssm-secure:secure-string-token}}"
}
```
 **Para sourceType `Git`, debe especificar lo siguiente:**   
+ repositorio

  La URL del repositorio de Git al archivo o directorio que desea descargar.

  Tipo: cadena
Además, puede especificar los siguientes parámetros opcionales:  
+ getOptions

  Opciones adicionales para recuperar contenido de una rama que no sea maestra o de una confirmación específica en el repositorio. getOptions se pueden omitir si está utilizando la última confirmación en la rama maestra.

  Tipo: cadena

  Este parámetro utiliza el siguiente formato:
  + branch:refs/heads/*branch\$1name*

    El valor predeterminado es `master`.

    `"branch"` Solo se requiere si el documento SSM se almacena en una sucursal que no sea `master`. Por ejemplo:

    ```
    "getOptions": "branch:refs/heads/main"
    ```
  + commitID:*commitID*

    El valor predeterminado es `head`.

    Para utilizar la versión del documento SSM en una confirmación que no sea la última, especifique el ID de confirmación completo. Por ejemplo:

    ```
    "getOptions": "commitID:bbc1ddb94...b76d3bEXAMPLE",
    ```
+ privateSSHKey

  La clave SSH que se utilizará cuando se conecte al `repository` que especifique. Puede utilizar el siguiente formato para hacer referencia a un parámetro `SecureString` para el valor de su clave SSH: `{{ssm-secure:your-secure-string-parameter}}`.

  Tipo: cadena
+ skipHostKeyChecking

  Determina el valor de la opción StrictHostKeyChecking cuando se conecta al `repository` que especifique. El valor predeterminado es `false`.

  Tipo: booleano
+ nombre de usuario

  El nombre de usuario que se utilizará cuando se conecte al `repository` que especifique mediante HTTP. Puede utilizar el siguiente formato para hacer referencia a un parámetro `SecureString` para el valor de su nombre de usuario: `{{ssm-secure:your-secure-string-parameter}}`.

  Tipo: cadena
+ contraseña

  La contraseña que se utilizará cuando se conecte al `repository` que especifique mediante HTTP. Puede utilizar el siguiente formato para hacer referencia a un parámetro `SecureString` para el valor de su contraseña: `{{ssm-secure:your-secure-string-parameter}}`.

  Tipo: cadena
 **Para sourceType `HTTP`, debe especificar lo siguiente:**   
+ url

  La URL al archivo o directorio que desea descargar.

  Tipo: cadena
Además, puede especificar los siguientes parámetros opcionales:  
+ allowInsecureDownload

  Determina si una descarga se puede realizar a través de una conexión que no está cifrada con Capa de conexión segura (SSL) o Transport Layer Security (TLS). El valor predeterminado es `false`. No le recomendamos realizar descargas sin cifrado. Si decide hacerlo, deberá asumir todos los riesgos asociados. La seguridad es una responsabilidad compartida entre AWS y usted. Se describe como el modelo de responsabilidad compartida. Para obtener más información, consulte el [Modelo de responsabilidad compartida](https://aws.amazon.com/compliance/shared-responsibility-model/).

  Tipo: booleano
+ authMethod

  Determina si un nombre de usuario y una contraseña se utilizan para la autenticación cuando se conecta a la `url` que especifique. Si especifica `Basic` o `Digest`, debe proporcionar valores para los parámetros `username` y `password`. Para utilizar el método `Digest`, el SSM Agent versión 3.0.1181.0 o posterior debe estar instalada en la instancia. El método `Digest` admite el cifrado MD5 y SHA256.

  Tipo: cadena

  Valores válidos: `None` \$1 `Basic` \$1 `Digest`
+ nombre de usuario

  El nombre de usuario que se utilizará cuando se conecte al `url` que especifique mediante autenticación `Basic`. Puede utilizar el siguiente formato para hacer referencia a un parámetro `SecureString` para el valor de su nombre de usuario: `{{ssm-secure:your-secure-string-parameter}}`.

  Tipo: cadena
+ contraseña

  La contraseña que se utilizará cuando se conecte al `url` que especifique mediante autenticación `Basic`. Puede utilizar el siguiente formato para hacer referencia a un parámetro `SecureString` para el valor de su contraseña: `{{ssm-secure:your-secure-string-parameter}}`.

  Tipo: cadena
 **Para sourceType `S3`, especifique lo siguiente:**   
+ path: la URL al archivo o directorio que desea descargar de Amazon S3.
Cuando se descarga un archivo de un bucket de S3, se generan los archivos .etag en el directorio de descargas.

```
{
    "path": "https://s3.amazonaws.com/amzn-s3-demo-bucket/powershell/helloPowershell.ps1" 
}
```
 **Para sourceType `SSMDocument`, especifique *uno* de los siguientes:**   
+ nombre: el nombre y la versión del documento en el siguiente formato: `name:version`. La versión es opcional. 

  ```
  {
      "name": "Example-RunPowerShellScript:3" 
  }
  ```
+ name: el ARN del documento en el siguiente formato: `arn:aws:ssm:region:account_id:document/document_name`

  ```
  {
     "name":"arn:aws:ssm:us-east-2:3344556677:document/MySharedDoc"
  }
  ```

**destinationPath**  
Una ruta local opcional en la instancia en la que se desea descargar el archivo. Si no se especifica una ruta, el contenido se descarga en una ruta relativa al ID de comando.  
Tipo: cadena  
Requerido: no

## `aws:psModule`
<a name="aws-psModule"></a>

Instalar módulos de PowerShell en una instancia Amazon EC2. Este complemento solo se ejecuta en los sistemas operativos Windows Server.

### Sintaxis
<a name="psModule-syntax"></a>

#### Esquema 2.2
<a name="psModule-syntax-2.2"></a>

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: aws:psModule
parameters:
  source:
    description: "(Required) The URL or local path on the instance to the application
      .zip file."
    type: String
mainSteps:
- action: aws:psModule
  name: psModule
  inputs:
    source: "{{ source }}"
```

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

```
{
  "schemaVersion": "2.2",
  "description": "aws:psModule",
  "parameters": {
    "source": {
      "description": "(Required) The URL or local path on the instance to the application .zip file.",
      "type": "String"
    }
  },
  "mainSteps": [
    {
      "action": "aws:psModule",
      "name": "psModule",
      "inputs": {
        "source": "{{ source }}"
      }
    }
  ]
}
```

------

#### Esquema 1.2
<a name="domainJoin-syntax-1.2"></a>

------
#### [ YAML ]

```
---
runtimeConfig:
  aws:psModule:
    properties:
    - runCommand: "{{ commands }}"
      source: "{{ source }}"
      sourceHash: "{{ sourceHash }}"
      workingDirectory: "{{ workingDirectory }}"
      timeoutSeconds: "{{ executionTimeout }}"
```

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

```
{
   "runtimeConfig":{
      "aws:psModule":{
         "properties":[
            {
               "runCommand":"{{ commands }}",
               "source":"{{ source }}",
               "sourceHash":"{{ sourceHash }}",
               "workingDirectory":"{{ workingDirectory }}",
               "timeoutSeconds":"{{ executionTimeout }}"
            }
         ]
      }
   }
}
```

------

### Propiedades
<a name="psModule-properties"></a>

**runCommand**  
El comando de PowerShell que se va a ejecutar tras la instalación del módulo.  
Tipo: StringList  
Obligatorio: no

**origen**  
La dirección URL o ruta local en la instancia al archivo `.zip` de la aplicación.  
Tipo: cadena  
Obligatorio: sí

**sourceHash**  
Hash SHA256 del archivo `.zip`.  
Tipo: cadena  
Requerido: no

**timeoutSeconds**  
El tiempo en segundos para que un comando se complete antes de considerar que se ha producido un error.  
Tipo: cadena  
Requerido: no

**workingDirectory**  
La ruta al directorio de trabajo en la instancia.  
Tipo: cadena  
Requerido: no

## `aws:refreshAssociation`
<a name="aws-refreshassociation"></a>

(Versión de esquema 2.0 o posterior) Actualice (fuerce aplicación) una asociación bajo demanda. Esta acción cambiará el estado del sistema en función de lo que se define en la asociación seleccionada o todas las asociaciones vinculadas a los destinos. Este complemento se ejecuta en los sistemas operativos Linux y Microsoft Windows Server.

### Sintaxis
<a name="refreshassociation-syntax"></a>

#### Esquema 2.2
<a name="refreshassociation-syntax-2.2"></a>

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: aws:refreshAssociation
parameters:
  associationIds:
    description: "(Optional) List of association IDs. If empty, all associations bound
      to the specified target are applied."
    type: StringList
mainSteps:
- action: aws:refreshAssociation
  name: refreshAssociation
  inputs:
    associationIds:
    - "{{ associationIds }}"
```

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

```
{
  "schemaVersion": "2.2",
  "description": "aws:refreshAssociation",
  "parameters": {
    "associationIds": {
      "description": "(Optional) List of association IDs. If empty, all associations bound to the specified target are applied.",
      "type": "StringList"
    }
  },
  "mainSteps": [
    {
      "action": "aws:refreshAssociation",
      "name": "refreshAssociation",
      "inputs": {
        "associationIds": [
          "{{ associationIds }}"
        ]
      }
    }
  ]
}
```

------

### Entradas
<a name="refreshassociation-properties"></a>

**associationIds**  
Lista de ID de asociación. Si está vacía, se aplican todas las asociaciones vinculadas al destino especificado.  
Tipo: StringList  
Obligatorio: no

## `aws:runDockerAction`
<a name="aws-rundockeraction"></a>

(Versión de esquema 2.0 o posterior) Ejecute acciones de Docker en contenedores. Este complemento se ejecuta en los sistemas operativos Linux y Microsoft Windows Server.

### Sintaxis
<a name="rundockeraction-syntax"></a>

#### Esquema 2.2
<a name="rundockeraction-syntax-2.2"></a>

------
#### [ YAML ]

```
---
mainSteps:
- action: aws:runDockerAction
  name: RunDockerAction
  inputs:
    action: "{{ action }}"
    container: "{{ container }}"
    image: "{{ image }}"
    memory: "{{ memory }}"
    cpuShares: "{{ cpuShares }}"
    volume: "{{ volume }}"
    cmd: "{{ cmd }}"
    env: "{{ env }}"
    user: "{{ user }}"
    publish: "{{ publish }}"
    workingDirectory: "{{ workingDirectory }}"
    timeoutSeconds: "{{ timeoutSeconds }}"
```

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

```
{
   "mainSteps":[
      {
         "action":"aws:runDockerAction",
         "name":"RunDockerAction",
         "inputs":{
            "action":"{{ action }}",
            "container":"{{ container }}",
            "image":"{{ image }}",
            "memory":"{{ memory }}",
            "cpuShares":"{{ cpuShares }}",
            "volume":"{{ volume }}",
            "cmd":"{{ cmd }}",
            "env":"{{ env }}",
            "user":"{{ user }}",
            "publish":"{{ publish }}",
            "workingDirectory": "{{ workingDirectory }}",
            "timeoutSeconds": "{{ timeoutSeconds }}"
         }
      }
   ]
}
```

------

### Entradas
<a name="rundockeraction-properties"></a>

**acción**  
El tipo de acción que se va a realizar.  
Tipo: cadena  
Obligatorio: sí

**contenedor**  
El ID del contenedor de Docker.  
Tipo: cadena  
Requerido: no

**imagen**  
El nombre de la imagen de Docker.  
Tipo: cadena  
Requerido: no

**cmd**  
El comando del contenedor.  
Tipo: cadena  
Requerido: no

**memoria**  
El límite de memoria del contenedor.  
Tipo: cadena  
Requerido: no

**cpuShares**  
El contenedor que comparte la CPU (peso relativo).  
Tipo: cadena  
Requerido: no

**volume**  
El volumen que el contenedor monta.  
Tipo: StringList  
Obligatorio: no

**env**  
Las variables del entorno del contenedor.  
Tipo: cadena  
Requerido: no

**usuario**  
El nombre de usuario de un contenedor.  
Tipo: cadena  
Requerido: no

**publish**  
Los puertos publicados del contenedor.  
Tipo: cadena  
Requerido: no

**workingDirectory**  
La ruta al directorio de trabajo en el nodo administrado.  
Tipo: cadena  
Requerido: no

**timeoutSeconds**  
El tiempo en segundos para que un comando se complete antes de considerar que se ha producido un error.  
Tipo: cadena  
Requerido: no

## `aws:runDocument`
<a name="aws-rundocument"></a>

(Versión de esquema 2.0 o posterior) Ejecuta documentos de SSM almacenados en Systems Manager o en un recurso compartido local. Puede utilizar este complemento con el complemento [`aws:downloadContent`](#aws-downloadContent) para descargar un documento de SSM a un recurso compartido local y, a continuación, ejecutarlo. Este complemento es compatible con los sistemas operativos Linux y Microsoft Windows Server. Este complemento no admite la ejecución del documento `AWS-UpdateSSMAgent` o cualquier documento que utilice el complemento `aws:updateSsmAgent`.

### Sintaxis
<a name="rundocument-syntax"></a>

#### Esquema 2.2
<a name="aws-rundocument-syntax-2.2"></a>

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: aws:runDocument
parameters:
  documentType:
    description: "(Required) The document type to run."
    type: String
    allowedValues:
    - LocalPath
    - SSMDocument
mainSteps:
- action: aws:runDocument
  name: runDocument
  inputs:
    documentType: "{{ documentType }}"
```

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

```
{
  "schemaVersion": "2.2",
  "description": "aws:runDocument",
  "parameters": {
    "documentType": {
      "description": "(Required) The document type to run.",
      "type": "String",
      "allowedValues": [
        "LocalPath",
        "SSMDocument"
      ]
    }
  },
  "mainSteps": [
    {
      "action": "aws:runDocument",
      "name": "runDocument",
      "inputs": {
        "documentType": "{{ documentType }}"
      }
    }
  ]
}
```

------

### Entradas
<a name="rundocument-properties"></a>

**documentType**  
El tipo de documento que se va a ejecutar. Puede ejecutar documentos locales (`LocalPath`) o documentos almacenados en Systems Manager (`SSMDocument`).  
Tipo: cadena  
Obligatorio: sí

**documentPath**  
La ruta al documento. Si `documentType` es `LocalPath`, entonces especifique la ruta al documento en el recurso compartido local. Si `documentType` es `SSMDocument`, entonces especifique el nombre del documento.  
Tipo: cadena  
Requerido: no

**documentParameters**  
Parámetros para el documento.  
Tipo: StringMap  
Obligatorio: no

## `aws:runPowerShellScript`
<a name="aws-runPowerShellScript"></a>

Ejecute scripts de PowerShell o especifique la ruta a un script para su ejecución. Este complemento se ejecuta en los sistemas operativos Microsoft Windows Server y Linux.

### Sintaxis
<a name="runPowerShellScript-syntax"></a>

#### Esquema 2.2
<a name="runPowerShellScript-syntax-2.2"></a>

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: aws:runPowerShellScript
parameters:
  commands:
    type: String
    description: "(Required) The commands to run or the path to an existing script
      on the instance."
    default: Write-Host "Hello World"
mainSteps:
- action: aws:runPowerShellScript
  name: runPowerShellScript
  inputs:
    timeoutSeconds: '60'
    runCommand:
    - "{{ commands }}"
```

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

```
{
  "schemaVersion": "2.2",
  "description": "aws:runPowerShellScript",
  "parameters": {
    "commands": {
      "type": "String",
      "description": "(Required) The commands to run or the path to an existing script on the instance.",
      "default": "Write-Host \"Hello World\""
    }
  },
  "mainSteps": [
    {
      "action": "aws:runPowerShellScript",
      "name": "runPowerShellScript",
      "inputs": {
        "timeoutSeconds": "60",
        "runCommand": [
          "{{ commands }}"
        ]
      }
    }
  ]
}
```

------

#### Esquema 1.2
<a name="runPowerShellScript-syntax-1.2"></a>

------
#### [ YAML ]

```
---
runtimeConfig:
  aws:runPowerShellScript:
    properties:
    - id: 0.aws:runPowerShellScript
      runCommand: "{{ commands }}"
      workingDirectory: "{{ workingDirectory }}"
      timeoutSeconds: "{{ executionTimeout }}"
```

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

```
{
   "runtimeConfig":{
      "aws:runPowerShellScript":{
         "properties":[
            {
               "id":"0.aws:runPowerShellScript",
               "runCommand":"{{ commands }}",
               "workingDirectory":"{{ workingDirectory }}",
               "timeoutSeconds":"{{ executionTimeout }}"
            }
         ]
      }
   }
}
```

------

### Propiedades
<a name="runPowerShellScript-properties"></a>

**runCommand**  
Especifique los comandos que se deben ejecutar o la ruta a un script existente en la instancia.  
Tipo: StringList  
Obligatorio: sí

**timeoutSeconds**  
El tiempo en segundos para que un comando se complete antes de considerar que se ha producido un error. Cuando se alcanza el tiempo de espera, Systems Manager detiene la ejecución del comando.  
Tipo: cadena  
Requerido: no

**workingDirectory**  
La ruta al directorio de trabajo en la instancia.  
Tipo: cadena  
Requerido: no

## `aws:runShellScript`
<a name="aws-runShellScript"></a>

Ejecute scripts de shell de Linux o especifique la ruta a un script para su ejecución. Este complemento solo se ejecuta en los sistemas operativos Linux.

### Sintaxis
<a name="runShellScript-syntax"></a>

#### Esquema 2.2
<a name="runShellScript-syntax-2.2"></a>

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: aws:runShellScript
parameters:
  commands:
    type: String
    description: "(Required) The commands to run or the path to an existing script
      on the instance."
    default: echo Hello World
mainSteps:
- action: aws:runShellScript
  name: runShellScript
  inputs:
    timeoutSeconds: '60'
    runCommand:
    - "{{ commands }}"
```

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

```
{
  "schemaVersion": "2.2",
  "description": "aws:runShellScript",
  "parameters": {
    "commands": {
      "type": "String",
      "description": "(Required) The commands to run or the path to an existing script on the instance.",
      "default": "echo Hello World"
    }
  },
  "mainSteps": [
    {
      "action": "aws:runShellScript",
      "name": "runShellScript",
      "inputs": {
        "timeoutSeconds": "60",
        "runCommand": [
          "{{ commands }}"
        ]
      }
    }
  ]
}
```

------

#### Esquema 1.2
<a name="runShellScript-syntax-1.2"></a>

------
#### [ YAML ]

```
---
runtimeConfig:
  aws:runShellScript:
    properties:
    - runCommand: "{{ commands }}"
      workingDirectory: "{{ workingDirectory }}"
      timeoutSeconds: "{{ executionTimeout }}"
```

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

```
{
   "runtimeConfig":{
      "aws:runShellScript":{
         "properties":[
            {
               "runCommand":"{{ commands }}",
               "workingDirectory":"{{ workingDirectory }}",
               "timeoutSeconds":"{{ executionTimeout }}"
            }
         ]
      }
   }
}
```

------

### Propiedades
<a name="runShellScript-properties"></a>

**runCommand**  
Especifique los comandos que se deben ejecutar o la ruta a un script existente en la instancia.  
Tipo: StringList  
Obligatorio: sí

**timeoutSeconds**  
El tiempo en segundos para que un comando se complete antes de considerar que se ha producido un error. Cuando se alcanza el tiempo de espera, Systems Manager detiene la ejecución del comando.  
Tipo: cadena  
Requerido: no

**workingDirectory**  
La ruta al directorio de trabajo en la instancia.  
Tipo: cadena  
Requerido: no

## `aws:softwareInventory`
<a name="aws-softwareinventory"></a>

(Versión de esquema 2.0 o posterior) Recopilar metadatos de aplicaciones, archivos y configuraciones de sus instancias administradas. Este complemento se ejecuta en los sistemas operativos Linux y Microsoft Windows Server. Cuando configure la recopilación de inventario, comience por crear una asociación de AWS Systems Manager State Manager. Systems Manager recopila los datos de inventario cuando se ejecuta la asociación. Si no crea la asociación en primer lugar e intenta invocar el complemento `aws:softwareInventory`, el sistema devolverá el siguiente error:

```
The aws:softwareInventory plugin can only be invoked via ssm-associate.
```

Una instancia solo puede tener una única asociación a inventario configurada a la vez. Si configura una instancia con dos o más asociaciones, la asociación de inventario no funciona y no se recopilan los datos de inventario. Para obtener más información acerca de la recopilación de inventario, consulte [Inventario de AWS Systems Manager](systems-manager-inventory.md).

### Sintaxis
<a name="softwareinventory-syntax"></a>

#### Esquema 2.2
<a name="softwareinventory-syntax-2.2"></a>

------
#### [ YAML ]

```
---
mainSteps:
- action: aws:softwareInventory
  name: collectSoftwareInventoryItems
  inputs:
    applications: "{{ applications }}"
    awsComponents: "{{ awsComponents }}"
    networkConfig: "{{ networkConfig }}"
    files: "{{ files }}"
    services: "{{ services }}"
    windowsRoles: "{{ windowsRoles }}"
    windowsRegistry: "{{ windowsRegistry}}"
    windowsUpdates: "{{ windowsUpdates }}"
    instanceDetailedInformation: "{{ instanceDetailedInformation }}"
    customInventory: "{{ customInventory }}"
```

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

```
{
   "mainSteps":[
      {
         "action":"aws:softwareInventory",
         "name":"collectSoftwareInventoryItems",
         "inputs":{
            "applications":"{{ applications }}",
            "awsComponents":"{{ awsComponents }}",
            "networkConfig":"{{ networkConfig }}",
            "files":"{{ files }}",
            "services":"{{ services }}",
            "windowsRoles":"{{ windowsRoles }}",
            "windowsRegistry":"{{ windowsRegistry}}",
            "windowsUpdates":"{{ windowsUpdates }}",
            "instanceDetailedInformation":"{{ instanceDetailedInformation }}",
            "customInventory":"{{ customInventory }}"
         }
      }
   ]
}
```

------

### Entradas
<a name="softwareinventory-properties"></a>

**aplicaciones**  
(Opcional) Recopilar metadatos para las aplicaciones instaladas.  
Tipo: cadena  
Requerido: no

**awsComponents**  
(Opcional) Recopilar metadatos para componentes de AWS como amazon-ssm-agent.  
Tipo: cadena  
Requerido: no

**files**  
(Opcional, requiere SSM Agent versión 2.2.64.0 o posterior) Recopilar metadatos de archivos, incluidos los nombres de archivos, la hora en que se crearon los archivos, la hora en que se modificaron y se accedió por última vez a los archivos y los tamaños de los archivos, por citar algunos. Para obtener más información acerca de la recopilación de inventario de archivos, consulte [Uso del inventario de archivos y del registro de Windows](inventory-file-and-registry.md).  
Tipo: cadena  
Requerido: no

**networkConfig**  
(Opcional) Recopilar metadatos para las configuraciones de red.  
Tipo: cadena  
Requerido: no

**billingInfo**  
(Opcional) Recopile metadatos para los detalles de la plataforma asociados con el código de facturación de la AMI.  
Tipo: cadena  
Requerido: no

**windowsUpdates**  
(Opcional) Recopilar metadatos de todas las actualizaciones de Windows.  
Tipo: cadena  
Requerido: no

**InstanceDetailedInformation**  
(Opcional) Recopilar más información de instancia de la que proporciona el complemento de inventario predeterminado (`aws:instanceInformation`), incluido el modelo de CPU, la velocidad y el número de núcleos, entre otros.  
Tipo: cadena  
Requerido: no

**servicios**  
(Opcional, solo para SO Windows, requiere SSM Agent versión 2.2.64.0 o posterior) Recopilar metadatos para configuraciones de servicio.  
Tipo: cadena  
Requerido: no

**windowsRegistry**  
(Opcional, solo para SO Windows, requiere SSM Agent versión 2.2.64.0 o posterior) Recopilar claves y valores de Windows Registry. Puede elegir una ruta de clave y recopilar todas las claves y valores recursivamente. También puede recopilar una clave de registro específica y su valor para una ruta específica. El inventario recopila la ruta de clave, el nombre, el tipo y el valor. Para obtener más información acerca de cómo recopilar el inventario de Windows Registry, consulte [Uso del inventario de archivos y del registro de Windows](inventory-file-and-registry.md).  
Tipo: cadena  
Requerido: no

**windowsRoles**  
(Opcional, solo para SO Windows, requiere SSM Agent versión 2.2.64.0 o posterior) Recopilar metadatos para configuraciones de roles de Microsoft Windows.  
Tipo: cadena  
Requerido: no

**customInventory**  
(Opcional) Recopilar datos de inventario personalizados. Para obtener más información acerca del inventario personalizado, consulte . [Uso del inventario personalizado](inventory-custom.md)  
Tipo: cadena  
Requerido: no

**customInventoryDirectory**  
(Opcional) Recopile datos de inventario personalizados desde el directorio especificado. Para obtener más información acerca del inventario personalizado, consulte . [Uso del inventario personalizado](inventory-custom.md)  
Tipo: cadena  
Requerido: no

## `aws:updateAgent`
<a name="aws-updateagent"></a>

Actualice el servicio EC2Config a la versión más reciente o especifique una versión más antigua. Este complemento solo se ejecuta en los sistemas operativos Microsoft Windows Server. Para obtener más información sobre el servicio EC2Config, consulte [Configuración de una instancia de Windows mediante el servicio EC2Config (heredado)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2config-service.html) en la *Guía del usuario de Amazon EC2*.

### Sintaxis
<a name="updateagent-syntax"></a>

#### Esquema 2.2
<a name="updateagent-syntax-2.2"></a>

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: aws:updateAgent
mainSteps:
- action: aws:updateAgent
  name: updateAgent
  inputs:
    agentName: Ec2Config
    source: https://s3.{Region}.amazonaws.com/aws-ssm-{Region}/manifest.json
```

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

```
{
  "schemaVersion": "2.2",
  "description": "aws:updateAgent",
  "mainSteps": [
    {
      "action": "aws:updateAgent",
      "name": "updateAgent",
      "inputs": {
        "agentName": "Ec2Config",
        "source": "https://s3.{Region}.amazonaws.com/aws-ssm-{Region}/manifest.json"
      }
    }
  ]
}
```

------

#### Esquema 1.2
<a name="updateagent-syntax-1.2"></a>

------
#### [ YAML ]

```
---
runtimeConfig:
  aws:updateAgent:
    properties:
      agentName: Ec2Config
      source: https://s3.{Region}.amazonaws.com/aws-ssm-{Region}/manifest.json
      allowDowngrade: "{{ allowDowngrade }}"
      targetVersion: "{{ version }}"
```

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

```
{
   "runtimeConfig":{
      "aws:updateAgent":{
         "properties":{
            "agentName":"Ec2Config",
            "source":"https://s3.{Region}.amazonaws.com/aws-ssm-{Region}/manifest.json",
            "allowDowngrade":"{{ allowDowngrade }}",
            "targetVersion":"{{ version }}"
         }
      }
   }
}
```

------

### Propiedades
<a name="updateagent-properties"></a>

**agentName**  
EC2Config. Este es el nombre del agente que ejecuta el servicio EC2Config.  
Tipo: cadena  
Obligatorio: sí

**allowDowngrade**  
Permita el cambio del servicio EC2Config a una versión anterior. Si se establece en "false", el servicio solo se puede actualizar a versiones más recientes (predeterminado). Si se establece en "true", especifique la versión anterior.   
Tipo: Booleano  
Obligatorio: no

**origen**  
La ubicación donde Systems Manager copia la versión de EC2Config que se va a instalar. No se puede cambiar esta ubicación.  
Tipo: cadena  
Obligatorio: sí

**targetVersion**  
Una versión específica del servicio EC2Config que se va a instalar. Si no se especifica, el servicio se actualizará a la versión más reciente.  
Tipo: cadena  
Requerido: no

## `aws:updateSsmAgent`
<a name="aws-updatessmagent"></a>

Actualice el SSM Agent a la versión más reciente o especifique una versión más antigua. Este complemento se ejecuta en los sistemas operativos Linux y Windows Server. Para obtener más información, consulte [Uso de SSM Agent](ssm-agent.md). 

### Sintaxis
<a name="updateSSMagent-syntax"></a>

#### Esquema 2.2
<a name="updateaSSMgent-syntax-2.2"></a>

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: aws:updateSsmAgent
parameters:
  allowDowngrade:
    default: 'false'
    description: "(Optional) Allow the Amazon SSM Agent service to be downgraded to
      an earlier version. If set to false, the service can be upgraded to newer versions
      only (default). If set to true, specify the earlier version."
    type: String
    allowedValues:
    - 'true'
    - 'false'
mainSteps:
- action: aws:updateSsmAgent
  name: updateSSMAgent
  inputs:
    agentName: amazon-ssm-agent
    source: https://s3.{Region}.amazonaws.com/amazon-ssm-{Region}/ssm-agent-manifest.json
    allowDowngrade: "{{ allowDowngrade }}"
```

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

```
{
  "schemaVersion": "2.2",
  "description": "aws:updateSsmAgent",
  "parameters": {
    "allowDowngrade": {
      "default": "false",
      "description": "(Required) Allow the Amazon SSM Agent service to be downgraded to an earlier version. If set to false, the service can be upgraded to newer versions only (default). If set to true, specify the earlier version.",
      "type": "String",
      "allowedValues": [
        "true",
        "false"
      ]
    }
  },
  "mainSteps": [
    {
      "action": "aws:updateSsmAgent",
      "name": "awsupdateSsmAgent",
      "inputs": {
        "agentName": "amazon-ssm-agent",
        "source": "https://s3.{Region}.amazonaws.com/amazon-ssm-{Region}/ssm-agent-manifest.json",
        "allowDowngrade": "{{ allowDowngrade }}"
      }
    }
  ]
}
```

------

#### Esquema 1.2
<a name="updateaSSMgent-syntax-1.2"></a>

------
#### [ YAML ]

```
---
runtimeConfig:
  aws:updateSsmAgent:
    properties:
    - agentName: amazon-ssm-agent
      source: https://s3.{Region}.amazonaws.com/aws-ssm-{Region}/manifest.json
      allowDowngrade: "{{ allowDowngrade }}"
```

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

```
{
   "runtimeConfig":{
      "aws:updateSsmAgent":{
         "properties":[
            {
               "agentName":"amazon-ssm-agent",
               "source":"https://s3.{Region}.amazonaws.com/aws-ssm-{Region}/manifest.json",
               "allowDowngrade":"{{ allowDowngrade }}"
            }
         ]
      }
   }
}
```

------

### Propiedades
<a name="updateSSMagent-properties"></a>

**agentName**  
amazon-ssm-agent. Este es el nombre del agente de Systems Manager que procesa las solicitudes y ejecuta los comandos en la instancia.  
Tipo: cadena  
Obligatorio: sí

**allowDowngrade**  
Permita el cambio del SSM Agent a una versión anterior. Si se establece en "false", el agente solo se puede actualizar a versiones más recientes (predeterminado). Si se establece en "true", especifique la versión anterior.   
Tipo: booleano  
Obligatorio: sí

**origen**  
La ubicación donde Systems Manager copia la versión del SSM Agent que se va a instalar. No se puede cambiar esta ubicación.  
Tipo: cadena  
Obligatorio: sí

**targetVersion**  
Versión concreta del SSM Agent que se va a instalar. Si no se especifica, el agente se actualizará a la versión más reciente.  
Tipo: cadena  
Obligatorio: no

# Crear contenido en el documento de SSM
<a name="documents-creating-content"></a>

Si los documentos públicos de AWS Systems Manager no llevan a cabo todas las acciones que desea realizar en sus recursos de AWS, puede crear sus propios documentos de SSM. También puede clonar documentos de SSM mediante la consola. La clonación de documentos copia el contenido de un documento existente a un documento nuevo que se puede modificar. Al crear o clonar un documento, el contenido del documento no debe superar los 64 KB. Esta cuota también incluye el contenido especificado para los parámetros de entrada en tiempo de ejecución. Cuando cree un nuevo documento `Command` o `Policy`, es recomendable que utilice la versión de esquema 2.2 o posterior para poder aprovechar las características más recientes, como la edición de documentos, el control automático de versiones, la secuenciación, etc.

## Escribir contenido en el documento de SSM
<a name="writing-ssm-doc-content"></a>

Para crear su propio contenido del documento de SSM, es importante que conozca los diferentes esquemas, características, complementos y sintaxis disponibles para los documentos de SSM. Le recomendamos que se familiarice con los siguientes recursos.
+  [Writing your own AWS Systems Manager documents](https://aws.amazon.com/blogs//mt/writing-your-own-aws-systems-manager-documents/) 
+  [Elementos y parámetros de datos](documents-syntax-data-elements-parameters.md) 
+  [Esquemas, características y ejemplos](documents-schemas-features.md) 
+  [Referencia de complementos del documento de comandos](documents-command-ssm-plugin-reference.md) 
+  [Referencia de acciones de Automatización de Systems Manager](automation-actions.md) 
+  [Variables del sistema de Automation](automation-variables.md) 
+  [Ejemplos adicionales de manuales de procedimientos](automation-document-examples.md) 
+  [Trabajar con manuales de procedimientos de Automatización de Systems Manager](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/systems-manager-automation-docs.html) mediante AWS Toolkit for Visual Studio Code 
+  [Experiencia de diseño visual para manuales de procedimientos de automatización](automation-visual-designer.md) 
+  [Uso de scripts en manuales de procedimientos](automation-document-script-considerations.md) 

AWSLos documentos de SSM predefinidos de pueden realizar algunas de las acciones que necesita. Puede llamar a estos documentos utilizando los complementos , `aws:runDocument`, `aws:runCommand` o `aws:executeAutomation` dentro del documento de SSM personalizado, en función del tipo de documento. También puede copiar partes de esos documentos en un documento de SSM personalizado y editar el contenido de acuerdo con sus necesidades.

**sugerencia**  
Cuando crea contenido del documento de SSM, puede cambiar el contenido y actualizar el documento de SSM varias veces mientras lo prueba. Los siguientes comandos actualizan el documento de SSM con el contenido más reciente y actualizan la versión predeterminada del documento a la versión más reciente del documento.  
Los comandos de Linux y Windows utilizan la herramienta de línea de comandos `jq` para filtrar los datos de respuesta JSON.

```
latestDocVersion=$(aws ssm update-document \
    --content file://path/to/file/documentContent.json \
    --name "ExampleDocument" \
    --document-format JSON \
    --document-version '$LATEST' \
    | jq -r '.DocumentDescription.LatestVersion')

aws ssm update-document-default-version \
    --name "ExampleDocument" \
    --document-version $latestDocVersion
```

```
latestDocVersion=$(aws ssm update-document ^
    --content file://C:\path\to\file\documentContent.json ^
    --name "ExampleDocument" ^
    --document-format JSON ^
    --document-version "$LATEST" ^
    | jq -r '.DocumentDescription.LatestVersion')

aws ssm update-document-default-version ^
    --name "ExampleDocument" ^
    --document-version $latestDocVersion
```

```
$content = Get-Content -Path "C:\path\to\file\documentContent.json" | Out-String
$latestDocVersion = Update-SSMDocument `
    -Content $content `
    -Name "ExampleDocument" `
    -DocumentFormat "JSON" `
    -DocumentVersion '$LATEST' `
    | Select-Object -ExpandProperty LatestVersion

Update-SSMDocumentDefaultVersion `
    -Name "ExampleDocument" `
    -DocumentVersion $latestDocVersion
```

### Prácticas recomendadas de seguridad para documentos de SSM
<a name="ssm-document-security-practices"></a>

Al crear documentos SSM, siga estas prácticas recomendadas de seguridad para evitar la inyección de comandos y garantizar una gestión segura de los parámetros:
+ Utilice la interpolación de variables de entorno para los parámetros de cadena que se utilizarán en comandos o scripts. Agregue la propiedad `interpolationType` con el valor `ENV_VAR` a los parámetros de cadena:

  ```
  {
      "command": {
          "type": "String",
          "description": "Command to execute",
          "interpolationType": "ENV_VAR"
      }
  }
  ```

  Puede mejorar aún más la seguridad de sus documentos SSM si especifica que no se acepten comillas dobles en los valores proporcionados por interpolación:

  ```
  {
      "command": {
          "type": "String",
          "description": "Command to execute",
          "interpolationType": "ENV_VAR",
              "allowedPattern": "^[^"]*$"
      }
  }
  ```
+ Cuando utilice lenguajes interpretados como Python, Ruby o Node.js, haga referencia a los parámetros mediante la sintaxis de variables de entorno adecuada:

  ```
  # Python example
  import os
  command = os.environ['SSM_Message']
  ```
+ A fin de garantizar la compatibilidad con versiones anteriores de SSM Agent (anteriores a la versión 3.3.2746.0), incluya una lógica alternativa para las variables de entorno:

  ```
  if [ -z "${SSM_command+x}" ]; then
      export SSM_command="{{command}}"
  fi
  ```
+ Combine la interpolación de variables de entorno con `allowedPattern` para una validación de entrada adicional. En el siguiente ejemplo, el valor `allowedPattern` `^[^"]*$` evita específicamente las comillas dobles en el valor de la cadena:

  ```
  {
      "command": {
          "type": "String",
          "interpolationType": "ENV_VAR",
          "allowedPattern": "^[a-zA-Z0-9_-]+$"
      }
  }
  ```
+ Antes de implementar el documento SSM, compruebe las siguientes consideraciones de seguridad:
  + Todos los parámetros de cadena que aceptan la entrada del usuario utilizan la interpolación de variables de entorno cuando es necesario.
  + La validación de las entradas se implementa mediante el uso de `allowedPattern` siempre que sea posible.
  + El documento incluye una gestión de errores adecuada para el procesamiento de los parámetros.
  + Se mantiene la compatibilidad con versiones anteriores para los entornos que utilizan versiones de SSM Agent más antiguas.

Para obtener información acerca de los recursos propiedad del servicio de AWS a los que accede Systems Manager y descubrir cómo configurar las políticas de perímetro de datos, consulte [Perímetros de datos en AWS Systems Manager](data-perimeters.md).

## Clonar un documento de SSM
<a name="cloning-ssm-document"></a>

Puede clonar documentos AWS Systems Manager mediante la consola de documentos de Systems Manager para crear documentos de SSM. La clonación de documentos de SSM copia el contenido de un documento existente a un documento nuevo que se puede modificar. No puede clonar un documento que supere los 64 KB.

**Para clonar un documento de SSM**

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 cuadro de búsqueda, ingrese el nombre del documento que desea clonar.

1. Elija el nombre del documento que desea clonar y, a continuación, elija **Clone document** (Clonar documento) en el menú desplegable **Actions** (Acciones). 

1. Modifique el documento como prefiera y, a continuación, elija **Create document** (Crear documento) para guardar el documento. 

Después de escribir el contenido del documento de SSM, puede utilizarlo para crear un documento de SSM mediante uno de los métodos siguientes.

**Topics**
+ [Escribir contenido en el documento de SSM](#writing-ssm-doc-content)
+ [Clonar un documento de SSM](#cloning-ssm-document)
+ [Creación de documentos compuestos](#documents-creating-composite)

## Creación de documentos compuestos
<a name="documents-creating-composite"></a>

Un documento de AWS Systems Manager (SSM) *compuesto* es un documento personalizado que realiza una serie de acciones mediante la ejecución de uno o varios documentos de SSM secundarios. Los documentos compuestos promueven la *infraestructura como código* permitiéndole crear un conjunto estándar de documentos de SSM para tareas comunes como software de proceso de arranque o instancias que se unen a dominios. A continuación, puede compartir estos documentos en Cuentas de AWS en la misma Región de AWS para reducir el mantenimiento de documentos de SSM y garantizar la coherencia.

Por ejemplo, puede crear un documento compuesto que realiza las siguientes acciones:

1. Instala todos los parches de la lista de permisos.

1. Instala software antivirus.

1. Descarga scripts de GitHub y los ejecuta.

En este ejemplo, el documento de SSM personalizado incluye los siguientes complementos para llevar a cabo estas acciones:

1. El complemento `aws:runDocument` para ejecutar el documento `AWS-RunPatchBaseline`, que instala todas las revisiones permitidas que se enumeran.

1. El complemento `aws:runDocument` para ejecutar el documento `AWS-InstallApplication`, que instala el software antivirus.

1. El complemento `aws:downloadContent` para descargar scripts de GitHub y ejecutarlos.

Los documentos compuestos y secundarios se pueden almacenar en Systems Manager, GitHub (repositorios públicos y privados) o Amazon S3. Los documentos compuestos y secundarios se pueden crear en JSON o YAML. 

**nota**  
Los documentos compuestos solo se pueden ejecutar hasta una profundidad máxima de tres documentos. Esto significa que un documento compuesto puede llamar a un documento secundario; y que un documento secundario puede llamar a un último documento.

Para crear un documento compuesto, agregue el complemento [`aws:runDocument`](documents-command-ssm-plugin-reference.md#aws-rundocument) en un documento de SSM personalizado y especifique la información de entrada necesaria. Se muestra a continuación un ejemplo de un documento compuesto que realiza las siguientes acciones:

1. Ejecuta el complemento [`aws:downloadContent`](documents-command-ssm-plugin-reference.md#aws-downloadContent) para descargar un documento de SSM de un repositorio público GitHub a un directorio local llamado bootstrap. El documento de SSM se denomina StateManagerBootstrap.yml (un documento YAML).

1. Ejecuta el complemento `aws:runDocument` para ejecutar el documento StateManagerBootstrap.yml. No se especifican parámetros.

1. Ejecuta el complemento `aws:runDocument` para ejecutar el documento de SSM `AWS-ConfigureDocker pre-defined`. Los parámetros especificados instalan Docker en la instancia.

```
{
  "schemaVersion": "2.2",
  "description": "My composite document for bootstrapping software and installing Docker.",
  "parameters": {
  },
  "mainSteps": [
    {
      "action": "aws:downloadContent",
      "name": "downloadContent",
      "inputs": {
        "sourceType": "GitHub",
        "sourceInfo": "{\"owner\":\"TestUser1\",\"repository\":\"TestPublic\", \"path\":\"documents/bootstrap/StateManagerBootstrap.yml\"}",
        "destinationPath": "bootstrap"
      }
    },
    {
      "action": "aws:runDocument",
      "name": "runDocument",
      "inputs": {
        "documentType": "LocalPath",
        "documentPath": "bootstrap",
        "documentParameters": "{}"
      }
    },
    {
      "action": "aws:runDocument",
      "name": "configureDocker",
      "inputs": {
        "documentType": "SSMDocument",
        "documentPath": "AWS-ConfigureDocker",
        "documentParameters": "{\"action\":\"Install\"}"
      }
    }
  ]
}
```

**Más información**  
+ Para obtener información acerca de cómo reiniciar los servidores y las instancias cuando se utiliza Run Command para llamar a scripts, consulte [Gestión de reinicios al ejecutar comandos](send-commands-reboot.md).
+ Para obtener más información acerca de los complementos que puede agregar a un documento de SSM personalizado, consulte [Referencia de complementos del documento de comandos](documents-command-ssm-plugin-reference.md).
+ Si solo desea ejecutar un documento desde una ubicación remota (sin crear un documento compuesto), consulte [Ejecución de documentos de desde ubicaciones remotas](documents-running-remote-github-s3.md).

# Trabajo con documentos
<a name="documents-using"></a>

Esta sección incluye información sobre cómo usar y trabajar con documentos de SSM.

**Topics**
+ [Comparar versiones de documentos de SSM](comparing-versions.md)
+ [Crear un documento de SSM](create-ssm-console.md)
+ [Eliminación de documentos de SSM personalizados](deleting-documents.md)
+ [Ejecución de documentos de desde ubicaciones remotas](documents-running-remote-github-s3.md)
+ [Uso compartido de documentos de SSM](documents-ssm-sharing.md)
+ [Búsqueda de documentos de SSM](ssm-documents-searching.md)

# Comparar versiones de documentos de SSM
<a name="comparing-versions"></a>

Puede comparar las diferencias de contenido entre las versiones de documentos AWS Systems Manager (SSM) en la consola de documentos de Systems Manager. Cuando compara versiones de un documento de SSM, se resaltan las diferencias entre el contenido de las versiones.

**Para comparar el contenido del documento de SSM (consola)**

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 la lista de documentos, elija el documento cuyo contenido desea comparar.

1. En la pestaña **Content** (Contenido), seleccione **Compare versions** (Comparar versiones) y elija la versión del documento con la que desee comparar el contenido.

# Crear un documento de SSM
<a name="create-ssm-console"></a>

Después de crear el contenido del documento de SSM personalizado, como se describe en [Escribir contenido en el documento de SSM](documents-creating-content.md#writing-ssm-doc-content), puede utilizar la consola de Systems Manager para crear un documento de SSM con el contenido.

**Para crear un documento de SSM**

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 command or session (Crear comando o sesión)**.

1. Ingrese un nombre descriptivo para asignar al documento

1. (Opcional) En **Tipo de destino**, especifique el tipo de recursos en los que se puede ejecutar el documento.

1. En la lista **Document Type**, seleccione el tipo de documento que desee crear.

1. Elimine los corchetes del campo **Content (Contenido)** y, a continuación, pegue el contenido del documento creado previamente.

1. (Opcional) En la sección **Etiquetas de documento**, aplique uno o más pares de nombre y valor de clave de etiqueta al documento.

   Las etiquetas son metadatos opcionales que usted asigna a un recurso. Las etiquetas permiten clasificar los recursos de diversas maneras, por ejemplo, según la finalidad, el propietario o el entorno. Por ejemplo, es posible que desee etiquetar un documento para identificar el tipo de tareas que ejecuta, el tipo de sistemas operativos al que se dirige y el entorno en el que se ejecuta. En este caso, puede especificar los siguientes pares de claves nombre-valor:
   + `Key=TaskType,Value=MyConfigurationUpdate`
   + `Key=OS,Value=AMAZON_LINUX_2`
   + `Key=Environment,Value=Production`

1. Elija **Create document** para guardar el documento.

# Eliminación de documentos de SSM personalizados
<a name="deleting-documents"></a>

Si ya no desea utilizar un documento personalizado de SSM, puede utilizar la consola de AWS Systems Manager para eliminarlo. 

**Para eliminar un documento de SSM**

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. Seleccione el documento que desea eliminar.

1. Seleccione **Delete** (Eliminar). Cuando se le pida confirmación para eliminar el documento, seleccione **Delete** (Eliminar).

Para consultar ejemplos de cómo utilizar herramientas de línea de comandos o SDK para eliminar documentos de SSM, consulte [Uso de `DeleteDocument` con un AWS SDK o la CLI](example_ssm_DeleteDocument_section.md).

# Ejecución de documentos de desde ubicaciones remotas
<a name="documents-running-remote-github-s3"></a>

Puede ejecutar documentos de AWS Systems Manager (SSM) desde ubicaciones remotas mediante el documento `AWS-RunDocument` de SSM predefinido. Este documento admite la ejecución de documentos de SSM almacenados en las siguientes ubicaciones:
+ Repositorios GitHub públicos y privados (no se admite GitHub Enterprise)
+ Buckets de Amazon S3 
+ Systems Manager

Si bien también puede ejecutar documentos remotos con State Manager o Automatización, herramientas de AWS Systems Manager, el siguiente procedimiento describe solo cómo ejecutar documentos de SSM remotos con AWS Systems Manager Run Command en la consola de Systems Manager. 

**nota**  
`AWS-RunDocument` se puede emplear para ejecutar solo documentos de SSM de tipo comando, no otros tipos, como manuales de procedimientos de Automation. `AWS-RunDocument` utiliza el complemento `aws:downloadContent`. Para obtener más información acerca del complemento `aws:downloadContent`, consulte [`aws:downloadContent`](documents-command-ssm-plugin-reference.md#aws-downloadContent).

**aviso**  
`AWS-RunDocument` puede ejecutar contenido de documentos de varios orígenes (documentos SSM, GitHub, S3, URL). Al ejecutar documentos remotos, los permisos de IAM evaluados son `ssm:GetDocument` sobre el documento remoto y `ssm:SendCommand` sobre `AWS-RunDocument`. Si tiene políticas de IAM que deniegan el acceso a documentos SSM específicos, los usuarios con permisos `AWS-RunDocument` pueden seguir ejecutando esos documentos denegados al transferir el contenido del documento como parámetros, que pueden no estar sujetos a las mismas restricciones de IAM específicas del documento.  
Para restringir de forma adecuada la ejecución de los documentos, utilice uno de estos enfoques:  
**Use una lista de orígenes autorizados**: si necesita utilizar la ejecución de documentos anidados, restrinja el acceso únicamente a los orígenes aprobados mediante los controles adecuados para cada tipo de origen: políticas de IAM `ssm:GetDocument` para controlar los orígenes de los documentos SSM, políticas de bucket de IAM y Amazon S3 para los orígenes de Amazon S3 y configuraciones de red (como puntos de conexión VPC o grupos de seguridad) para orígenes públicos de Internet.
**Restrinja el acceso a AWS-RunDocument**: deniegue `ssm:SendCommand` en `AWS-RunDocument` y cualquier otro documento que utilice el complemento `aws:runDocument` en sus políticas de IAM para evitar la ejecución de documentos anidados.
**Use límites de permisos**: implemente límites de permisos de IAM para establecer el máximo de permisos para los usuarios y evitar que ejecuten documentos no autorizados, independientemente del método de ejecución.
Para obtener más información sobre las prácticas recomendadas de IAM y los límites de permisos, consulte [Límites de permisos para las entidades de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) en la *Guía del usuario de AWS Identity and Access Management*.

**Antes de empezar**  
Antes de ejecutar un documento remoto, debe realizar las siguientes tareas.
+ Crear un documento de SSM Command y guardarlo en una ubicación remota. Para obtener más información, consulte [Crear contenido en el documento de SSM](documents-creating-content.md)
+ Si tiene previsto ejecutar un documento remoto almacenado en un repositorio GitHub privado, debe crear un parámetro `SecureString` de Systems Manager para su token de acceso de seguridad GitHub. No puede obtener acceso a un documento remoto en un repositorio GitHub privado pasando manualmente su token por SSH. El token de acceso debe pasarse como parámetro `SecureString` de Systems Manager. Para obtener más información acerca de cómo crear un parámetro `SecureString`, consulte [Creación de parámetros de Parameter Store en Systems Manager](sysman-paramstore-su-create.md).

## Ejecutar un documento remoto (consola)
<a name="documents-running-remote-github-s3-console"></a>

**Para ejecutar un documento remoto**

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 **Run Command**.

1. Elija **Run command (Ejecutar comando)**.

1. En la lista **Document** (Documento), elija **`AWS-RunDocument`**.

1. En **Command parameters (Parámetros de comando)**, para **Source type (Tipo de origen)**, elija una opción. 
   + Si elige **GitHub**, especifique la información correspondiente a **Información del origen** en el siguiente formato:

     ```
     {
         "owner": "owner_name",
         "repository": "repository_name",
         "path": "path_to_document",
         "getOptions":"branch:branch_name",
         "tokenInfo": "{{ssm-secure:secure-string-token}}"
     }
     ```

     Por ejemplo:

     ```
     {
         "owner":"TestUser",
         "repository":"GitHubTestExamples",
         "path":"scripts/python/test-script",
         "getOptions":"branch:exampleBranch",
         "tokenInfo":"{{ssm-secure:my-secure-string-token}}"
     }
     ```
**nota**  
`getOptions` son opciones adicionales para recuperar contenido de una plataforma que no sea maestra o de una confirmación específica en el repositorio. `getOptions` se pueden omitir si está utilizando la última confirmación en la rama maestra. Solo se requiere el parámetro `branch` si el documento de SSM se almacena en una sucursal que no sea `master`.  
Para utilizar la versión de su documento SSM en una *confirmación* concreta del repositorio, use `commitID` con `getOptions` en lugar de `branch`. Por ejemplo:  

     ```
     "getOptions": "commitID:bbc1ddb94...b76d3bEXAMPLE",
     ```
   + Si elige **S3**, especifique la información correspondiente a **Source Info** en el siguiente formato:

     ```
     {"path":"URL_to_document_in_S3"}
     ```

     Por ejemplo:

     ```
     {"path":"https://s3.amazonaws.com/amzn-s3-demo-bucket/scripts/ruby/mySSMdoc.json"}
     ```
   + Si elige **SSMDocument**, especifique la información correspondiente a **Source Info** en el siguiente formato:

     ```
     {"name": "document_name"}
     ```

     Por ejemplo:

     ```
     {"name": "mySSMdoc"}
     ```

1. En el campo **Document parameters** (Parámetros del documento), ingrese parámetros para el documento de SSM remoto. Por ejemplo, si ejecuta el documento `AWS-RunPowerShell`, podría especificar:

   ```
   {"commands": ["date", "echo \"Hello World\""]}
   ```

   Si ejecuta el documento `AWS-ConfigureAWSPack`, podría especificar:

   ```
   {
      "action":"Install",
      "name":"AWSPVDriver"
   }
   ```

1. En la sección **Targets** (Destinos), para elegir los nodos administrados en los que desea ejecutar esta operación, especifique las etiquetas, seleccione las instancias o los dispositivos de borde manualmente o especifique un grupo de recursos.
**sugerencia**  
Si un nodo administrado que espera ver no aparece en la lista, consulte [Solución de problemas de disponibilidad de nodos administrados](fleet-manager-troubleshooting-managed-nodes.md) para obtener consejos de solución de problemas.

1. En **Otros parámetros**:
   + En **Comentario**, ingrese la información acerca de este comando.
   + En **Tiempo de espera (segundos)**, especifique el número de segundos que tiene que esperar el sistema antes de indicar que se ha producido un error en la ejecución del comando general. 

1. En **Rate control** (Control de velocidad):
   + En **Concurrency** (Simultaneidad), especifique un número o un porcentaje de los nodos administrados en los que desea ejecutar el comando al mismo tiempo.
**nota**  
Si seleccionó los destinos mediante la especificación de etiquetas aplicadas a nodos administrados o de grupos de recursos de AWS y no está seguro de cuántos nodos administrados tienen destino, limite el número de destinos que puede ejecutar el documento al mismo tiempo. Para ello, especifique un porcentaje.
   + En **Error threshold** (Umbral de errores), especifique cuándo desea parar la ejecución del comando en los demás nodos administrados después de que haya fallado en un número o un porcentaje de los nodos. Por ejemplo, si especifica tres errores, Systems Manager dejará de enviar el comando cuando se reciba el cuarto error. Los nodos administrados que estén procesando el comando todavía pueden enviar errores.

1. (Opcional) En **Opciones de salida**, para guardar la salida del comando en un archivo, seleccione el cuadro **Write command output to an S3 bucket**. Ingrese los nombres del bucket y del prefijo (carpeta) en los cuadros.
**nota**  
Los permisos de S3 que conceden la capacidad de escribir datos en un bucket de S3 son los del perfil de instancia (para instancias de EC2) o rol de servicio de IAM (máquinas activadas de manera híbrida) asignados a la instancia, no los del usuario de IAM que realiza esta tarea. Para obtener más información, consulte [Configuración de permisos de instancia requeridos para Systems Manager](setup-instance-permissions.md) o [Creación de un rol de servicio de IAM para un entorno híbrido](hybrid-multicloud-service-role.md). Además, si el bucket de S3 especificado se encuentra en una Cuenta de AWS diferente, asegúrese de que el perfil de instancias o el rol de servicio de IAM asociado al nodo administrado tenga los permisos necesarios para escribir en ese bucket.

1. En la sección **Notificaciones de SNS**, seleccione la casilla de verificación **Habilitar notificaciones de SNS** si desea recibir notificaciones sobre el estado de ejecución de los comandos.

   Para obtener más información acerca de la configuración de las notificaciones de Amazon SNS para Run Command, consulte [Cómo monitorear los cambios de estado de Systems Manager mediante las notificaciones de Amazon SNS](monitoring-sns-notifications.md).

1. Seleccione **Ejecutar**.

**nota**  
Para obtener información acerca de cómo reiniciar los servidores y las instancias cuando se utiliza Run Command para llamar a scripts, consulte [Gestión de reinicios al ejecutar comandos](send-commands-reboot.md).

# Uso compartido de documentos de SSM
<a name="documents-ssm-sharing"></a>

Puede compartir documentos de AWS Systems Manager (SSM) de forma privada o pública con cuentas en la misma Región de AWS. Para compartir un documento de forma privada, modifique los permisos del documento y permita que personas específicas obtengan acceso a él conforme a sus ID de Cuenta de AWS. Para compartir un documento de SSM de forma pública, modifique los permisos del documento y especifique `All`. Los documentos no se pueden compartir simultáneamente de forma pública y privada.

**aviso**  
Utilice solo documentos de SSM compartidos procedentes de fuentes de confianza. Cuando utilice cualquier documento compartido, analice detenidamente el contenido del documento antes de utilizarlo para poder comprender la forma en que este cambiará la configuración de la instancia. Para obtener más información sobre las prácticas recomendadas para documentos compartidos, consulte [Prácticas recomendadas para documentos de SSM compartidos](#best-practices-shared). 

**Limitaciones**  
Cuando empiece a trabajar con documentos de SSM, debe tener en cuenta las siguientes limitaciones.
+ Solo el propietario puede compartir un documento.
+ Debe dejar de compartir un documento para poder eliminarlo. Para obtener más información, consulte [Modificar los permisos para un documento de SSM compartido](#modify-permissions-shared).
+ Puede compartir un documento con un máximo de 1000 Cuentas de AWS. Puede solicitar un aumento de este límite en el [Centro de Soporte](https://console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase). En **Tipo de límite**, elija *EC2 Systems Manager* y describa el motivo de la solicitud.
+ Puede compartir públicamente un máximo de cinco documentos de SSM. Puede solicitar un aumento de este límite en el [Centro de Soporte](https://console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase). En **Tipo de límite**, elija *EC2 Systems Manager* y describa el motivo de la solicitud.
+ Los documentos solo se pueden compartir con otras cuentas en la misma Región de AWS. No se admite el uso compartido entre regiones.

**importante**  
En Systems Manager, un documento de SSM *propiedad de Amazon* es un documento creado y administrado por Amazon Web Services. Los documentos que son *propiedad de Amazon* incluyen un prefijo como `AWS-*` en el nombre del documento. Se considera que el propietario del documento es Amazon, no una cuenta de usuario específica de AWS. Estos documentos están a disposición del público para que los utilicen todos los usuarios.

Para obtener más información acerca de las Service Quotas de Systems Manager, consulte [Service Quotas de AWS Systems Manager](https://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm).

**Topics**
+ [Prácticas recomendadas para documentos de SSM compartidos](#best-practices-shared)
+ [Bloquear el uso compartido público de documentos de SSM](#block-public-access)
+ [Compartir un documento de SSM](#ssm-how-to-share)
+ [Modificar los permisos para un documento de SSM compartido](#modify-permissions-shared)
+ [Uso de documentos de SSM compartidos](#using-shared-documents)

## Prácticas recomendadas para documentos de SSM compartidos
<a name="best-practices-shared"></a>

Revise las siguientes directrices antes de compartir o utilizar un documento compartido. 

**Eliminar información confidencial**  
Revise el documento de AWS Systems Manager (SSM) detenidamente y elimine cualquier información confidencial. Por ejemplo, compruebe que el documento no incluya sus credenciales de AWS. Si comparte un documento con personas específicas, esos usuarios podrán ver la información del documento. Si comparte un documento públicamente, cualquiera podrá ver la información del documento.

**Bloquear el uso compartido público de documentos**  
Revise todos los documentos SSM compartidos públicamente en su cuenta y confirme si quiere seguir compartiéndolos. Para dejar de compartir un documento con el público, debe modificar la configuración de permisos del documento tal y como se describe en la sección [Modificar los permisos para un documento de SSM compartido](#modify-permissions-shared) de este tópico. Si activa la opción de bloquear el uso compartido con el público, no se verá afectado ningún documento que esté compartiendo con el público en ese momento. A menos que su caso de uso requiera que se permita el uso compartido público, le recomendamos que active la configuración de bloqueo de uso compartido público para sus documentos de SSM en la sección **Preferencias** en la consola de documentos de Systems Manager. Si se activa esta configuración, se evita el acceso no deseado a los documentos de SSM. La configuración de bloqueo de uso compartido público es una configuración a nivel de cuenta que puede diferir para cada Región de AWS.

**Restringir las acciones de Run Command mediante una política de confianza de IAM**  
Cree una política de AWS Identity and Access Management (IAM) restrictiva para los usuarios que tendrán acceso al documento. La política de IAM determina los documentos de SSM que el usuario puede ver en la consola de Amazon Elastic Compute Cloud (Amazon EC2) o llamando a `ListDocuments` mediante la AWS Command Line Interface (AWS CLI) o AWS Tools for Windows PowerShell. La política también restringe las acciones que puede realizar el usuario con el documento de SSM. Puede crear una política restrictiva, de modo que el usuario solo pueda utilizar documentos específicos. Para obtener más información, consulte [Ejemplos de políticas administradas por el cliente](security_iam_id-based-policy-examples.md#customer-managed-policies).

**Actuar con precaución a la hora de utilizar documentos de SSM compartidos**  
Revise el contenido de cada documento compartido, en particular los documentos públicos, para comprender los comandos que se ejecutarán en sus instancias. Un documento podría tener repercusiones negativas después de haberlo ejecutado, ya sea de forma intencionada o no. Si el documento hace referencia a una red externa, revise la fuente externa antes de utilizar el documento. 

**Enviar comandos mediante el hash del documento**  
Al compartir un documento, el sistema crea el hash Sha-256 y lo asigna al documento. El sistema también guarda una instantánea del contenido del documento. Al enviar un comando utilizando un documento compartido, puede especificar el hash en el comando para asegurarse de que las siguientes condiciones sean verdaderas:  
+ Está ejecutando un comando desde el documento de Systems Manager correcto
+ El contenido del documento no ha cambiado desde que se compartió con usted.
Si el hash no coincide con el documento especificado o si el contenido del documento compartido ha cambiado, el comando devuelve la excepción `InvalidDocument`. El hash no puede verificar el contenido de documentos de ubicaciones externas.

**Uso del parámetro de interpolación para mejorar la seguridad**  
Para los parámetros de tipo `String` en sus documentos SSM, utilice el parámetro y el valor `interpolationType": "ENV_VAR` para mejorar la seguridad frente a los ataques de inyección de comandos. Esto se logra al tratar las entradas de los parámetros como cadenas literales en lugar de comandos potencialmente ejecutables. En este caso, el agente crea una variable de entorno denominada `SSM_parameter-name` con el valor del parámetro. Le recomendamos que actualice todos sus documentos SSM existentes que incluyan parámetros de tipo `String` para que incluyan `"interpolationType": "ENV_VAR"`. Para obtener más información, consulte [Escribir contenido en el documento de SSM](documents-creating-content.md#writing-ssm-doc-content).

## Bloquear el uso compartido público de documentos de SSM
<a name="block-public-access"></a>

Antes de empezar, revise todos los documentos SSM compartidos públicamente que tenga en su Cuenta de AWS y confirme si quiere seguir compartiéndolos. Para dejar de compartir un documento SSM con el público, debe modificar la configuración de permisos del documento tal y como se describe en la sección [Modificar los permisos para un documento de SSM compartido](#modify-permissions-shared) de este tópico. Si activa la opción de bloquear el uso compartido con el público, no se verá afectado ningún documento SSM que esté compartiendo con el público en ese momento. Si habilita la opción para bloquear el uso compartido con el público de, no podrá compartir ningún documento SSM adicional con el público.

A menos que su caso de uso requiera que el uso compartido público esté activado, le recomendamos que active la configuración de bloqueo de uso compartido con el público para sus documentos SSM. Si se activa esta configuración, se evita el acceso no deseado a los documentos de SSM. La configuración de bloqueo de uso compartido público es una configuración a nivel de cuenta que puede diferir para cada Región de AWS. Complete las siguientes tareas para bloquear el uso compartido con el público de cualquier documento de SSM que no esté compartiendo en este momento.

### Bloquear el uso compartido público (consola)
<a name="block-public-access-console"></a>

**Para bloquear el uso compartido público de sus documentos de SSM**

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 **Preferencias**, luego elija **Edit** (Editar) en la sección **Bloquear el uso compartido público**.

1. Seleccione la casilla de verificación **Bloquear el uso compartido público** y, a continuación, elija **Guardar**. 

### Bloquear el uso compartido público (línea de comandos)
<a name="block-public-access-cli"></a>

Abra el AWS Command Line Interface (AWS CLI) o AWS Tools for Windows PowerShell en el ordenador local y ejecute el siguiente comando para bloquear el uso compartido público de sus documentos de SSM.

------
#### [ Linux & macOS ]

```
aws ssm update-service-setting  \
    --setting-id /ssm/documents/console/public-sharing-permission \
    --setting-value Disable \
    --region 'The Región de AWS you want to block public sharing in'
```

------
#### [ Windows ]

```
aws ssm update-service-setting ^
    --setting-id /ssm/documents/console/public-sharing-permission ^
    --setting-value Disable ^
    --region "The Región de AWS you want to block public sharing in"
```

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

```
Update-SSMServiceSetting `
    -SettingId /ssm/documents/console/public-sharing-permission `
    -SettingValue Disable `
    –Region The Región de AWS you want to block public sharing in
```

------

Confirme que el valor de configuración se ha actualizado mediante el siguiente comando.

------
#### [ Linux & macOS ]

```
aws ssm get-service-setting   \
    --setting-id /ssm/documents/console/public-sharing-permission \
    --region The Región de AWS you blocked public sharing in
```

------
#### [ Windows ]

```
aws ssm get-service-setting  ^
    --setting-id /ssm/documents/console/public-sharing-permission ^
    --region "The Región de AWS you blocked public sharing in"
```

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

```
Get-SSMServiceSetting `
    -SettingId /ssm/documents/console/public-sharing-permission `
    -Region The Región de AWS you blocked public sharing in
```

------

### Restringir el acceso para bloquear el uso compartido público con IAM
<a name="block-public-access-changes-iam"></a>

Puede crear políticas AWS Identity and Access Management (IAM) que restringen a los usuarios de modificar la configuración de bloqueo de uso compartido público. Esto evita que los usuarios permitan el acceso no deseado a los documentos de SSM. 

A continuación, se muestra un ejemplo de una política de IAM que impide que los usuarios actualicen la configuración de bloqueo de uso compartido público. Para utilizar este ejemplo, debe reemplazar el ejemplo ID de cuenta de Amazon Web Services por su propio ID de cuenta.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": "ssm:UpdateServiceSetting",
            "Resource": "arn:aws:ssm:*:444455556666:servicesetting/ssm/documents/console/public-sharing-permission"
        }
    ]
}
```

------

## Compartir un documento de SSM
<a name="ssm-how-to-share"></a>

Puede compartir documentos AWS Systems Manager (SSM) mediante la consola de Systems Manager. Cuando se comparten documentos desde la consola, solo se puede compartir la versión predeterminada del documento. También puede compartir documentos de SSM mediante programación llamando a la operación de la API `ModifyDocumentPermission` con la AWS Command Line Interface (AWS CLI), AWS Tools for Windows PowerShell o el AWS SDK. Antes de compartir un documento, obtenga los ID de Cuenta de AWS de las personas con las que desea compartir. Especificará esos ID de cuentas cuando comparta el documento.

### Compartir un documento (consola)
<a name="share-using-console"></a>

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 la lista de documentos, elija el documento que desea compartir y, a continuación, elija **Ver detalles**. En la pestaña **Permisos**, verifique que es usted el propietario del documento. Solo el propietario del documento puede compartirlo.

1. Elija **Edit (Edición de)**.

1. Para compartir el comando públicamente, seleccione **Public** y, a continuación, **Guardar**. Para compartir el comando de forma privada, elija **Privado**, ingrese el ID de Cuenta de AWS, elija **Añadir permiso** y, a continuación, elija **Guardar**. 

### Compartir un documento (línea de comandos)
<a name="share-using-cli"></a>

El siguiente procedimiento requiere que especifique una Región de AWS para su sesión de línea de comandos.

1. Abra la AWS CLI o AWS Tools for Windows PowerShell en el equipo local y ejecute el siguiente comando para especificar sus credenciales. 

   En el siguiente comando, reemplace *region* con su propia información. Para ver una lista de los valores de *regiones* admitidos, consulte la columna **Región** en [Puntos de conexión de servicio de Systems Manager](https://docs.aws.amazon.com/general/latest/gr/ssm.html#ssm_region) en la *Referencia general de Amazon Web Services*.

------
#### [ Linux & macOS ]

   ```
   aws config
   
   AWS Access Key ID: [your key]
   AWS Secret Access Key: [your key]
   Default region name: region
   Default output format [None]:
   ```

------
#### [ Windows ]

   ```
   aws config
   
   AWS Access Key ID: [your key]
   AWS Secret Access Key: [your key]
   Default region name: region
   Default output format [None]:
   ```

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

   ```
   Set-AWSCredentials –AccessKey your key –SecretKey your key
   Set-DefaultAWSRegion -Region region
   ```

------

1. Utilice el siguiente comando para enumerar todos los documentos de SSM que tiene disponibles. La lista incluye documentos que ha creado y documentos que han sido compartidos con usted.

------
#### [ Linux & macOS ]

   ```
   aws ssm list-documents
   ```

------
#### [ Windows ]

   ```
   aws ssm list-documents
   ```

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

   ```
   Get-SSMDocumentList
   ```

------

1. Utilice el siguiente comando para obtener un documento específico.

------
#### [ Linux & macOS ]

   ```
   aws ssm get-document \
       --name document name
   ```

------
#### [ Windows ]

   ```
   aws ssm get-document ^
       --name document name
   ```

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

   ```
   Get-SSMDocument `
       –Name document name
   ```

------

1. Utilice el siguiente comando para obtener una descripción del documento.

------
#### [ Linux & macOS ]

   ```
   aws ssm describe-document \
       --name document name
   ```

------
#### [ Windows ]

   ```
   aws ssm describe-document ^
       --name document name
   ```

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

   ```
   Get-SSMDocumentDescription `
       –Name document name
   ```

------

1. Utilice el siguiente comando para ver los permisos para el documento.

------
#### [ Linux & macOS ]

   ```
   aws ssm describe-document-permission \
       --name document name \
       --permission-type Share
   ```

------
#### [ Windows ]

   ```
   aws ssm describe-document-permission ^
       --name document name ^
       --permission-type Share
   ```

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

   ```
   Get-SSMDocumentPermission `
       –Name document name `
       -PermissionType Share
   ```

------

1. Utilice el siguiente comando para modificar los permisos para el documento y compartirlo. Debe ser el propietario del documento para editar los permisos. Si lo desea, en el caso de los documentos compartidos con ID de la Cuenta de AWS específicos, puede especificar la versión del documento que quiere compartir con el parámetro `--shared-document-version`. Si no especifica una versión, el sistema comparte la versión `Default` del documento. Si comparte un documento de manera pública (con `all`), todas las versiones del documento especificado se comparten de forma predeterminada. El siguiente comando de ejemplo comparte el documento de forma privada con una persona específica en función de su ID de Cuenta de AWS.

------
#### [ Linux & macOS ]

   ```
   aws ssm modify-document-permission \
       --name document name \
       --permission-type Share \
       --account-ids-to-add Cuenta de AWS ID
   ```

------
#### [ Windows ]

   ```
   aws ssm modify-document-permission ^
       --name document name ^
       --permission-type Share ^
       --account-ids-to-add Cuenta de AWS ID
   ```

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

   ```
   Edit-SSMDocumentPermission `
       –Name document name `
       -PermissionType Share `
       -AccountIdsToAdd Cuenta de AWS ID
   ```

------

1. Utilice el siguiente comando para compartir un documento públicamente.
**nota**  
Si comparte un documento de manera pública (con `all`), todas las versiones del documento especificado se comparten de forma predeterminada. 

------
#### [ Linux & macOS ]

   ```
   aws ssm modify-document-permission \
       --name document name \
       --permission-type Share \
       --account-ids-to-add 'all'
   ```

------
#### [ Windows ]

   ```
   aws ssm modify-document-permission ^
       --name document name ^
       --permission-type Share ^
       --account-ids-to-add "all"
   ```

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

   ```
   Edit-SSMDocumentPermission `
       -Name document name `
       -PermissionType Share `
       -AccountIdsToAdd ('all')
   ```

------

## Modificar los permisos para un documento de SSM compartido
<a name="modify-permissions-shared"></a>

Si comparte un comando, los usuarios pueden ver y utilizar el comando hasta que usted quite el acceso al documento de AWS Systems Manager (SSM) o elimine el documento de SSM. Sin embargo, no puede eliminar un documento mientras esté compartido. Primero debe dejar de compartirlo y, a continuación, eliminarlo.

### Detener el uso compartido de un documento (consola)
<a name="unshare-using-console"></a>

**Detener el uso compartido de un documento**

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 la lista de documentos, elija el documento que desea dejar de compartir y, a continuación, elija **Detalles**. En la sección **Permisos**, verifique que es usted el propietario del documento. Solo el propietario del documento puede dejar de compartirlo.

1. Elija **Edit (Edición de)**.

1. Elija **X** para eliminar el ID de Cuenta de AWS que ya no deberá tener acceso al comando y, a continuación, elija **Guardar**. 

### Dejar de compartir un documento (línea de comandos)
<a name="unshare-using-cli"></a>

Abra la AWS CLI o AWS Tools for Windows PowerShell en el equipo local y ejecute el siguiente comando para dejar de compartir un comando.

------
#### [ Linux & macOS ]

```
aws ssm modify-document-permission \
    --name document name \
    --permission-type Share \
    --account-ids-to-remove 'Cuenta de AWS ID'
```

------
#### [ Windows ]

```
aws ssm modify-document-permission ^
    --name document name ^
    --permission-type Share ^
    --account-ids-to-remove "Cuenta de AWS ID"
```

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

```
Edit-SSMDocumentPermission `
    -Name document name `
    -PermissionType Share `
    –AccountIdsToRemove Cuenta de AWS ID
```

------

## Uso de documentos de SSM compartidos
<a name="using-shared-documents"></a>

Cuando comparte un documento de AWS Systems Manager (SSM), el sistema genera un nombre de recurso de Amazon (ARN) y lo asigna al comando. Si selecciona y ejecuta un documento compartido desde la consola de Systems Manager, no verá el ARN. Sin embargo, si desea ejecutar un documento de SSM compartido utilizando un método distinto de la consola de Systems Manager, debe especificar el ARN completo del documento para el parámetro de solicitud de `DocumentName`. Cuando ejecuta el comando para enumerar los documentos verá el ARN completo de un documento de SSM. 

**nota**  
No es necesario especificar los ARN para documentos públicos de AWS (documentos que comienzan por `AWS-*`) o para documentos de su propiedad.

### Uso de un documento de SSM compartido (línea de comandos)
<a name="using-shared-documents-cli"></a>

 **Para enumerar todos los documentos de SSM públicos** 

------
#### [ Linux & macOS ]

```
aws ssm list-documents \
    --filters Key=Owner,Values=Public
```

------
#### [ Windows ]

```
aws ssm list-documents ^
    --filters Key=Owner,Values=Public
```

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

```
$filter = New-Object Amazon.SimpleSystemsManagement.Model.DocumentKeyValuesFilter
$filter.Key = "Owner"
$filter.Values = "Public"

Get-SSMDocumentList `
    -Filters @($filter)
```

------

 **Para enumerar los documentos de SSM privados que se han compartido con usted** 

------
#### [ Linux & macOS ]

```
aws ssm list-documents \
    --filters Key=Owner,Values=Private
```

------
#### [ Windows ]

```
aws ssm list-documents ^
    --filters Key=Owner,Values=Private
```

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

```
$filter = New-Object Amazon.SimpleSystemsManagement.Model.DocumentKeyValuesFilter
$filter.Key = "Owner"
$filter.Values = "Private"

Get-SSMDocumentList `
    -Filters @($filter)
```

------

 **Para enumerar todos los documentos de SSM que tiene disponibles** 

------
#### [ Linux & macOS ]

```
aws ssm list-documents
```

------
#### [ Windows ]

```
aws ssm list-documents
```

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

```
Get-SSMDocumentList
```

------

 **Para obtener información acerca de un documento de SSM que se ha compartido con usted** 

------
#### [ Linux & macOS ]

```
aws ssm describe-document \
    --name arn:aws:ssm:us-east-2:12345678912:document/documentName
```

------
#### [ Windows ]

```
aws ssm describe-document ^
    --name arn:aws:ssm:us-east-2:12345678912:document/documentName
```

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

```
Get-SSMDocumentDescription `
    –Name arn:aws:ssm:us-east-2:12345678912:document/documentName
```

------

 **Para ejecutar un documento de SSM compartido** 

------
#### [ Linux & macOS ]

```
aws ssm send-command \
    --document-name arn:aws:ssm:us-east-2:12345678912:document/documentName \
    --instance-ids ID
```

------
#### [ Windows ]

```
aws ssm send-command ^
    --document-name arn:aws:ssm:us-east-2:12345678912:document/documentName ^
    --instance-ids ID
```

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

```
Send-SSMCommand `
    –DocumentName arn:aws:ssm:us-east-2:12345678912:document/documentName `
    –InstanceIds ID
```

------

# Búsqueda de documentos de SSM
<a name="ssm-documents-searching"></a>

Puede buscar documentos de SSM en el almacén de documentos AWS Systems Manager (SSM) mediante la búsqueda de texto libre o una búsqueda basada en filtros. También puede marcar documentos como favoritos para ayudarlo a encontrar documentos de SSM usados con frecuencia. En las siguientes secciones, se describe cómo utilizar estas características.

## Uso de la búsqueda de texto libre
<a name="ssm-documents-searching-free-text"></a>

El cuadro de búsqueda en la página **Documents** (Documentos) de Systems Manager admite las búsquedas de texto libre. La búsqueda de texto libre compara el término o los términos de búsqueda que introduce con el nombre del documento en cada documento de SSM. Si introduce un solo término de búsqueda, por ejemplo **ansible**, Systems Manager devuelve todos los documentos de SSM donde se encontró este término. Si introduce varios términos de búsqueda, Systems Manager buscará mediante una instrucción `OR`. Por ejemplo, si especifica **ansible** y **linux**, a continuación, la búsqueda devuelve todos los documentos con *cualquier* palabra clave en su nombre.

Si ingresa un término de búsqueda de texto libre y elige una opción de búsqueda, como **Platform type** (Tipo de plataforma), a continuación, la búsqueda utiliza una instrucción `AND` y devuelve todos los documentos con la palabra clave en su nombre y el tipo de plataforma especificado.

**nota**  
Tenga en cuenta los siguientes detalles sobre la búsqueda de texto libre.  
La búsqueda de texto libre *no* distingue entre mayúsculas y minúsculas.
Los términos de búsqueda deben tener tres caracteres como mínimo y 20 caracteres como máximo.
La búsqueda de texto libre acepta hasta cinco términos de búsqueda.
Si ingresa un espacio entre los términos de búsqueda, el sistema incluye el espacio al realizar la búsqueda.
Puede combinar la búsqueda de texto libre con otras opciones de búsqueda, como **Document type** (Tipo de documento) o **Platform type** (Tipo de plataforma).
El filtro **Document name prefix** (Prefijo de nombre del documento) y la búsqueda de texto libre no se pueden utilizar juntos. Son mutuamente excluyentes.

**Para buscar un documento de SSM**

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. Escriba los términos de búsqueda en el cuadro de búsqueda y presione “Enter” (Ingresar).

### Realizar la búsqueda de documentos de texto libre mediante la AWS CLI
<a name="ssm-documents-searching-free-text-cli"></a>

**Para realizar la búsqueda de documentos de texto libre mediante la CLI**

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. Para realizar búsquedas de documentos de texto libre con un solo término, ejecute el siguiente comando. En este comando, sustituya *search\$1term* con su propia información.

   ```
   aws ssm list-documents --filters Key="SearchKeyword",Values="search_term"
   ```

   A continuación se muestra un ejemplo.

   ```
   aws ssm list-documents --filters Key="SearchKeyword",Values="aws-asg" --region us-east-2
   ```

   Para realizar una búsqueda con varios términos que crean una instrucción `AND` ejecute el siguiente comando. En este comando, sustituya *search\$1term\$11* y *search\$1term\$12* con su propia información.

   ```
   aws ssm list-documents --filters Key="SearchKeyword",Values="search_term_1","search_term_2","search_term_3" --region us-east-2
   ```

   A continuación se muestra un ejemplo.

   ```
   aws ssm list-documents --filters Key="SearchKeyword",Values="aws-asg","aws-ec2","restart" --region us-east-2
   ```

## Uso de filtros
<a name="ssm-documents-searching-filters"></a>

La página **Documents** (Documentos) de Systems Manager muestra automáticamente los siguientes filtros cuando elije el cuadro de búsqueda. 
+ Prefijo de nombre del documento
+ Tipos de plataformas
+ Tipo de documento
+ Clave de etiqueta

![\[Opciones de filtrado en la página documentos de SSM.\]](http://docs.aws.amazon.com/es_es/systems-manager/latest/userguide/images/ssm-documents-filters-1.png)


Puede buscar documentos de SSM mediante un único filtro. Si desea volver un conjunto más específico de documentos de SSM, puede aplicar varios filtros. A continuación, se muestra un ejemplo de una búsqueda que utiliza los filtros **Platform types** (Tipos de plataforma) y **Document name prefix** (Prefijo de nombre del documento).

![\[Aplicación de varias opciones de filtro en la página Documentos de SSM.\]](http://docs.aws.amazon.com/es_es/systems-manager/latest/userguide/images/ssm-documents-filters-2.png)


Si aplica varios filtros, Systems Manager crea instrucciones de búsqueda diferentes basadas en los filtros que elija: 
+ Si aplica el *mismo* filtro varias veces, por ejemplo **Document name prefix** (Prefijo de nombre del documento), a continuación, Systems Manager busca mediante una instrucción `OR`. Por ejemplo, si especifica un filtro **Prefijo de nombre del documento**=**AWS** y un segundo filtro **Prefijo de nombre del documento**=**Lambda**, a continuación, la búsqueda devuelve todos los documentos con el prefijo “`AWS`” y todos los documentos con el prefijo “`Lambda`”.
+ Si aplica filtros *diferentes*, por ejemplo **Prefijo del nombre del documento** y **Tipos de plataformas**, Systems Manager realiza la búsqueda mediante el uso de una instrucción `AND`. Por ejemplo, si especifica un filtro **Prefijo del nombre del documento**=**AWS** y un filtro **Tipos de plataformas**=**Linux**, la búsqueda devuelve todos los documentos con el prefijo “`AWS`” específicos de la plataforma Linux.

**nota**  
Las búsquedas que utilizan filtros distinguen entre mayúsculas y minúsculas. 

## Adición de documentos a favoritos
<a name="favorite-documents"></a>

Para ayudarlo a encontrar los documentos de SSM que usa con frecuencia, agregue documentos a sus favoritos. Puede marcar como favoritos hasta 20 documentos por tipo de documento, por Cuenta de AWS y Región de AWS. Puede elegir, modificar y ver sus favoritos desde la Consola de administración de AWS de documentos. En los siguientes procedimientos, se describe cómo seleccionar, modificar y ver los favoritos.

**Para agregar un documento de SSM a favoritos**

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. Seleccione el icono de estrella situado junto al nombre del documento que desea marcar como favorito.

**Para eliminar un documento de SSM de favoritos**

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. Anule la selección del icono de estrella junto al nombre del documento que desea eliminar de sus favoritos.

**Para ver los favoritos desde la Consola de administración de AWS 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. Seleccione la pestaña **Favoritos**.

# Solución de problemas de gestión de parámetros
<a name="parameter-troubleshooting"></a>

## Problemas comunes de gestión de parámetros
<a name="common-parameter-issues"></a>

**Las variables de entorno no están disponibles durante la ejecución**  
**Problema:** los comandos fallan porque no se encuentran las variables de entorno (`SSM_parameter-name`).  
**Causas posibles:**  
+ La versión de SSM Agent no admite la interpolación de variables de entorno
+ `interpolationType` no está configurado como `ENV_VAR`
+ El nombre del parámetro no coincide con el nombre de la variable de entorno esperada
**Solución:**  
+ Compruebe que la versión de SSM Agent sea 3.3.2746.0 o posterior
+ Agregue una lógica alternativa para las versiones anteriores del agente:

  ```
  if [ -z "${SSM_parameterName+x}" ]; then
      export SSM_parameterName="{{parameterName}}"
  fi
  ```

**Valores de parámetro que contienen caracteres especiales**  
**Problema:** los comandos fallan cuando los valores de los parámetros contienen espacios, comillas u otros caracteres especiales.  
**Solución:**  
+ Utilice las comillas adecuadas al hacer referencia a las variables de entorno:

  ```
  # Correct
  echo "$SSM_parameter-name"
  
  # Incorrect
  echo $SSM_parameter-name
  ```
+ Agregue la validación de entrada mediante `allowedPattern` para restringir los caracteres especiales

**Comportamiento incoherente en todas las plataformas**  
**Problema:** la gestión de parámetros funciona de manera diferente en Linux y en los sistemas Windows Server.  
**Solución:**  
+ Utilice la sintaxis de variables de entorno específica de la plataforma:

  ```
  # PowerShell
  $env:SSM_parameter-name
  
  # Bash
  $SSM_parameter-name
  ```
+ Utilice en su documento comprobaciones de condiciones previas específicas de la plataforma

**Los valores de los parámetros no se han filtrado correctamente**  
**Problema:** hay vulnerabilidades en la inyección de comandos a pesar de utilizar la interpolación de variables de entorno.  
**Solución:**  
+ Utilice siempre el método de escape adecuado al incluir valores de parámetros en los comandos:

  ```
  # Correct
  mysql_command="mysql -u \"$SSM_username\" -p\"$SSM_password\""
  
  # Incorrect
  mysql_command="mysql -u $SSM_username -p$SSM_password"
  ```

## Consejos de validación de parámetros
<a name="parameter-validation"></a>

Utilice estas técnicas para validar su gestión de parámetros:

1. Pruebe la disponibilidad de las variables del entorno:

   ```
   #!/bin/bash
   # Print all SSM_ environment variables
   env | grep ^SSM_
   
   # Test specific parameter
   if [ -n "$SSM_parameter" ]; then
       echo "Parameter is available"
   else
       echo "Parameter is not available"
   fi
   ```

1. Verifique los patrones de los parámetros:

   ```
   parameters:
     myParameter:
       type: String
       allowedPattern: "^[a-zA-Z0-9_-]+$"
       description: "Test this pattern with sample inputs"
   ```

1. Incluya la gestión de errores:

   ```
   if [[ ! "$SSM_parameter" =~ ^[a-zA-Z0-9_-]+$ ]]; then
       echo "Parameter validation failed"
       exit 1
   fi
   ```