

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Módulos de acción compatibles con el administrador de TOE de AWS componentes
<a name="toe-action-modules"></a>

Los servicios de creación de imágenes, como Image Builder de EC2, TOE de AWS utilizan módulos de acción para ayudar a configurar las instancias de EC2 que se utilizan para crear y probar imágenes de máquinas personalizadas. En esta sección se describen las características de los módulos de TOE de AWS acción más utilizados y cómo configurarlos, e incluye ejemplos.

los componentes se crean con documentos YAML de texto simple. Para obtener más información sobre sintaxis de documentos, consulte [Utilice el marco de documentos de TOE de AWS componentes para componentes personalizados](toe-use-documents.md).

**nota**  
Todos los módulos de acción utilizan la misma cuenta que Systems Manager Agent cuando se ejecutan: `root` en Linux y `NT Authority\SYSTEM` en Windows.

La siguiente referencia cruzada clasifica los módulos de acción por el tipo de acciones que realizan.

 

**Ejecución general**
+ [Assert (Linux, Windows, macOS)](#action-modules-assertion)
+ [ExecuteBash (Linux, macOS)](#action-modules-executebash)
+ [ExecuteBinary (Linux, Windows, macOS)](#action-modules-executebinary)
+ [ExecuteDocument (Linux, Windows, macOS)](#action-modules-executedocument)
+ [ExecutePowerShell (Windows)](#action-modules-executepowershell)

 

**Módulos de descarga y carga de archivos**
+ [S3Download (Linux, Windows, macOS)](#action-modules-s3download)
+ [S3Upload (Linux, Windows, macOS)](#action-modules-s3upload)
+ [WebDownload (Linux, Windows, macOS)](#action-modules-webdownload)

 

**Operaciones del sistema de archivos**
+ [AppendFile (Linux, Windows, macOS)](#action-modules-appendfile)
+ [CopyFile (Linux, Windows, macOS)](#action-modules-copyfile)
+ [CopyFolder (Linux, Windows, macOS)](#action-modules-copyfolder)
+ [CreateFile (Linux, Windows, macOS)](#action-modules-createfile)
+ [CreateFolder (Linux, Windows, macOS)](#action-modules-createfolder)
+ [CreateSymlink (Linux, Windows, macOS)](#action-modules-createsymlink)
+ [DeleteFile (Linux, Windows, macOS)](#action-modules-deletefile)
+ [DeleteFolder (Linux, Windows, macOS)](#action-modules-deletefolder)
+ [ListFiles (Linux, Windows, macOS)](#action-modules-listfiles)
+ [MoveFile (Linux, Windows, macOS)](#action-modules-movefile)
+ [MoveFolder (Linux, Windows, macOS)](#action-modules-movefolder)
+ [ReadFile (Linux, Windows, macOS)](#action-modules-readfile)
+ [SetFileEncoding (Linux, Windows, macOS)](#action-modules-setfileencoding)
+ [SetFileOwner (Linux, Windows, macOS)](#action-modules-setfileowner)
+ [SetFolderOwner (Linux, Windows, macOS)](#action-modules-setfolderowner)
+ [SetFilePermissions (Linux, Windows, macOS)](#action-modules-setfilepermissions)
+ [SetFolderPermissions (Linux, Windows, macOS)](#action-modules-setfolderpermissions)

 

**Acciones de instalación de software**
+ [InstallMSI (Windows)](#action-modules-install-msi)
+ [UninstallMSI (Windows)](#action-modules-uninstall-msi)

 

**Acciones del sistema**
+ [Reboot (Linux, Windows)](#action-modules-reboot)
+ [SetRegistry (Windows)](#action-modules-setregistry)
+ [UpdateOS (Linux, Windows)](#action-modules-updateos)

## Módulos de ejecución general
<a name="action-modules-general-execution"></a>

La siguiente sección contiene detalles sobre los módulos de acción que ejecutan comandos y controlan el flujo de trabajo de ejecución.

**Topics**
+ [Assert (Linux, Windows, macOS)](#action-modules-assertion)
+ [ExecuteBash (Linux, macOS)](#action-modules-executebash)
+ [ExecuteBinary (Linux, Windows, macOS)](#action-modules-executebinary)
+ [ExecuteDocument (Linux, Windows, macOS)](#action-modules-executedocument)
+ [ExecutePowerShell (Windows)](#action-modules-executepowershell)

### Assert (Linux, Windows, macOS)
<a name="action-modules-assertion"></a>

El módulo de acción **Assert** realiza comparaciones de valores utilizando [Operadores de comparación](toe-comparison-operators.md) o [Logical operators (Operadores lógicos)](toe-logical-operators.md) como entrada. El resultado de la expresión del operador (verdadero o falso) indica el estado general de éxito o fracaso del paso.

Si la expresión del operador lógico o de comparación se evalúa como `true`, el paso se marca como `Success`. De lo contrario, el paso se marca como `Failed`. Si el paso falla, el parámetro `onFailure` decide el resultado del paso.


**Input**  

| Nombre de la clave | Description (Descripción) | Tipo | Obligatorio/a | 
| --- | --- | --- | --- | 
| input | Contiene un único operador lógico o de comparación. Tenga en cuenta que los operadores lógicos pueden contener más de un operador de comparación. | Varía en función del operador | Sí | 

**Ejemplo de entrada: una comparación sencilla con el operador de comparación `stringEquals`**

En este ejemplo se obtiene el resultado `true`.

```
- name: StringComparison
  action: Assert
  inputs:
    stringEquals: '2.1.1'
    value: '{{ validate.ApplicationVersion.outputs.stdout }}'
```

**Ejemplo de entrada: comparaciones de expresiones regulares mediante el operador de comparación `patternMatches`**

Todos estos ejemplos dan como resultado `true`.

```
- name: Letters only
  action: Assert
  inputs:
    patternMatches: '^[a-zA-Z]+$'
    value: 'ThisIsOnlyLetters'

- name: Letters and spaces only
  action: Assert
  inputs:
    patternMatches: '^[a-zA-Z\s]+$'
    value: 'This text contains spaces'
  
- name: Numbers only
  action: Assert
  inputs:
    patternMatches: '^[0-9]+$'
    value: '1234567890'
```

**Ejemplo de entrada: comparaciones anidadas con operadores lógicos y variables encadenadas**

El siguiente ejemplo muestra las comparaciones anidadas con operadores lógicos que utilizan comparaciones con variables encadenadas. `Assert` evalúa `true` si se cumple alguna de las siguientes condiciones:
+ La `ApplicationVersion` es mayor que `2.0` y la `CPUArchitecture` igual a `arm64`.
+ La `CPUArchitecture` es igual a `x86_64`.

```
- name: NestedComparisons
  action: Assert
  inputs:
    or: # <- first level deep
      - and: # <- second level deep
          - numberGreaterThan: 2.0 # <- third level deep
            value: '{{ validate.ApplicationVersion.outputs.stdout }}'
          - stringEquals: 'arm64'
            value: '{{ validate.CPUArchitecture.outputs.stdout }}'
      - stringEquals: 'x86_64'
        value: '{{ validate.CPUArchitecture.outputs.stdout }}'
```

**Salida:**

El resultado de un paso `Assert` es el éxito o el fracaso del paso.

### ExecuteBash (Linux, macOS)
<a name="action-modules-executebash"></a>

El módulo de **ExecuteBash**acción le permite ejecutar scripts bash con códigos/comandos de shell integrados. Este módulo es compatible con Linux. 

Todos los comandos e instrucciones que especifique en el bloque de comandos se convierten en un archivo (por ejemplo `input.sh`) y se ejecutan con el intérprete de comandos bash. El resultado de ejecutar el archivo del intérprete de comandos es el código de salida del paso. 

El **ExecuteBash**módulo gestiona los reinicios del sistema si el script se cierra con un código de salida de. `194` Cuando esto ocurre, la aplicación realiza una de las siguientes acciones:
+ La aplicación entrega el código de salida a la persona que llama si lo ejecuta Systems Manager Agent. Systems Manager Agent gestiona el reinicio del sistema y ejecuta el mismo paso que lo inició, tal y como se describe en [Reiniciar una instancia gestionada desde scripts](https://docs.aws.amazon.com/systems-manager/latest/userguide/send-commands-reboot.html).
+ La aplicación guarda el `executionstate` actual, configura un activador de reinicio para volver a ejecutar la aplicación y reinicia el sistema.

Tras reiniciar el sistema, la aplicación ejecuta el mismo paso que inició el reinicio. Si necesita esta funcionalidad, debe escribir scripts idempotentes que puedan gestionar múltiples invocaciones del mismo comando del intérprete de comandos.


**Input**  

| Nombre de la clave | Description (Descripción) | Tipo | Obligatorio/a | 
| --- | --- | --- | --- | 
| commands | Contiene una lista de instrucciones o comandos para ejecutar según la sintaxis de bash. Se permite el YAML multilínea. | Enumeración | Sí | 

**Ejemplo de entrada: antes y después de un reinicio**

```
name: ExitCode194Example
description: This shows how the exit code can be used to restart a system with ExecuteBash
schemaVersion: 1.0
phases:
  - name: build
    steps:
      - name: RestartTrigger
        action: ExecuteBash
        inputs:
          commands:
            - |
              REBOOT_INDICATOR=/var/tmp/reboot-indicator
              if [ -f "${REBOOT_INDICATOR}" ]; then
                echo 'The reboot file exists. Deleting it and exiting with success.'
                rm "${REBOOT_INDICATOR}"
                exit 0
              fi
              echo 'The reboot file does not exist. Creating it and triggering a restart.'
              touch "${REBOOT_INDICATOR}"
              exit 194
```


**Output**  

| Campo | Description (Descripción) | Tipo | 
| --- | --- | --- | 
| stdout | Resultado estándar de la ejecución de comandos. | cadena | 

Si inicia un reinicio y devuelve el código de salida `194` como parte del módulo de acción, la compilación se reanudará en el mismo paso del módulo de acción en el que se inició el reinicio. Si inicia un reinicio sin el código de salida, es posible que se produzca un error en el proceso de compilación.

**Ejemplo de resultado: antes del reinicio (primera vez a través del documento)**

```
{
	“stdout”: “The reboot file does not exist. Creating it and triggering a restart."
}
```

**Ejemplo de resultado: después del reinicio (segunda vez a través del documento)**

```
{
	“stdout”: “The reboot file exists. Deleting it and exiting with success."
}
```

### ExecuteBinary (Linux, Windows, macOS)
<a name="action-modules-executebinary"></a>

El módulo de **ExecuteBinary**acción permite ejecutar archivos binarios con una lista de argumentos de línea de comandos.

El **ExecuteBinary**módulo gestiona los reinicios del sistema si el archivo binario se cierra con un código de salida de `194` (Linux) o `3010` (Windows). Cuando esto ocurre, la aplicación realiza una de las siguientes acciones:
+ La aplicación entrega el código de salida a la persona que llama si lo ejecuta Systems Manager Agent. Systems Manager Agent gestiona el reinicio del sistema y ejecuta el mismo paso que lo inició, tal y como se describe en [Reiniciar una instancia gestionada desde scripts](https://docs.aws.amazon.com/systems-manager/latest/userguide/send-commands-reboot.html).
+ La aplicación guarda el `executionstate` actual, configura un activador de reinicio para volver a ejecutar la aplicación y reinicia el sistema.

Una vez reiniciado el sistema, la aplicación ejecuta el mismo paso que inició el reinicio. Si necesita esta funcionalidad, debe escribir scripts idempotentes que puedan gestionar múltiples invocaciones del mismo comando del intérprete de comandos.


**Input**  

| Nombre de la clave | Description (Descripción) | Tipo | Obligatorio/a | 
| --- | --- | --- | --- | 
| path | La ruta de acceso al archivo binario que se va a ejecutar. | Cadena | Sí | 
| arguments | Contiene una lista de argumentos de la línea de comandos que se utilizarán al ejecutar el archivo binario. | Lista de cadenas | No | 

**Ejemplo de entrada: install.NET**

```
  - name: "InstallDotnet"
    action: ExecuteBinary
    inputs:
      path: C:\PathTo\dotnet_installer.exe
      arguments:
        - /qb
        - /norestart
```


**Output**  

| Campo | Description (Descripción) | Tipo | 
| --- | --- | --- | 
| stdout | Resultado estándar de la ejecución de comandos. | cadena | 

**Ejemplo de resultados**

```
{
	"stdout": "success"
}
```

### ExecuteDocument (Linux, Windows, macOS)
<a name="action-modules-executedocument"></a>

El módulo de **ExecuteDocument**acción añade soporte para documentos de componentes anidados, al ejecutar varios documentos de componentes desde un documento. TOE de AWS valida el documento que se pasa en el parámetro de entrada en tiempo de ejecución.

**Restricciones**
+ Este módulo de acción se ejecuta una vez, no se permiten reintentos y no existe la opción de establecer límites de tiempo de espera. **ExecuteDocument**establece los siguientes valores predeterminados y devuelve un error si intenta cambiarlos.
  + `timeoutSeconds`: -1
  + `maxAttempts`: 1
**nota**  
Puede dejar estos valores en blanco y TOE de AWS utilizar los valores predeterminados.
+ Se permite la anidación de documentos con una profundidad de hasta tres niveles, pero no más. Tres niveles de anidación se traducen en cuatro niveles de documento, ya que el nivel superior no está anidado. En este escenario, el documento de nivel inferior no debe incluir a ningún otro documento.
+ No se permite la ejecución cíclica de los documentos componentes. Cualquier documento que se llame a sí mismo fuera de una construcción en bucle, o que llame a otro documento en un nivel superior de la cadena de ejecución actual, inicia un ciclo que puede dar como resultado un bucle sin fin. Cuando TOE de AWS detecta una ejecución cíclica, la detiene y registra el error.

![\[Restricciones de nivel de anidación para el módulo de ExecuteDocument acción.\]](http://docs.aws.amazon.com/es_es/imagebuilder/latest/userguide/images/toe-component-document-nesting.png)


Si un documento componente intenta ejecutarse por sí mismo o ejecutar alguno de los documentos componentes que se encuentran más arriba en la cadena de ejecución actual, se produce un error en la ejecución.

**Entrada**


| Nombre de la clave | Description (Descripción) | Tipo | Obligatorio/a | 
| --- | --- | --- | --- | 
| document |  Ruta del documento componente. Entre las opciones válidas se incluyen: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/imagebuilder/latest/userguide/toe-action-modules.html)  | Cadena | Sí | 
| document-s3-bucket-owner |  ID de la cuenta del propietario del bucket de S3 para el bucket de S3 donde se almacenan los documentos de los componentes. *(Se recomienda si utiliza S3 URIs en el documento de componentes).*  | Cadena | No | 
| phases |  Fases que se ejecutarán en el documento de componentes, expresadas como una lista separada por comas. Si no se especifica ninguna fase, se ejecutan todas las fases.  | Cadena | No | 
| parameters |  Parámetros de entrada que se pasan al documento del componente en tiempo de ejecución como pares de valores clave.  | Lista de mapas de parámetros | No | 

**Entrada de mapa de parámetros**


| Nombre de la clave | Description (Descripción) | Tipo | Obligatorio/a | 
| --- | --- | --- | --- | 
| name |  El nombre del parámetro de entrada que se va a pasar al documento del componente que está ejecutando el módulo de **ExecuteDocument**acción.  | Cadena | Sí | 
| value |  El valor de un parámetro de entrada.  | Cadena | Sí | 

**Ejemplos de entradas**  
Los ejemplos siguientes muestran variaciones de las entradas del documento de componentes, en función de la ruta de instalación.

**Ejemplo de entrada: ruta del documento local**

```
# main.yaml
schemaVersion: 1.0

phases:
  - name: build
    steps:
      - name: ExecuteNestedDocument
        action: ExecuteDocument
        inputs:
          document: Sample-1.yaml
          phases: build
          parameters:
            - name: parameter-1
              value: value-1
            - name: parameter-2
              value: value-2
```

**Ejemplo de entrada: URI de S3 como ruta de documento**

```
# main.yaml
schemaVersion: 1.0

phases:
  - name: build
    steps:
      - name: ExecuteNestedDocument
        action: ExecuteDocument
        inputs:
          document: s3://my-bucket/Sample-1.yaml
          document-s3-bucket-owner: 123456789012
          phases: build,validate
          parameters:
            - name: parameter-1
              value: value-1
            - name: parameter-2
              value: value-2
```

**Ejemplo de entrada: ARN del componente Generador de Imágenes de EC2 como ruta de documento**

```
# main.yaml
schemaVersion: 1.0

phases:
  - name: build
    steps:
      - name: ExecuteNestedDocument
        action: ExecuteDocument
        inputs:
          document: arn:aws:imagebuilder:us-west-2:aws:component/Sample-Test/1.0.0
          phases: test
          parameters:
            - name: parameter-1
              value: value-1
            - name: parameter-2
              value: value-2
```

**Uso de un ForEach bucle para ejecutar documentos**

```
# main.yaml
schemaVersion: 1.0

phases:
  - name: build
    steps:
      - name: ExecuteNestedDocument
        action: ExecuteDocument
        loop:
          name: 'myForEachLoop'
          forEach:
            - Sample-1.yaml
            - Sample-2.yaml
        inputs:
          document: "{{myForEachLoop.value}}"
          phases: test
          parameters:
            - name: parameter-1
              value: value-1
            - name: parameter-2
              value: value-2
```

**Uso de un bucle For para ejecutar documentos**

```
# main.yaml
schemaVersion: 1.0

phases:
  - name: build
    steps:
      - name: ExecuteNestedDocument
        action: ExecuteDocument
        loop:
          name: 'myForLoop'
          for:
            start: 1
            end: 2
            updateBy: 1
        inputs:
          document: "Sample-{{myForLoop.value}}.yaml"
          phases: test
          parameters:
            - name: parameter-1
              value: value-1
            - name: parameter-2
              value: value-2
```

**Output**  
TOE de AWS crea un archivo de salida llamado `detailedoutput.json` cada vez que se ejecuta. El archivo contiene detalles sobre cada fase y paso de cada documento componente que se invoca mientras se está ejecutando. Para el módulo de **ExecuteDocument**acciones, encontrará un breve resumen del tiempo de ejecución en el `outputs` campo y detalles sobre las fases, los pasos y los documentos en los que se ejecuta`detailedOutput`.

```
{
	\"executedStepCount\":1,\"executionId\":\"97054e22-06cc-11ec-9b14-acde48001122\",\"failedStepCount\":0,\"failureMessage\":\"\",\"ignoredFailedStepCount\":0,\"logUrl\":\"\",\"status\":\"success\"
}",
```

El objeto de resumen de resultados de cada documento componente contiene los siguientes detalles, como se muestra aquí, con valores de ejemplo:
+ executedStepCount«:1
+ "executionId":"12345a67-89bc-01de-2f34-abcd56789012"
+ «failedStepCount«:0
+ "failureMessage":""
+ «ignoredFailedStepContar»: 0
+ "logUrl":""
+ "status":"success"

**Ejemplo de resultados**  
El siguiente ejemplo muestra el resultado del módulo de **ExecuteDocument**acciones cuando se produce una ejecución anidada. En este ejemplo, el documento componente `main.yaml` ejecuta correctamente el documento componente `Sample-1.yaml`.

```
{
    "executionId": "12345a67-89bc-01de-2f34-abcd56789012",
    "status": "success",
    "startTime": "2021-08-26T17:20:31-07:00",
    "endTime": "2021-08-26T17:20:31-07:00",
    "failureMessage": "",
    "documents": [
        {
            "name": "",
            "filePath": "main.yaml",
            "status": "success",
            "description": "",
            "startTime": "2021-08-26T17:20:31-07:00",
            "endTime": "2021-08-26T17:20:31-07:00",
            "failureMessage": "",
            "phases": [
                {
                    "name": "build",
                    "status": "success",
                    "startTime": "2021-08-26T17:20:31-07:00",
                    "endTime": "2021-08-26T17:20:31-07:00",
                    "failureMessage": "",
                    "steps": [
                        {
                            "name": "ExecuteNestedDocument",
                            "status": "success",
                            "failureMessage": "",
                            "timeoutSeconds": -1,
                            "onFailure": "Abort",
                            "maxAttempts": 1,
                            "action": "ExecuteDocument",
                            "startTime": "2021-08-26T17:20:31-07:00",
                            "endTime": "2021-08-26T17:20:31-07:00",
                            "inputs": "[{\"document\":\"Sample-1.yaml\",\"document-s3-bucket-owner\":\"\",\"phases\":\"\",\"parameters\":null}]",
                            "outputs": "[{\"executedStepCount\":1,\"executionId\":\"98765f43-21ed-09cb-8a76-fedc54321098\",\"failedStepCount\":0,\"failureMessage\":\"\",\"ignoredFailedStepCount\":0,\"logUrl\":\"\",\"status\":\"success\"}]",
                            "loop": null,
                            "detailedOutput": [
                                {
                                    "executionId": "98765f43-21ed-09cb-8a76-fedc54321098",
                                    "status": "success",
                                    "startTime": "2021-08-26T17:20:31-07:00",
                                    "endTime": "2021-08-26T17:20:31-07:00",
                                    "failureMessage": "",
                                    "documents": [
                                        {
                                            "name": "",
                                            "filePath": "Sample-1.yaml",
                                            "status": "success",
                                            "description": "",
                                            "startTime": "2021-08-26T17:20:31-07:00",
                                            "endTime": "2021-08-26T17:20:31-07:00",
                                            "failureMessage": "",
                                            "phases": [
                                                {
                                                    "name": "build",
                                                    "status": "success",
                                                    "startTime": "2021-08-26T17:20:31-07:00",
                                                    "endTime": "2021-08-26T17:20:31-07:00",
                                                    "failureMessage": "",
                                                    "steps": [
                                                        {
                                                            "name": "ExecuteBashStep",
                                                            "status": "success",
                                                            "failureMessage": "",
                                                            "timeoutSeconds": 7200,
                                                            "onFailure": "Abort",
                                                            "maxAttempts": 1,
                                                            "action": "ExecuteBash",
                                                            "startTime": "2021-08-26T17:20:31-07:00",
                                                            "endTime": "2021-08-26T17:20:31-07:00",
                                                            "inputs": "[{\"commands\":[\"echo \\\"Hello World!\\\"\"]}]",
                                                            "outputs": "[{\"stdout\":\"Hello World!\"}]",
                                                            "loop": null,
                                                            "detailedOutput": null
                                                        }]
                                                }]
                                        }]
                                }]
                        }]
                
                }]
        }]
}
```

### ExecutePowerShell (Windows)
<a name="action-modules-executepowershell"></a>

El módulo de **ExecutePowerShell**acción permite ejecutar PowerShell scripts con códigos o comandos de shell integrados. Este módulo es compatible con la plataforma Windows y Windows. PowerShell

Todo lo commands/instructions especificado en el bloque de comandos se convierte en un archivo de script (por ejemplo`input.ps1`) y se ejecuta con WindowsPowerShell. El resultado de ejecutar el archivo del intérprete de comandos es el código de salida.

El **ExecutePowerShell**módulo gestiona los reinicios del sistema si el comando shell se cierra con un código de salida de. `3010` Cuando esto ocurre, la aplicación realiza una de las siguientes acciones: 
+ La aplicación entrega el código de salida a la persona que llama si lo ejecuta el Systems Manager Agent. Systems Manager Agent gestiona el reinicio del sistema y ejecuta el mismo paso que lo inició, tal y como se describe en [Reiniciar una instancia gestionada desde scripts](https://docs.aws.amazon.com/systems-manager/latest/userguide/send-commands-reboot.html).
+ La aplicación guarda el `executionstate` actual, configura un activador de reinicio para volver a ejecutar la aplicación y reinicia el sistema.

Tras reiniciar el sistema, la aplicación ejecuta el mismo paso que inició el reinicio. Si necesita esta funcionalidad, debe escribir scripts idempotentes que puedan gestionar múltiples invocaciones del mismo comando del intérprete de comandos.


**Input**  

| Nombre de la clave | Description (Descripción) | Tipo | Obligatorio/a | 
| --- | --- | --- | --- | 
| commands | Contiene una lista de instrucciones o comandos que se deben ejecutar según PowerShell la sintaxis. Se permite el YAML multilínea. | Lista de cadenas | Sí. Debe especificar los `commands` o el `file` no ambos.  | 
| file | Contiene la ruta a un archivo de PowerShell script. PowerShell se ejecutará en este archivo mediante el argumento de la línea de -file comandos. La ruta debe apuntar a un archivo .ps1. | Cadena | Sí. Debe especificar los `commands` o el `file` no ambos.  | 

**Ejemplo de entrada: antes y después de un reinicio**

```
name: ExitCode3010Example
description: This shows how the exit code can be used to restart a system with ExecutePowerShell
schemaVersion: 1.0
phases:
  - name: build
    steps:
      - name: RestartTrigger
        action: ExecutePowerShell
        inputs:
          commands:
            - |
              $rebootIndicator = Join-Path -Path $env:SystemDrive -ChildPath 'reboot-indicator'
              if (Test-Path -Path $rebootIndicator) {
                Write-Host 'The reboot file exists. Deleting it and exiting with success.'
                Remove-Item -Path $rebootIndicator -Force | Out-Null
                [System.Environment]::Exit(0)
              }
              Write-Host 'The reboot file does not exist. Creating it and triggering a restart.'
              New-Item -Path $rebootIndicator -ItemType File | Out-Null
              [System.Environment]::Exit(3010)
```


**Output**  

| Campo | Description (Descripción) | Tipo | 
| --- | --- | --- | 
| stdout | Resultado estándar de la ejecución de comandos. | cadena | 

Si ejecuta un reinicio y devuelve el código de salida `3010` como parte del módulo de acción, la compilación se reanudará en el mismo paso del módulo de acción en el que se inició el reinicio. Si ejecuta un reinicio sin el código de salida, es posible que se produzca un error en el proceso de compilación.

**Ejemplo de resultado: antes del reinicio (primera vez a través del documento)**

```
{
	“stdout”: “The reboot file does not exist. Creating it and triggering a restart."
}
```

**Ejemplo de resultado: después del reinicio (segunda vez a través del documento)**

```
{
	“stdout”: “The reboot file exists. Deleting it and exiting with success."
}
```

## Módulos de descarga y carga de archivos
<a name="action-modules-download-upload"></a>

La siguiente sección contiene detalles sobre los módulos de acción que cargan o descargan archivos.

**Topics**
+ [S3Download (Linux, Windows, macOS)](#action-modules-s3download)
+ [S3Upload (Linux, Windows, macOS)](#action-modules-s3upload)
+ [WebDownload (Linux, Windows, macOS)](#action-modules-webdownload)

### S3Download (Linux, Windows, macOS)
<a name="action-modules-s3download"></a>

Con el módulo de acción `S3Download`, puede descargar un objeto de Amazon S3, o un conjunto de objetos, a un archivo o carpeta local que especifique con la ruta `destination`. Si ya existe algún archivo en la ubicación especificada y el indicador `overwrite` está establecido como true, `S3Download` sobrescribe el archivo.

Su ubicación `source` puede apuntar a un objeto específico en Amazon S3, o puede usar un prefijo de clave con un asterisco como comodín (`*`) para descargar un conjunto de objetos que coincidan con la ruta del prefijo de clave. Al especificar un prefijo de clave en su ubicación `source`, el módulo de acción `S3Download` descarga todo lo que coincida con el prefijo (archivos y carpetas incluidos). Asegúrese de que el prefijo de clave termine con una barra diagonal seguida de un asterisco (`/*`), para descargar todo lo que coincida con el prefijo. Por ejemplo: `s3://my-bucket/my-folder/*`.

Si la acción `S3Download` de un prefijo de clave especificado falla durante una descarga, el contenido de la carpeta no vuelve a su estado anterior al error. La carpeta de destino permanece tal y como estaba en el momento del error.

**Casos de uso admitidos**  
El módulo de acción `S3Download` admite los siguientes casos de uso:
+ El objeto Amazon S3 se descarga en una carpeta local, tal y como se especifica en la ruta de descarga.
+ Los objetos de Amazon S3 (con un prefijo de clave en la ruta del archivo de Amazon S3) se descargan en la carpeta local especificada, que copia de forma recursiva todos los objetos de Amazon S3 que coincidan con el prefijo de la clave en la carpeta local.

**Requisitos de IAM**  
El rol de IAM que asocie al perfil de instancia debe tener permiso para ejecutar el módulo de acción `S3Download`. Las siguientes políticas de IAM se deben adjuntar al rol de IAM asociado al perfil de instancia:
+ **Archivo único**: `s3:GetObject` contra bucket/object (por ejemplo,`arn:aws:s3:::BucketName/*`).
+ **Varios archivos**: `s3:ListBucket` contra bucket/object (por ejemplo,`arn:aws:s3:::BucketName`) y `s3:GetObject` contra bucket/object (por ejemplo,`arn:aws:s3:::BucketName/*`).


**Input**  

|  Key  |  Description (Descripción)  |  Tipo  |  Obligatorio/a  |  Predeterminado  | 
| --- | --- | --- | --- | --- | 
|  `source`  |  El bucket de Amazon S3 que es el origen de la descarga. Puede especificar una ruta a un objeto específico o utilizar un prefijo de clave que termine con una barra diagonal seguida de un asterisco comodín (`/*`), para descargar un conjunto de objetos que coincidan con el prefijo de clave.  |  Cadena  |  Sí  |  N/A  | 
|  `destination`  |  La ruta local en la que se descargan los objetos de Amazon S3. Para descargar un solo archivo, debe especificarse el nombre del archivo como parte de la ruta. Por ejemplo, `/myfolder/package.zip`.  |  Cadena  |  Sí  |  N/A  | 
|  `expectedBucketOwner`  |  ID de la cuenta de propietario esperada del bucket proporcionado en la ruta `source`. Le recomendamos que compruebe la propiedad del bucket de Amazon S3 especificado en la fuente.  |  Cadena  |  No  |  N/A  | 
|  `overwrite`  |  Si se establece como true, si ya existe un archivo con el mismo nombre en la carpeta de destino de la ruta local especificada, el archivo de descarga sobrescribe el archivo local. Si se establece como false, el archivo existente en el sistema local está protegido para que no se sobrescriba y el módulo de acción falla y se produce un error de descarga. Por ejemplo, `Error: S3Download: File already exists and "overwrite" property for "destination" file is set to false. Cannot download.`  |  Booleano  |  No  |  true  | 

**nota**  
En los ejemplos siguientes, la ruta de la carpeta de Windows se puede reemplazar por una ruta de Linux. Por ejemplo, se puede sustituir `C:\myfolder\package.zip` por `/myfolder/package.zip`.

**Ejemplo de entrada: copia de un objeto de Amazon S3 a un archivo local**  
En el siguiente ejemplo, se muestra cómo copiar un objeto de Amazon S3 en un archivo local.

```
  - name: DownloadMyFile
    action: S3Download
    inputs:
      - source: s3://amzn-s3-demo-source-bucket/path/to/package.zip
        destination: C:\myfolder\package.zip
        expectedBucketOwner: 123456789022
        overwrite: false
      - source: s3://amzn-s3-demo-source-bucket/path/to/package.zip
        destination: C:\myfolder\package.zip
        expectedBucketOwner: 123456789022
        overwrite: true
      - source: s3://amzn-s3-demo-source-bucket/path/to/package.zip
        destination: C:\myfolder\package.zip
        expectedBucketOwner: 123456789022
```

**Ejemplo de entrada: copia de todos los objetos de Amazon S3 de un bucket de Amazon S3 con el prefijo de clave a una carpeta local**  
Ejemplo de entrada: copia todos los objetos de Amazon S3 de un bucket de Amazon S3 con el prefijo de clave a una carpeta local. Amazon S3 no tiene el concepto de carpeta, por lo que se copian todos los objetos que coincidan con el prefijo de clave. El número máximo de objetos que se puede descargar es 1000.

```
  - name: MyS3DownloadKeyprefix
    action: S3Download
    maxAttempts: 3
    inputs:
      - source: s3://amzn-s3-demo-source-bucket/path/to/*
        destination: C:\myfolder\
        expectedBucketOwner: 123456789022
        overwrite: false
      - source: s3://amzn-s3-demo-source-bucket/path/to/*
        destination: C:\myfolder\
        expectedBucketOwner: 123456789022
        overwrite: true
      - source: s3://amzn-s3-demo-source-bucket/path/to/*
        destination: C:\myfolder\
        expectedBucketOwner: 123456789022
```

**Output**  
Ninguna.

### S3Upload (Linux, Windows, macOS)
<a name="action-modules-s3upload"></a>

Con el módulo de acción **S3Upload**, puede cargar un archivo desde un archivo o carpeta de origen a una ubicación de Amazon S3. Puede usar un comodín (`*`) en la ruta especificada para su ubicación de origen para cargar todos los archivos cuya ruta coincida con el patrón de comodín.

Si se produce un error en la acción recursiva **S3Upload**, los archivos que ya se hayan cargado permanecerán en el bucket de Amazon S3 de destino.

**Casos de uso admitidos**
+ Archivo local del objeto de Amazon S3.
+ Archivos locales en la carpeta (con comodín) con el prefijo de clave de Amazon S3.
+ Copie la carpeta local (`recurse` debe estar configurado como `true`) al prefijo de clave de Amazon S3.

**Requisitos de IAM**  
El rol de IAM que asocie al perfil de instancia debe tener permiso para ejecutar el módulo de acción `S3Upload`. La siguiente política de IAM debe estar asociada al rol de IAM que está asociado con el perfil de instancia. La política debe conceder permisos `s3:PutObject` al bucket de Amazon S3 de destino. Por ejemplo, `arn:aws:s3:::BucketName/*`).


**Input**  

|  Key  |  Description (Descripción)  |  Tipo  |  Obligatorio/a  |  Predeterminado  | 
| --- | --- | --- | --- | --- | 
|  `source`  |  La ruta local en la que se files/folders origina la fuente. `source` admite un asterisco como comodín (`*`).  |  Cadena  |  Sí  |  N/A  | 
|  `destination`  |  La ruta del bucket de Amazon S3 de destino en el que se cargan las carpetas o archivos de origen.  |  Cadena  |  Sí  |  N/A  | 
|  `recurse`  |  Cuando se establece como `true`, ejecuta **S3Upload** de forma recursiva.  |  Cadena  |  No  |  `false`  | 
|  `expectedBucketOwner`  |  El ID de cuenta del propietario esperado para el bucket de Amazon S3 especificado en la ruta de destino. Le recomendamos que compruebe la propiedad del bucket de Amazon S3 especificado en el destino.  |  Cadena  |  No  |  N/A  | 

**Ejemplo de entrada: copia de un objeto de Amazon S3 a un archivo local**  
En el siguiente ejemplo, se muestra cómo copiar un objeto de Amazon S3 en un archivo local.

```
  - name: MyS3UploadFile
    action: S3Upload
    onFailure: Abort
    maxAttempts: 3
    inputs:
      - source: C:\myfolder\package.zip
        destination: s3://amzn-s3-demo-destination-bucket/path/to/package.zip
        expectedBucketOwner: 123456789022
```

**Ejemplo de entrada: copia de todos los objetos de Amazon S3 de un bucket de Amazon S3 con el prefijo de clave a una carpeta local**  
Ejemplo de entrada: copia todos los objetos de Amazon S3 de un bucket de Amazon S3 con el prefijo de clave a una carpeta local. En este ejemplo no se copian las subcarpetas ni su contenido porque el `recurse` no está especificado y su valor predeterminado es `false`.

```
  - name: MyS3UploadMultipleFiles
    action: S3Upload
    onFailure: Abort
    maxAttempts: 3
    inputs:
      - source: C:\myfolder\*
        destination: s3://amzn-s3-demo-destination-bucket/path/to/
        expectedBucketOwner: 123456789022
```

**Ejemplo de entrada: copiar de forma recursiva todos los archivos y carpetas de una carpeta local en un bucket de Amazon S3**  
El siguiente ejemplo muestra como copiar todos los archivos de forma recursiva de una carpeta local a un bucket de Amazon S3 con el prefijo de clave.

```
  - name: MyS3UploadFolder
    action: S3Upload
    onFailure: Abort
    maxAttempts: 3
    inputs:
      - source: C:\myfolder\*
        destination: s3://amzn-s3-demo-destination-bucket/path/to/
        recurse: true
        expectedBucketOwner: 123456789022
```

**Output**  
Ninguna.

### WebDownload (Linux, Windows, macOS)
<a name="action-modules-webdownload"></a>

El módulo de **WebDownload**acción le permite descargar archivos y recursos desde una ubicación remota a través del HTTP/HTTPS protocolo (*se recomienda HTTPS*). No hay límites en cuanto al número ni al tamaño de las descargas. Este módulo gestiona la lógica de reintento y retroceso exponencial. 

A cada operación de descarga se le asigna un máximo de 5 intentos para que se realice correctamente según las entradas del usuario. Estos intentos difieren de los especificados en el campo `maxAttempts` del documento `steps` y están relacionados con errores en los módulos de acción.

Este módulo de acción gestiona los redireccionamientos de forma implícita. Todos los códigos de estado HTTP, excepto por `200`, generan un error.


**Input**  

| Nombre de la clave | Description (Descripción) | Tipo | Obligatorio/a | Predeterminado | 
| --- | --- | --- | --- | --- | 
| source | La HTTP/HTTPS URL válida (se recomienda HTTPS), que sigue el estándar RFC 3986. Se permiten expresiones de encadenamiento. | Cadena |  Sí  | N/A | 
| destination | Ruta absoluta o relativa de archivos o carpetas del sistema local. Las rutas de las carpetas deben terminar en /. Si no terminan en /, se tratarán como rutas de archivos. El módulo crea cualquier archivo o carpeta necesarios para que las descargas se realicen correctamente. Se permiten expresiones de encadenamiento. | Cadena | Sí | N/A | 
| overwrite | Cuando está activado, sobrescribe cualquier archivo existente en el sistema local con el archivo o recurso descargado. Si no está activado, los archivos existentes en el sistema local no se sobrescriben y el módulo de acción produce un error. Cuando la sobreescritura está habilitada y se especifican la suma de verificación y el algoritmo, el módulo de acción de descarga el archivo solo si la suma de verificación y la almohadilla de los archivos preexistentes no coinciden.  | Booleano | No | true | 
| checksum | Al especificar la suma de comprobación, se compara con la almohadilla del archivo descargado que se genera con el algoritmo suministrado. Para habilitar la verificación de archivos, se deben proporcionar tanto la suma de verificación como el algoritmo. Se permiten expresiones de encadenamiento.  | Cadena | No | N/A | 
| algorithm | El algoritmo utilizado para calcular la suma de control. Las opciones sonMD5, SHA1 SHA256, y. SHA512 Para habilitar la verificación de archivos, se deben proporcionar tanto la suma de verificación como el algoritmo. Se permiten expresiones de encadenamiento.  | Cadena | No | N/A | 
| ignoreCertificateErrors | La validación del certificado SSL se ignora cuando está habilitada. | Booleano | No | false | 


**Output**  

| Nombre de la clave | Description (Descripción) | Tipo | 
| --- | --- | --- | 
| destination | Cadena de nueva línea delimitada por caracteres que especifica la ruta de destino en la que se almacenan los archivos o recursos descargados. | Cadena | 

**Ejemplo de entrada: descarga del archivo remoto al destino local**

```
  - name: DownloadRemoteFile
    action: WebDownload
    maxAttempts: 3
    inputs:
      - source: https://testdomain/path/to/java14.zip
        destination: C:\testfolder\package.zip
```

**Salida:**

```
{
	"destination": "C:\\testfolder\\package.zip"
}
```

**Ejemplo de entrada: descarga de más de un archivo remoto a más de un destino local**

```
  - name: DownloadRemoteFiles
    action: WebDownload
    maxAttempts: 3
    inputs:
      - source: https://testdomain/path/to/java14.zip
        destination: /tmp/java14_renamed.zip
      - source: https://testdomain/path/to/java14.zip
        destination: /tmp/create_new_folder_and_add_java14_as_zip/
```

**Salida:**

```
{
	"destination": "/tmp/create_new_folder/java14_renamed.zip\n/tmp/create_new_folder_and_add_java14_as_zip/java14.zip"
}
```

**Ejemplo de entrada: descarga de un archivo remoto sin sobrescribir el destino local y descargar otro archivo remoto con verificación de archivos**

```
  - name: DownloadRemoteMultipleProperties
    action: WebDownload
    maxAttempts: 3
    inputs:
      - source: https://testdomain/path/to/java14.zip
        destination: C:\create_new_folder\java14_renamed.zip
        overwrite: false
      - source: https://testdomain/path/to/java14.zip
        destination: C:\create_new_folder_and_add_java14_as_zip\
        checksum: ac68bbf921d953d1cfab916cb6120864
        algorithm: MD5
        overwrite: true
```

**Salida:**

```
{
	"destination": "C:\\create_new_folder\\java14_renamed.zip\nC:\\create_new_folder_and_add_java14_as_zip\\java14.zip"
}
```

**Ejemplo de entrada: descarga de un archivo remoto e ignore la validación de la certificación SSL**

```
  - name: DownloadRemoteIgnoreValidation
    action: WebDownload
    maxAttempts: 3
    inputs:
      - source: https://www.bad-ssl.com/resource
        destination: /tmp/downloads/
        ignoreCertificateErrors: true
```

**Salida:**

```
{
	"destination": "/tmp/downloads/resource"
}
```

## Módulos de operaciones del sistema de archivos
<a name="action-modules-file-system-operations"></a>

La siguiente sección contiene detalles sobre los módulos de acción que realizan operaciones en el sistema de archivos.

**Topics**
+ [AppendFile (Linux, Windows, macOS)](#action-modules-appendfile)
+ [CopyFile (Linux, Windows, macOS)](#action-modules-copyfile)
+ [CopyFolder (Linux, Windows, macOS)](#action-modules-copyfolder)
+ [CreateFile (Linux, Windows, macOS)](#action-modules-createfile)
+ [CreateFolder (Linux, Windows, macOS)](#action-modules-createfolder)
+ [CreateSymlink (Linux, Windows, macOS)](#action-modules-createsymlink)
+ [DeleteFile (Linux, Windows, macOS)](#action-modules-deletefile)
+ [DeleteFolder (Linux, Windows, macOS)](#action-modules-deletefolder)
+ [ListFiles (Linux, Windows, macOS)](#action-modules-listfiles)
+ [MoveFile (Linux, Windows, macOS)](#action-modules-movefile)
+ [MoveFolder (Linux, Windows, macOS)](#action-modules-movefolder)
+ [ReadFile (Linux, Windows, macOS)](#action-modules-readfile)
+ [SetFileEncoding (Linux, Windows, macOS)](#action-modules-setfileencoding)
+ [SetFileOwner (Linux, Windows, macOS)](#action-modules-setfileowner)
+ [SetFolderOwner (Linux, Windows, macOS)](#action-modules-setfolderowner)
+ [SetFilePermissions (Linux, Windows, macOS)](#action-modules-setfilepermissions)
+ [SetFolderPermissions (Linux, Windows, macOS)](#action-modules-setfolderpermissions)

### AppendFile (Linux, Windows, macOS)
<a name="action-modules-appendfile"></a>

El módulo de **AppendFile**acción añade contenido específico al contenido preexistente de un archivo.

Si el valor de codificación del archivo es diferente del valor de codificación (`utf-8`) predeterminado, puede especificar el valor de codificación del archivo mediante la opción `encoding`. De forma predeterminada, se supone que `utf-16` y `utf-32` utilizan la codificación little-endian. 

El módulo de acción devuelve un error cuando ocurre lo siguiente:
+ El archivo especificado no existe en tiempo de ejecución.
+ No tiene permisos de escritura para modificar el contenido del archivo.
+ El módulo detecta un error durante la operación del archivo.


**Input**  

| Nombre de la clave | Description (Descripción) | Tipo | Obligatorio/a | Predeterminado | Valores aceptables | Compatible con todas las plataformas | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | La ruta del archivo. | Cadena | Sí | N/A | N/A | Sí | 
| content | El contenido que se va a adjuntar al archivo. | Cadena | No | Cadena vacía | N/A | Sí | 
| encoding | El estándar de la codificación. | Cadena | No | utf8 | utf8, utf-8, utf16,utf-16, utf16-LE, utf-16-LE utf16-BE, utf-16-BE, utf32, utf-32, utf32-LE,utf-32-LE, utf32-BE, y  utf-32-BE. El valor de la opción de codificación no distingue entre mayúsculas y minúsculas. | Sí | 

**Ejemplo de entrada: añadir un archivo sin codificar (Linux)**

```
  - name: AppendingFileWithOutEncodingLinux
    action: AppendFile
    inputs:
      - path: ./Sample.txt
        content: "The string to be appended to the file"
```

**Ejemplo de entrada: añadir un archivo sin codificar (Windows)**

```
  - name: AppendingFileWithOutEncodingWindows
    action: AppendFile
    inputs:
      - path: C:\MyFolder\MyFile.txt
        content: "The string to be appended to the file"
```

**Ejemplo de entrada: añadir un archivo con codificación (Linux)**

```
  - name: AppendingFileWithEncodingLinux
    action: AppendFile
    inputs:
      - path: /FolderName/SampleFile.txt
        content: "The string to be appended to the file"
        encoding: UTF-32
```

**Ejemplo de entrada: añadir un archivo con codificación (Windows)**

```
  - name: AppendingFileWithEncodingWindows
    action: AppendFile
    inputs:
      - path: C:\MyFolderName\SampleFile.txt
        content: "The string to be appended to the file"
        encoding: UTF-32
```

**Ejemplo de entrada: añadir un archivo con una cadena vacía (Linux)**

```
  - name: AppendingEmptyStringLinux
    action: AppendFile
    inputs:
      - path: /FolderName/SampleFile.txt
```

**Ejemplo de entrada: añadir un archivo con una cadena vacía (Windows)**

```
  - name: AppendingEmptyStringWindows
    action: AppendFile
    inputs:
      - path: C:\MyFolderName\SampleFile.txt
```

**Output**  
Ninguna.

### CopyFile (Linux, Windows, macOS)
<a name="action-modules-copyfile"></a>

El módulo de **CopyFile**acción copia los archivos de la fuente especificada al destino especificado. De forma predeterminada, el módulo crea de forma recursiva la carpeta de destino si no existe en tiempo de ejecución.

Si ya existe un archivo con el nombre especificado en la carpeta especificada, el módulo de acción, de forma predeterminada, sobrescribe el archivo existente. Puede anular este comportamiento al configurar la opción sobrescribir como `false`. Cuando la opción de sobreescritura esté establecida como `false` y ya haya un archivo en la ubicación especificada con el nombre especificado, el módulo de acción devolverá un error. Esta opción funciona igual que el comando de Linux `cp`, que se sobrescribe de forma predeterminada.

El nombre del archivo fuente puede incluir un comodín (`*`). Los caracteres comodín solo se aceptan después del último separador de ruta del archivo (`/` o `\`). Si se incluyen caracteres comodín en el nombre del archivo de origen, todos los archivos que coincidan con el comodín se copian en la carpeta de destino. Si desea mover más de un archivo con un carácter comodín, la entrada de la opción `destination` debe terminar con un separador de rutas de archivo (`/` o `\`), lo que indica que la entrada de destino es una carpeta.

Si el nombre del archivo de destino es diferente del nombre del archivo de origen, puede especificar el nombre del archivo de destino mediante la opción `destination`. Si no especifica un nombre de archivo de destino, se utilizará el nombre del archivo de origen para crear el archivo de destino. Cualquier texto que siga al separador (`/` o `\`) de la última ruta del archivo se trata como el nombre del archivo. Si desea utilizar el mismo nombre de archivo que el archivo de origen, la entrada de la opción `destination` debe terminar con un separador de rutas de archivo (`/` o `\`). 

El módulo de acción devuelve un error cuando ocurre lo siguiente:
+ No tiene permiso para crear un archivo en la carpeta especificada.
+ Los archivos de origen no existen en tiempo de ejecución.
+ Ya existe una carpeta con el nombre de archivo especificado y la opción `overwrite` está configurada como `false`.
+ El módulo de acción detecta un error al realizar la operación.


**Input**  

| Nombre de la clave | Description (Descripción) | Tipo | Obligatorio/a | Predeterminado | Valores aceptables | Compatible con todas las plataformas | 
| --- | --- | --- | --- | --- | --- | --- | 
| source | La ruta del archivo de origen. | Cadena | Sí | N/A | N/A | Sí | 
| destination | La ruta del archivo de destino. | Cadena | Sí | N/A | N/A | Sí | 
| overwrite | Si se establece como falso, los archivos de destino no se reemplazarán cuando ya haya un archivo en la ubicación especificada con el nombre especificado. | Booleano | No | true | N/A | Sí | 

**Ejemplo de entrada: copiar un archivo (Linux)**

```
  - name: CopyingAFileLinux
    action: CopyFile
    inputs:
      - source: /Sample/MyFolder/Sample.txt
        destination: /MyFolder/destinationFile.txt
```

**Ejemplo de entrada: copiar un archivo (Windows)**

```
  - name: CopyingAFileWindows
    action: CopyFile
    inputs:
      - source: C:\MyFolder\Sample.txt
        destination: C:\MyFolder\destinationFile.txt
```

**Ejemplo de entrada: copia un archivo con el nombre del archivo fuente (Linux)**

```
  - name: CopyingFileWithSourceFileNameLinux
    action: CopyFile
    inputs:
      - source: /Sample/MyFolder/Sample.txt
        destination: /MyFolder/
```

**Ejemplo de entrada: copia un archivo con el nombre del archivo fuente (Windows)**

```
  - name: CopyingFileWithSourceFileNameWindows
    action: CopyFile
    inputs:
      - source: C:\Sample\MyFolder\Sample.txt
        destination: C:\MyFolder\
```

**Ejemplo de entrada: copia un archivo con el carácter comodín (Linux)**

```
  - name: CopyingFilesWithWildCardLinux
    action: CopyFile
    inputs:
      - source: /Sample/MyFolder/Sample*
        destination: /MyFolder/
```

**Ejemplo de entrada: copia un archivo con el carácter comodín (Windows)**

```
  - name: CopyingFilesWithWildCardWindows
    action: CopyFile
    inputs:
      - source: C:\Sample\MyFolder\Sample*
        destination: C:\MyFolder\
```

**Ejemplo de entrada: copiar un archivo sin sobrescribirlo (Linux)**

```
  - name: CopyingFilesWithoutOverwriteLinux
    action: CopyFile
    inputs:
      - source: /Sample/MyFolder/Sample.txt
        destination: /MyFolder/destinationFile.txt
        overwrite: false
```

**Ejemplo de entrada: copiar un archivo sin sobrescribirlo (Windows)**

```
  - name: CopyingFilesWithoutOverwriteWindows
    action: CopyFile
    inputs:
      - source: C:\Sample\MyFolder\Sample.txt
        destination: C:\MyFolder\destinationFile.txt
        overwrite: false
```

**Output**  
Ninguna.

### CopyFolder (Linux, Windows, macOS)
<a name="action-modules-copyfolder"></a>

El módulo de **CopyFolder**acción copia una carpeta de la fuente especificada al destino especificado. La entrada de la opción `source` es la carpeta que se va a copiar y la entrada de la opción `destination` es la carpeta en la que se copia el contenido de la carpeta de origen. De forma predeterminada, el módulo crea de forma recursiva la carpeta de destino si no existe en tiempo de ejecución.

Si ya existe una carpeta con el nombre especificado en la carpeta especificada, el módulo de acción, de forma predeterminada, sobrescribe la carpeta existente. Puede anular este comportamiento al configurar la opción sobrescribir como `false`. Cuando la opción de sobreescritura esté establecida como `false` y ya haya una carpeta en la ubicación especificada con el nombre especificado, el módulo de acción devolverá un error.

El nombre de la carpeta fuente puede incluir un comodín (`*`). Los caracteres comodín solo se aceptan después del último separador de ruta del archivo (`/` o `\`). Si se incluyen caracteres comodín en el nombre de la carpeta de origen, todas las carpetas que coincidan con el comodín se copian en la carpeta de destino. Si desea mover más de una carpeta utilizando un carácter comodín, la entrada de la opción `destination` debe terminar con un separador de rutas de archivo (`/` o `\`), lo que indica que la entrada de destino es una carpeta.

Si el nombre de la carpeta de destino es diferente del nombre de la carpeta de origen, puede especificar el nombre de la carpeta de destino mediante la opción `destination`. Si no especifica un nombre de carpeta de destino, se utilizará el nombre de la carpeta de origen para crear la carpeta de destino. Cualquier texto que siga al separador (`/` o `\`) de la última ruta del archivo se trata como el nombre de la carpeta. Si desea utilizar el mismo nombre de carpeta que la carpeta de origen, la entrada de la opción `destination` debe terminar con un separador de rutas de archivo (`/` o `\`). 

El módulo de acción devuelve un error cuando ocurre lo siguiente:
+ No tiene permiso para crear una carpeta en la carpeta especificada.
+ Las carpetas de origen no existen en tiempo de ejecución.
+ Ya existe una carpeta con el nombre de carpeta especificado y la opción `overwrite` está configurada como `false`.
+ El módulo de acción detecta un error al realizar la operación.


**Input**  

| Nombre de la clave | Description (Descripción) | Tipo | Obligatorio/a | Predeterminado | Valores aceptables | Compatible con todas las plataformas | 
| --- | --- | --- | --- | --- | --- | --- | 
| source | La ruta de la carpeta de origen. | Cadena | Sí | N/A | N/A | Sí | 
| destination | La ruta de la carpeta de destino. | Cadena | Sí | N/A | N/A | Sí | 
| overwrite | Si se establece como falso, las carpetas de destino no se reemplazarán cuando ya haya una carpeta en la ubicación especificada con el nombre especificado. | Booleano | No | true | N/A | Sí | 

**Ejemplo de entrada: copiar una carpeta (Linux)**

```
  - name: CopyingAFolderLinux
    action: CopyFolder
    inputs:
      - source: /Sample/MyFolder/SampleFolder
        destination: /MyFolder/destinationFolder
```

**Ejemplo de entrada: copiar una carpeta (Windows)**

```
  - name: CopyingAFolderWindows
    action: CopyFolder
    inputs:
      - source: C:\Sample\MyFolder\SampleFolder
        destination: C:\MyFolder\destinationFolder
```

**Ejemplo de entrada: copiar una carpeta con el nombre de la carpeta de origen (Linux)**

```
  - name: CopyingFolderSourceFolderNameLinux
    action: CopyFolder
    inputs:
      - source: /Sample/MyFolder/SourceFolder
        destination: /MyFolder/
```

**Ejemplo de entrada: copiar una carpeta con el nombre de la carpeta de origen (Windows)**

```
  - name: CopyingFolderSourceFolderNameWindows
    action: CopyFolder
    inputs:
      - source: C:\Sample\MyFolder\SampleFolder
        destination: C:\MyFolder\
```

**Ejemplo de entrada: copiar una carpeta con el carácter comodín (Linux)**

```
  - name: CopyingFoldersWithWildCardLinux
    action: CopyFolder
    inputs:
      - source: /Sample/MyFolder/Sample*
        destination: /MyFolder/
```

**Ejemplo de entrada: copiar una carpeta con el carácter comodín (Windows)**

```
  - name: CopyingFoldersWithWildCardWindows
    action: CopyFolder
    inputs:
      - source: C:\Sample\MyFolder\Sample*
        destination: C:\MyFolder\
```

**Ejemplo de entrada: copiar una carpeta sin sobrescribirla (Linux)**

```
  - name: CopyingFoldersWithoutOverwriteLinux
    action: CopyFolder
    inputs:
      - source: /Sample/MyFolder/SourceFolder
        destination: /MyFolder/destinationFolder
        overwrite: false
```

**Ejemplo de entrada: copiar una carpeta sin sobrescribirla (Windows)**

```
  - name: CopyingFoldersWithoutOverwrite
    action: CopyFolder
    inputs:
      - source: C:\Sample\MyFolder\SourceFolder
        destination: C:\MyFolder\destinationFolder
        overwrite: false
```

**Output**  
Ninguna.

### CreateFile (Linux, Windows, macOS)
<a name="action-modules-createfile"></a>

El módulo de **CreateFile**acción crea un archivo en una ubicación específica. De forma predeterminada, si es necesario, el módulo también crea de forma recursiva las carpetas principales.

Si el archivo ya existe en la carpeta especificada, el módulo de acción, de forma predeterminada, trunca o sobrescribe el archivo existente. Puede anular este comportamiento al configurar la opción sobrescribir como `false`. Cuando la opción de sobreescritura esté establecida como `false` y ya haya un archivo en la ubicación especificada con el nombre especificado, el módulo de acción devolverá un error.

Si el valor de codificación del archivo es diferente del valor de codificación (`utf-8`) predeterminado, puede especificar el valor de codificación del archivo mediante la opción `encoding`. De forma predeterminada, se supone que `utf-16` y `utf-32` utilizan la codificación little-endian. 

`owner`, `group`, y `permissions` son entradas opcionales. La entrada para `permissions` debe ser un valor de cadena. Los archivos se crean con los valores predeterminados cuando no se proporcionan. Estas opciones no son compatibles con las plataformas Windows. Este módulo de acción valida y devuelve un error si `owner`, `group`, y `permissions` se utilizan en las plataformas Windows.

Este módulo de acción puede crear un archivo con los permisos definidos por el valor `umask` predeterminado del sistema operativo. Debe establecer el valor `umask` si quiere anular el valor predeterminado.

El módulo de acción devuelve un error cuando ocurre lo siguiente:
+ No tiene permiso para crear un archivo o una carpeta en la carpeta especificada.
+ El módulo de acción detecta un error al realizar la operación.


**Input**  

| Nombre de la clave | Description (Descripción) | Tipo | Obligatorio/a | Predeterminado | Valores aceptables | Compatible con todas las plataformas | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | La ruta del archivo. | Cadena | Sí | N/A | N/A | Sí | 
| content | El contenido de texto del archivo. | Cadena | No | N/A | N/A | Sí | 
| encoding | El estándar de la codificación. | Cadena | No | utf8 | utf8, utf-8, utf16,utf-16, utf16-LE, utf-16-LE utf16-BE, utf-16-BE, utf32, utf-32, utf32-LE,utf-32-LE, utf32-BE, y  utf-32-BE. El valor de la opción de codificación no distingue entre mayúsculas y minúsculas. | Sí | 
| owner | El nombre o el ID de usuario. | Cadena | No | N/A | N/A | No es compatible con Windows. | 
| group | El nombre o el ID del grupo. | Cadena | No | El usuario actual. | N/A | No es compatible con Windows. | 
| permissions | Permisos de archivos. | Cadena | No | 0666 | N/A | No es compatible con Windows. | 
| overwrite | Si el nombre del archivo especificado ya existe, si se establece este valor como false se impide que el archivo se trunque o sobrescriba de forma predeterminada. | Booleano | No | true | N/A | Sí | 

**Ejemplo de entrada: crear un archivo sin sobrescribirlo (Linux)**

```
  - name: CreatingFileWithoutOverwriteLinux
    action: CreateFile
    inputs:
      - path: /home/UserName/Sample.txt
        content: The text content of the sample file.
        overwrite: false
```

**Ejemplo de entrada: crear un archivo sin sobrescribirlo (Windows)**

```
  - name: CreatingFileWithoutOverwriteWindows
    action: CreateFile
    inputs:
      - path: C:\Temp\Sample.txt
        content: The text content of the sample file.
        overwrite: false
```

**Ejemplo de entrada: creación de un archivo con las propiedades del archivo**

```
  - name: CreatingFileWithFileProperties
    action: CreateFile
    inputs:
      - path: SampleFolder/Sample.txt
        content: The text content of the sample file.
        encoding: UTF-16
        owner: Ubuntu
        group: UbuntuGroup
        permissions: 0777
     - path: SampleFolder/SampleFile.txt
        permissions: 755
      - path: SampleFolder/TextFile.txt
        encoding: UTF-16
        owner: root
        group: rootUserGroup
```

**Ejemplo de entrada: creación de un archivo sin las propiedades de archivo**

```
  - name: CreatingFileWithoutFileProperties
    action: CreateFile
    inputs:
      - path: ./Sample.txt
      - path: Sample1.txt
```

**Ejemplo de entrada: creación de un archivo vacío para omitir una sección del script de limpieza de Linux**

```
  - name: CreateSkipCleanupfile
    action: CreateFile
    inputs:
      - path: <skip section file name>
```

Para obtener más información, consulte [Anule el script de limpieza de Linux.](security-best-practices.md#override-linux-cleanup-script).

**Output**  
Ninguna.

### CreateFolder (Linux, Windows, macOS)
<a name="action-modules-createfolder"></a>

El módulo de **CreateFolder**acción crea una carpeta en una ubicación específica. De forma predeterminada, si es necesario, el módulo también crea de forma recursiva las carpetas principales.

Si la carpeta ya existe en la carpeta especificada, el módulo de acción, de forma predeterminada, trunca o sobrescribe la carpeta existente. Puede anular este comportamiento al configurar la opción sobrescribir como `false`. Cuando la opción de sobreescritura esté establecida como `false` y ya haya una carpeta en la ubicación especificada con el nombre especificado, el módulo de acción devolverá un error.

`owner`, `group`, y `permissions` son entradas opcionales. La entrada para `permissions` debe ser un valor de cadena. Estas opciones no son compatibles con las plataformas Windows. Este módulo de acción valida y devuelve un error si `owner`, `group`, y `permissions` se utilizan en las plataformas Windows.

Este módulo de acción puede crear una carpeta con los permisos definidos por el valor predeterminado `umask` del sistema operativo. Debe establecer el valor `umask` si quiere anular el valor predeterminado.

El módulo de acción devuelve un error cuando ocurre lo siguiente:
+ No tiene permiso para crear una carpeta en la ubicación especificada.
+ El módulo de acción detecta un error al realizar la operación.


**Input**  

| Nombre de la clave | Description (Descripción) | Tipo | Obligatorio/a | Predeterminado | Valores aceptables | Compatible con todas las plataformas | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | La ruta de la carpeta. | Cadena | Sí | N/A | N/A | Sí | 
| owner | El nombre o el ID de usuario. | Cadena | No | El usuario actual. | N/A | No es compatible con Windows. | 
| group | El nombre o el ID del grupo. | Cadena | No | El grupo del usuario actual. | N/A | No es compatible con Windows. | 
| permissions | Permisos para carpetas. | Cadena | No | 0777 | N/A | No es compatible con Windows. | 
| overwrite | Si el nombre del archivo especificado ya existe, si se establece este valor como false se impide que el archivo se trunque o sobrescriba de forma predeterminada. | Booleano | No | true | N/A | Sí | 

**Ejemplo de entrada: crear una carpeta (Linux)**

```
  - name: CreatingFolderLinux
    action: CreateFolder
    inputs:
      - path: /Sample/MyFolder/
```

**Ejemplo de entrada: crear una carpeta (Windows)**

```
  - name: CreatingFolderWindows
    action: CreateFolder
    inputs:
      - path: C:\MyFolder
```

**Ejemplo de entrada: creación de una carpeta especificando las propiedades de la carpeta**

```
  - name: CreatingFolderWithFolderProperties
    action: CreateFolder
    inputs:
      - path: /Sample/MyFolder/Sample/
        owner: SampleOwnerName
        group: SampleGroupName
        permissions: 0777
      - path: /Sample/MyFolder/SampleFoler/
        permissions: 777
```

**Ejemplo de entrada: cree una carpeta que sobrescriba la carpeta existente, si la hay.**

```
  - name: CreatingFolderWithOverwrite
    action: CreateFolder
    inputs:
      - path: /Sample/MyFolder/Sample/
        overwrite: true
```

**Output**  
Ninguna.

### CreateSymlink (Linux, Windows, macOS)
<a name="action-modules-createsymlink"></a>

El módulo de **CreateSymlink**acción crea enlaces simbólicos o archivos que contienen una referencia a otro archivo. Este módulo no es compatible con las plataformas Windows. 

La entrada de las opciones `path` y `target` puede ser una ruta absoluta o relativa. Si la entrada de la opción `path` es una ruta relativa, se sustituye por la ruta absoluta cuando se crea el enlace.

De forma predeterminada, cuando ya existe un enlace con el nombre especificado en la carpeta especificada, el módulo de acción devuelve un error. Puede anular este comportamiento al configurar la opción `force` como `true`. Si la opción `force` se establece como `true`, el módulo sobrescribirá el enlace existente.

Si no existe una carpeta principal, el módulo de acción crea la carpeta de forma recursiva, de forma predeterminada.

El módulo de acción devuelve un error cuando ocurre lo siguiente:
+ El archivo de destino no existe en tiempo de ejecución.
+ Ya existe un archivo de enlace no simbólico con el nombre especificado.
+ El módulo de acción detecta un error al realizar la operación.


**Input**  

| Nombre de la clave | Description (Descripción) | Tipo | Obligatorio/a | Predeterminado | Valores aceptables | Compatible con todas las plataformas | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | La ruta del archivo. | Cadena | Sí | N/A | N/A | No es compatible con Windows. | 
| target | La ruta del archivo de destino al que apunta el enlace simbólico. | Cadena | Sí | N/A | N/A | No es compatible con Windows. | 
| force | Fuerza la creación de un enlace cuando ya existe un enlace con el mismo nombre. | Booleano | No | false | N/A | No es compatible con Windows. | 

**Ejemplo de entrada: creación de un enlace simbólico que obligue a crear un enlace**

```
  - name: CreatingSymbolicLinkWithForce
    action: CreateSymlink
    inputs:
      - path: /Folder2/Symboliclink.txt
        target: /Folder/Sample.txt
        force: true
```

**Ejemplo de entrada: creación de un enlace simbólico que no obligue a crear un enlace**

```
  - name: CreatingSymbolicLinkWithOutForce
    action: CreateSymlink
    inputs:
      - path: Symboliclink.txt
        target: /Folder/Sample.txt
```

**Output**  
Ninguna.

### DeleteFile (Linux, Windows, macOS)
<a name="action-modules-deletefile"></a>

El módulo de **DeleteFile**acción elimina uno o varios archivos en una ubicación específica.

La entrada de `path` debe ser una ruta de archivo válida o una ruta de archivo con un carácter comodín (`*`) en el nombre del archivo. Si se especifican caracteres comodín en el nombre del archivo, se eliminarán todos los archivos de la misma carpeta que coincidan con el comodín. 

El módulo de acción devuelve un error cuando ocurre lo siguiente:
+ No tiene permiso para realizar la operación de eliminación.
+ El módulo de acción detecta un error al realizar la operación.


**Input**  

| Nombre de la clave | Description (Descripción) | Tipo | Obligatorio/a | Predeterminado | Valores aceptables | Compatible con todas las plataformas | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | La ruta del archivo. | Cadena | Sí | N/A | N/A | Sí | 

**Ejemplo de entrada: eliminación de un solo archivo (Linux)**

```
  - name: DeletingSingleFileLinux
    action: DeleteFile
    inputs:
      - path: /SampleFolder/MyFolder/Sample.txt
```

**Ejemplo de entrada: eliminación de un solo archivo (Windows)**

```
  - name: DeletingSingleFileWindows
    action: DeleteFile
    inputs:
      - path: C:\SampleFolder\MyFolder\Sample.txt
```

**Ejemplo de entrada: eliminación de un archivo que termine en “log” (Linux)**

```
  - name: DeletingFileEndingWithLogLinux
    action: DeleteFile
    inputs:
      - path: /SampleFolder/MyFolder/*log
```

**Ejemplo de entrada: eliminación de un archivo que termine en “log” (Windows)**

```
  - name: DeletingFileEndingWithLogWindows
    action: DeleteFile
    inputs:
      - path: C:\SampleFolder\MyFolder\*log
```

**Ejemplo de entrada: eliminación de todos los archivos de una carpeta específica (Linux)**

```
  - name: DeletingAllFilesInAFolderLinux
    action: DeleteFile
    inputs:
      - path: /SampleFolder/MyFolder/*
```

**Ejemplo de entrada: eliminación de todos los archivos de una carpeta específica (Windows)**

```
  - name: DeletingAllFilesInAFolderWindows
    action: DeleteFile
    inputs:
      - path: C:\SampleFolder\MyFolder\*
```

**Output**  
Ninguna.

### DeleteFolder (Linux, Windows, macOS)
<a name="action-modules-deletefolder"></a>

El módulo de **DeleteFolder**acción elimina las carpetas.

Si la carpeta no está vacía, debe configurar la opción `force` como `true` para eliminar la carpeta y su contenido. Si no establece la `force` opción como `true` y la carpeta que intenta eliminar no está vacía, el módulo de acción mostrará un error. El valor predeterminado de la opción `force` es `false`.

El módulo de acción devuelve un error cuando ocurre lo siguiente:
+ No tiene permiso para realizar la operación de eliminación.
+ El módulo de acción detecta un error al realizar la operación.


**Input**  

| Nombre de la clave | Description (Descripción) | Tipo | Obligatorio/a | Predeterminado | Valores aceptables | Compatible con todas las plataformas | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | La ruta de la carpeta. | Cadena | Sí | N/A | N/A | Sí | 
| force | Elimina la carpeta esté vacía o no. | Booleano | No | false | N/A | Sí | 

**Ejemplo de entrada: elimine una carpeta que no esté vacía mediante la opción `force` (Linux)** 

```
  - name: DeletingFolderWithForceOptionLinux
    action: DeleteFolder
    inputs:
      - path: /Sample/MyFolder/Sample/
        force: true
```

**Ejemplo de entrada: elimine una carpeta que no esté vacía mediante la opción `force` (Windows)** 

```
  - name: DeletingFolderWithForceOptionWindows
    action: DeleteFolder
    inputs:
      - path: C:\Sample\MyFolder\Sample\
        force: true
```

**Ejemplo de entrada: eliminación de una carpeta (Linux)** 

```
  - name: DeletingFolderWithOutForceLinux
    action: DeleteFolder
    inputs:
      - path: /Sample/MyFolder/Sample/
```

**Ejemplo de entrada: eliminación de una carpeta (Windows)** 

```
  - name: DeletingFolderWithOutForce
    action: DeleteFolder
    inputs:
      - path: C:\Sample\MyFolder\Sample\
```

**Output**  
Ninguna.

### ListFiles (Linux, Windows, macOS)
<a name="action-modules-listfiles"></a>

El módulo de **ListFiles**acción muestra los archivos de una carpeta específica. Cuando la opción recursiva está establecida como `true`, muestra los archivos en subcarpetas. De forma predeterminada, este módulo no muestra los archivos de las subcarpetas.

Para enumerar todos los archivos con nombres que coincidan con un patrón específico, utilice la opción `fileNamePattern` para proporcionar el patrón. La opción `fileNamePattern` acepta el valor comodín (`*`). Cuando se proporciona el `fileNamePattern`, se devuelven todos los archivos que coincidan con el formato de nombre de archivo especificado. 

El módulo de acción devuelve un error cuando ocurre lo siguiente:
+ La carpeta especificada no existe en tiempo de ejecución.
+ No tiene permiso para crear un archivo o una carpeta en la carpeta especificada.
+ El módulo de acción detecta un error al realizar la operación.


**Input**  

| Nombre de la clave | Description (Descripción) | Tipo | Obligatorio/a | Predeterminado | Valores aceptables | Compatible con todas las plataformas | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | La ruta de la carpeta. | Cadena | Sí | N/A | N/A | Sí | 
| fileNamePattern | El patrón que debe coincidir para mostrar todos los archivos con nombres que coincidan con el patrón. | Cadena | No | N/A | N/A | Sí | 
| recursive | Muestra los archivos de la carpeta de forma recursiva. | Booleano | No | false | N/A | Sí | 

**Ejemplo de entrada: lista los archivos de la carpeta especificada (Linux)**

```
  - name: ListingFilesInSampleFolderLinux
    action: ListFiles
    inputs:
      - path: /Sample/MyFolder/Sample
```

**Ejemplo de entrada: lista los archivos de la carpeta especificada (Windows)**

```
  - name: ListingFilesInSampleFolderWindows
    action: ListFiles
    inputs:
      - path: C:\Sample\MyFolder\Sample
```

**Ejemplo de entrada: lista los archivos que terminan en “log” (Linux)**

```
  - name: ListingFilesWithEndingWithLogLinux
    action: ListFiles
    inputs:
      - path: /Sample/MyFolder/
        fileNamePattern: *log
```

**Ejemplo de entrada: lista los archivos que terminan en “log” (Windows)**

```
  - name: ListingFilesWithEndingWithLogWindows
    action: ListFiles
    inputs:
      - path: C:\Sample\MyFolder\
        fileNamePattern: *log
```

**Ejemplo de entrada: lista los archivos de forma recursiva**

```
  - name: ListingFilesRecursively
    action: ListFiles
    inputs:
      - path: /Sample/MyFolder/
        recursive: true
```


**Output**  

| Nombre de la clave | Description (Descripción) | Tipo | 
| --- | --- | --- | 
| files | La lista de archivos. | Cadena | 

**Ejemplo de resultados**

```
{
	"files": "/sample1.txt,/sample2.txt,/sample3.txt"
}
```

### MoveFile (Linux, Windows, macOS)
<a name="action-modules-movefile"></a>

El módulo de **MoveFile**acción mueve los archivos del origen especificado al destino especificado.

Si el archivo ya existe en la carpeta especificada, el módulo de acción sobrescribe el archivo existente de forma predeterminada. Puede anular este comportamiento al configurar la opción sobrescribir como `false`. Cuando la opción de sobreescritura esté establecida como `false` y ya haya un archivo en la ubicación especificada con el nombre especificado, el módulo de acción devolverá un error. Esta opción funciona igual que el comando de Linux `mv`, que se sobrescribe de forma predeterminada.

El nombre del archivo fuente puede incluir un comodín (`*`). Los caracteres comodín solo se aceptan después del último separador de ruta del archivo (`/` o `\`). Si se incluyen caracteres comodín en el nombre del archivo de origen, todos los archivos que coincidan con el comodín se copian en la carpeta de destino. Si desea mover más de un archivo con un carácter comodín, la entrada de la opción `destination` debe terminar con un separador de rutas de archivo (`/` o `\`), lo que indica que la entrada de destino es una carpeta.

Si el nombre del archivo de destino es diferente del nombre del archivo de origen, puede especificar el nombre del archivo de destino mediante la opción `destination`. Si no especifica un nombre de archivo de destino, se utilizará el nombre del archivo de origen para crear el archivo de destino. Cualquier texto que siga al separador (`/` o `\`) de la última ruta del archivo se trata como el nombre del archivo. Si desea utilizar el mismo nombre de archivo que el archivo de origen, la entrada de la opción `destination` debe terminar con un separador de rutas de archivo (`/` o `\`). 

El módulo de acción devuelve un error cuando ocurre lo siguiente:
+ No tiene permiso para crear un archivo en la carpeta especificada.
+ Los archivos de origen no existen en tiempo de ejecución.
+ Ya existe una carpeta con el nombre de archivo especificado y la opción `overwrite` está configurada como `false`.
+ El módulo de acción detecta un error al realizar la operación.


**Input**  

| Nombre de la clave | Description (Descripción) | Tipo | Obligatorio/a | Predeterminado | Valores aceptables | Compatible con todas las plataformas | 
| --- | --- | --- | --- | --- | --- | --- | 
| source | La ruta del archivo de origen. | Cadena | Sí | N/A | N/A | Sí | 
| destination | La ruta del archivo de destino. | Cadena | Sí | N/A | N/A | Sí | 
| overwrite | Si se establece como falso, los archivos de destino no se reemplazarán cuando ya haya un archivo en la ubicación especificada con el nombre especificado. | Booleano | No | true | N/A | Sí | 

**Ejemplo de entrada: mover un archivo (Linux)**

```
  - name: MovingAFileLinux
    action: MoveFile
    inputs:
      - source: /Sample/MyFolder/Sample.txt
        destination: /MyFolder/destinationFile.txt
```

**Ejemplo de entrada: mover un archivo (Windows)**

```
  - name: MovingAFileWindows
    action: MoveFile
    inputs:
      - source: C:\Sample\MyFolder\Sample.txt
        destination: C:\MyFolder\destinationFile.txt
```

**Ejemplo de entrada: mueva un archivo utilizando el nombre del archivo fuente (Linux)**

```
  - name: MovingFileWithSourceFileNameLinux
    action: MoveFile
    inputs:
      - source: /Sample/MyFolder/Sample.txt
        destination: /MyFolder/
```

**Ejemplo de entrada: mueva un archivo con el nombre del archivo fuente (Windows)**

```
  - name: MovingFileWithSourceFileNameWindows
    action: MoveFile
    inputs:
      - source: C:\Sample\MyFolder\Sample.txt
        destination: C:\MyFolder
```

**Ejemplo de entrada: mover un archivo con un carácter comodín (Linux)**

```
  - name: MovingFilesWithWildCardLinux
    action: MoveFile
    inputs:
      - source: /Sample/MyFolder/Sample*
        destination: /MyFolder/
```

**Ejemplo de entrada: mover un archivo con un carácter comodín (Windows)**

```
  - name: MovingFilesWithWildCardWindows
    action: MoveFile
    inputs:
      - source: C:\Sample\MyFolder\Sample*
        destination: C:\MyFolder
```

**Ejemplo de entrada: mover un archivo sin sobrescribirlo (Linux)**

```
  - name: MovingFilesWithoutOverwriteLinux
    action: MoveFile
    inputs:
      - source: /Sample/MyFolder/Sample.txt
        destination: /MyFolder/destinationFile.txt
        overwrite: false
```

**Ejemplo de entrada: mover un archivo sin sobrescribirlo (Windows)**

```
  - name: MovingFilesWithoutOverwrite
    action: MoveFile
    inputs:
      - source: C:\Sample\MyFolder\Sample.txt
        destination: C:\MyFolder\destinationFile.txt
        overwrite: false
```

**Output**  
Ninguna.

### MoveFolder (Linux, Windows, macOS)
<a name="action-modules-movefolder"></a>

El módulo de **MoveFolder**acción mueve las carpetas del origen especificado al destino especificado. La entrada de la opción `source` es la carpeta que se va a mover y la entrada de la opción `destination` es la carpeta en la que se mueve el contenido de la carpeta de origen.

Si la carpeta principal de destino o la entrada de la opción `destination` no existen en tiempo de ejecución, el comportamiento predeterminado del módulo es crear la carpeta de forma recursiva en el destino especificado.

Si ya existe una carpeta con el nombre especificado en la carpeta especificada, el módulo de acción, de forma predeterminada, sobrescribe la carpeta existente. Puede anular este comportamiento al configurar la opción sobrescribir como `false`. Cuando la opción de sobreescritura esté establecida como `false` y ya haya una carpeta en la ubicación especificada con el nombre especificado, el módulo de acción devolverá un error.

El nombre de la carpeta fuente puede incluir un comodín (`*`). Los caracteres comodín solo se aceptan después del último separador de ruta del archivo (`/` o `\`). Si se incluyen caracteres comodín en el nombre de la carpeta de origen, todas las carpetas que coincidan con el comodín se copian en la carpeta de destino. Si desea mover más de una carpeta con un carácter comodín, la entrada de la opción `destination` debe terminar con un separador de rutas de archivos (`/` o `\`), lo que indica que la entrada de destino es una carpeta.

Si el nombre de la carpeta de destino es diferente del nombre de la carpeta de origen, puede especificar el nombre de la carpeta de destino mediante la opción `destination`. Si no especifica un nombre de carpeta de destino, se utilizará el nombre de la carpeta de origen para crear la carpeta de destino. Cualquier texto que siga al separador (`/` o `\`) de la última ruta del archivo se trata como el nombre de la carpeta. Si desea utilizar el mismo nombre de carpeta que la carpeta de origen, la entrada de la opción `destination` debe terminar con un separador de rutas de archivo (`/` o `\`). 

El módulo de acción devuelve un error cuando ocurre lo siguiente:
+ No tiene permiso para crear una carpeta en la carpeta de destino.
+ Las carpetas de origen no existen en tiempo de ejecución.
+ Ya existe una carpeta con el nombre especificado y la opción `overwrite` está configurada como `false`.
+ El módulo de acción detecta un error al realizar la operación.


**Input**  

| Nombre de la clave | Description (Descripción) | Tipo | Obligatorio/a | Predeterminado | Valores aceptables | Compatible con todas las plataformas | 
| --- | --- | --- | --- | --- | --- | --- | 
| source | La ruta de la carpeta de origen. | Cadena | Sí | N/A | N/A | Sí | 
| destination | La ruta de la carpeta de destino. | Cadena | Sí | N/A | N/A | Sí | 
| overwrite | Si se establece como falso, las carpetas de destino no se reemplazarán cuando ya haya una carpeta en la ubicación especificada con el nombre especificado. | Booleano | No | true | N/A | Sí | 

**Ejemplo de entrada: mover una carpeta (Linux)**

```
  - name: MovingAFolderLinux
    action: MoveFolder
    inputs:
      - source: /Sample/MyFolder/SourceFolder
        destination: /MyFolder/destinationFolder
```

**Ejemplo de entrada: mover una carpeta (Windows)**

```
  - name: MovingAFolderWindows
    action: MoveFolder
    inputs:
      - source: C:\Sample\MyFolder\SourceFolder
        destination: C:\MyFolder\destinationFolder
```

**Ejemplo de entrada: mover una carpeta con el nombre de la carpeta de origen (Linux)**

```
  - name: MovingFolderWithSourceFolderNameLinux
    action: MoveFolder
    inputs:
      - source: /Sample/MyFolder/SampleFolder
        destination: /MyFolder/
```

**Ejemplo de entrada: mover una carpeta con el nombre de la carpeta de origen (Windows)**

```
  - name: MovingFolderWithSourceFolderNameWindows
    action: MoveFolder
    inputs:
      - source: C:\Sample\MyFolder\SampleFolder
        destination: C:\MyFolder\
```

**Ejemplo de entrada: mover una carpeta con un carácter comodín (Linux)**

```
  - name: MovingFoldersWithWildCardLinux
    action: MoveFolder
    inputs:
      - source: /Sample/MyFolder/Sample*
        destination: /MyFolder/
```

**Ejemplo de entrada: mover una carpeta con un carácter comodín (Windows)**

```
  - name: MovingFoldersWithWildCardWindows
    action: MoveFolder
    inputs:
      - source: C:\Sample\MyFolder\Sample*
        destination: C:\MyFolder\
```

**Ejemplo de entrada: mover una carpeta sin sobrescribirla (Linux)**

```
  - name: MovingFoldersWithoutOverwriteLinux
    action: MoveFolder
    inputs:
      - source: /Sample/MyFolder/SampleFolder
    destination: /MyFolder/destinationFolder
    overwrite: false
```

**Ejemplo de entrada: mover una carpeta sin sobrescribirla (Windows)**

```
  - name: MovingFoldersWithoutOverwriteWindows
    action: MoveFolder
    inputs:
      - source: C:\Sample\MyFolder\SampleFolder
        destination: C:\MyFolder\destinationFolder
        overwrite: false
```

**Output**  
Ninguna.

### ReadFile (Linux, Windows, macOS)
<a name="action-modules-readfile"></a>

El módulo de **ReadFile**acción lee el contenido de un archivo de texto de tipo cadena. Este módulo se puede utilizar para leer el contenido de un archivo y utilizarlo en los pasos siguientes mediante el encadenamiento o para leer los datos del archivo `console.log`. Si la ruta especificada es un enlace simbólico, este módulo devuelve el contenido del archivo de destino. Este módulo solo admite archivos de texto.

Si el valor de codificación del archivo es diferente del valor de codificación (`utf-8`) predeterminado, puede especificar el valor de codificación del archivo mediante la opción `encoding`. De forma predeterminada, se supone que `utf-16` y `utf-32` utilizan la codificación little-endian. 

De forma predeterminada, este módulo no puede imprimir el contenido del archivo en el archivo. `console.log` Puede anular esta configuración configurando la propiedad `printFileContent` como `true`.

Este módulo solo puede devolver el contenido de un archivo. No puede analizar archivos, como los archivos Excel o JSON.

El módulo de acción devuelve un error cuando ocurre lo siguiente:
+ El archivo no existe en el tiempo de ejecución.
+ El módulo de acción detecta un error al realizar la operación.


**Input**  

| Nombre de la clave | Description (Descripción) | Tipo | Obligatorio/a | Predeterminado | Valores aceptables | Compatible con todas las plataformas | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | La ruta del archivo. | Cadena | Sí | N/A | N/A | Sí | 
| encoding | El estándar de la codificación. | Cadena | No | utf8 | utf8, utf-8, utf16,utf-16, utf16-LE, utf-16-LE utf16-BE, utf-16-BE, utf32, utf-32, utf32-LE,utf-32-LE, utf32-BE, y  utf-32-BE. El valor de la opción de codificación no distingue entre mayúsculas y minúsculas. | Sí | 
| printFileContent | Imprime el contenido del archivo en el archivo console.log. | Booleano | No | false | N/A | Sí. | 

**Ejemplo de entrada: leer un archivo (Linux)**

```
  - name: ReadingFileLinux
    action: ReadFile
    inputs:
      - path: /home/UserName/SampleFile.txt
```

**Ejemplo de entrada: leer un archivo (Windows)**

```
  - name: ReadingFileWindows
    action: ReadFile
    inputs:
      - path: C:\Windows\WindowsUpdate.log
```

**Ejemplo de entrada: cómo leer un archivo y especificar el estándar de codificación**

```
  - name: ReadingFileWithFileEncoding
    action: ReadFile
    inputs:
      - path: /FolderName/SampleFile.txt
        encoding: UTF-32
```

**Ejemplo de entrada: cómo leer un archivo e imprimirlo en el archivo `console.log`**

```
  - name: ReadingFileToConsole
    action: ReadFile
    inputs:
      - path: /home/UserName/SampleFile.txt
        printFileContent: true
```


**Output**  

| Campo | Description (Descripción) | Tipo | 
| --- | --- | --- | 
| content | El contenido del archivo. | cadena | 

**Ejemplo de resultados**

```
{
	"content" : "The file content"
}
```

### SetFileEncoding (Linux, Windows, macOS)
<a name="action-modules-setfileencoding"></a>

El módulo de **SetFileEncoding**acción modifica la propiedad de codificación de un archivo existente. Este módulo puede convertir la codificación de archivos `utf-8` a un estándar de codificación específico. De forma predeterminada, `utf-16` y `utf-32` se supone que utilizan la codificación little-endian.

El módulo de acción devuelve un error cuando ocurre lo siguiente:
+ No tiene permiso para realizar la modificación especificada.
+ El archivo no existe en el tiempo de ejecución.
+ El módulo de acción detecta un error al realizar la operación.


**Input**  

| Nombre de la clave | Description (Descripción) | Tipo | Obligatorio/a | Predeterminado | Valores aceptables | Compatible con todas las plataformas | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | La ruta del archivo. | Cadena | Sí | N/A | N/A | Sí | 
| encoding | El estándar de la codificación. | Cadena | No | utf8 | utf8, utf-8, utf16,utf-16, utf16-LE, utf-16-LE utf16-BE, utf-16-BE, utf32, utf-32, utf32-LE,utf-32-LE, utf32-BE, y  utf-32-BE. El valor de la opción de codificación no distingue entre mayúsculas y minúsculas. | Sí | 

**Ejemplo de entrada: cómo establecer la propiedad de codificación del archivo**

```
  - name: SettingFileEncodingProperty
    action: SetFileEncoding
    inputs:
      - path: /home/UserName/SampleFile.txt
        encoding: UTF-16
```

**Output**  
Ninguna.

### SetFileOwner (Linux, Windows, macOS)
<a name="action-modules-setfileowner"></a>

El módulo de **SetFileOwner**acción modifica las propiedades de `group` propietario `owner` y las propiedades de un archivo existente. Si el archivo especificado es un enlace simbólico, el módulo modifica la propiedad `owner` del archivo fuente. Este módulo no es compatible con las plataformas Windows. 

Este módulo acepta nombres de usuarios y grupos como entradas. Si no se proporciona el nombre del grupo, el módulo asigna el propietario del archivo al grupo al que pertenece el usuario.

El módulo de acción devuelve un error cuando ocurre lo siguiente:
+ No tiene permiso para realizar la modificación especificada.
+ El nombre de usuario o grupo especificado no existe en el tiempo de ejecución.
+ El archivo no existe en el tiempo de ejecución.
+ El módulo de acción detecta un error al realizar la operación.


**Input**  

| Nombre de la clave | Description (Descripción) | Tipo | Obligatorio/a | Predeterminado | Valores aceptables | Compatible con todas las plataformas | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | La ruta del archivo. | Cadena | Sí | N/A | N/A | No es compatible con Windows. | 
| owner | El nombre de usuario. | cadena | Sí | N/A | N/A | No es compatible con Windows. | 
| group | El nombre del grupo de usuarios. | Cadena | No | El nombre del grupo al que pertenece el usuario. | N/A | No es compatible con Windows. | 

**Ejemplo de entrada: cómo establecer la propiedad del propietario del archivo sin especificar el nombre del grupo de usuarios**

```
  - name: SettingFileOwnerPropertyNoGroup
    action: SetFileOwner
    inputs:
      - path: /home/UserName/SampleText.txt
        owner: LinuxUser
```

**Ejemplo de entrada: establezca la propiedad del propietario del archivo especificando el propietario y el grupo de usuarios**

```
  - name: SettingFileOwnerProperty
    action: SetFileOwner
    inputs:
      - path: /home/UserName/SampleText.txt
        owner: LinuxUser
        group: LinuxUserGroup
```

**Output**  
Ninguna.

### SetFolderOwner (Linux, Windows, macOS)
<a name="action-modules-setfolderowner"></a>

El módulo de **SetFolderOwner**acción modifica de forma recursiva las propiedades del `group` propietario `owner` y las de los propietarios de una carpeta existente. De forma predeterminada, el módulo puede modificar la propiedad de todo el contenido de una carpeta. Para omitir este comportamiento, se puede configurar la opción `recursive` como `false`. Este módulo no es compatible con las plataformas Windows. 

Este módulo acepta nombres de usuarios y grupos como entradas. Si no se proporciona el nombre del grupo, el módulo asigna el propietario del archivo al grupo al que pertenece el usuario.

El módulo de acción devuelve un error cuando ocurre lo siguiente:
+ No tiene permiso para realizar la modificación especificada.
+ El nombre de usuario o grupo especificado no existe en el tiempo de ejecución.
+ La carpeta no existe en el tiempo de ejecución.
+ El módulo de acción detecta un error al realizar la operación.


**Input**  

| Nombre de la clave | Description (Descripción) | Tipo | Obligatorio/a | Predeterminado | Valores aceptables | Compatible con todas las plataformas | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | La ruta de la carpeta. | Cadena | Sí | N/A | N/A | No es compatible con Windows. | 
| owner | El nombre de usuario. | cadena | Sí | N/A | N/A | No es compatible con Windows. | 
| group | El nombre del grupo de usuarios. | Cadena | No | El nombre del grupo al que pertenece el usuario. | N/A | No es compatible con Windows. | 
| recursive | Anula el comportamiento predeterminado de modificar la propiedad de todo el contenido de una carpeta cuando se establece como false. | Booleano | No | true | N/A | No es compatible con Windows. | 

**Ejemplo de entrada: cómo establecer la propiedad del propietario de la carpeta sin especificar el nombre del grupo de usuarios**

```
  - name: SettingFolderPropertyWithOutGroup
    action: SetFolderOwner
    inputs:
      - path: /SampleFolder/
        owner: LinuxUser
```

**Ejemplo de entrada: cómo establecer la propiedad del propietario de la carpeta sin anular la propiedad de todo el contenido de una carpeta**

```
  - name: SettingFolderPropertyWithOutRecursively
    action: SetFolderOwner
    inputs:
      - path: /SampleFolder/
        owner: LinuxUser
        recursive: false
```

**Ejemplo de entrada: cómo establecer la propiedad del propietario del archivo especificando el nombre del grupo de usuarios**

```
  - name: SettingFolderPropertyWithGroup
    action: SetFolderOwner
    inputs:
      - path: /SampleFolder/
        owner: LinuxUser
        group: LinuxUserGroup
```

**Output**  
Ninguna.

### SetFilePermissions (Linux, Windows, macOS)
<a name="action-modules-setfilepermissions"></a>

El módulo de **SetFilePermissions**acción modifica el `permissions` de un archivo existente. Este módulo no es compatible con las plataformas Windows. 

La entrada para `permissions` debe ser un valor de cadena.

Este módulo de acción puede crear un archivo con los permisos definidos por el valor umask predeterminado del sistema operativo. Debe establecer el valor `umask` si quiere anular el valor predeterminado.

El módulo de acción devuelve un error cuando ocurre lo siguiente:
+ No tiene permiso para realizar la modificación especificada.
+ El archivo no existe en el tiempo de ejecución.
+ El módulo de acción detecta un error al realizar la operación.


**Input**  

| Nombre de la clave | Description (Descripción) | Tipo | Obligatorio/a | Predeterminado | Valores aceptables | Compatible con todas las plataformas | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | La ruta del archivo. | Cadena | Sí | N/A | N/A | No es compatible con Windows. | 
| permissions | Permisos de archivos. | Cadena | Sí | N/A | N/A | No es compatible con Windows. | 

**Ejemplo de entrada: modificación de los permisos de los archivos**

```
  - name: ModifyingFilePermissions
    action: SetFilePermissions
    inputs:
      - path: /home/UserName/SampleFile.txt
        permissions: 766
```

**Output**  
Ninguna.

### SetFolderPermissions (Linux, Windows, macOS)
<a name="action-modules-setfolderpermissions"></a>

El módulo de **SetFolderPermissions**acción modifica de forma recursiva `permissions` la carpeta existente y todos sus subarchivos y subcarpetas. De forma predeterminada, este módulo puede modificar los permisos para todo el contenido de la carpeta especificada. Para omitir este comportamiento, se puede configurar la opción `recursive` como `false`. Este módulo no es compatible con las plataformas Windows. 

La entrada para `permissions` debe ser un valor de cadena. 

Este módulo de acción puede modificar los permisos según el valor de umask predeterminado del sistema operativo. Debe establecer el valor `umask` si quiere anular el valor predeterminado.

El módulo de acción devuelve un error cuando ocurre lo siguiente:
+ No tiene permiso para realizar la modificación especificada.
+ La carpeta no existe en el tiempo de ejecución.
+ El módulo de acción detecta un error al realizar la operación.


**Input**  

| Nombre de la clave | Description (Descripción) | Tipo | Obligatorio/a | Predeterminado | Valores aceptables | Compatible con todas las plataformas | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | La ruta de la carpeta. | Cadena | Sí | N/A | N/A | No es compatible con Windows. | 
| permissions | Permisos para carpetas. | Cadena | Sí | N/A | N/A | No es compatible con Windows. | 
| recursive | Anula el comportamiento predeterminado de modificar los permisos de todo el contenido de una carpeta cuando se establece como false. | Booleano | No | true | N/A | No es compatible con Windows. | 

**Ejemplo de entrada: establecimiento de permisos de carpeta**

```
  - name: SettingFolderPermissions
    action: SetFolderPermissions
    inputs:
      - path: SampleFolder/
        permissions: 0777
```

**Ejemplo de entrada: cómo establecer los permisos de una carpeta sin modificar los permisos para todo el contenido de una carpeta**

```
  - name: SettingFolderPermissionsNoRecursive
    action: SetFolderPermissions
    inputs:
      - path: /home/UserName/SampleFolder/
        permissions: 777
        recursive: false
```

**Output**  
Ninguna.

## Acciones de instalación de software
<a name="action-modules-software-install-actions"></a>

En la siguiente sección se describen los módulos de acción que instalan o desinstalan software.

**Requisitos de IAM**  
Si la ruta de descarga de la instalación es un URI de S3, el rol de IAM que asocie al perfil de instancia debe tener permiso para ejecutar el módulo de acción `S3Download`. Para conceder el permiso necesario, adjunte la política de IAM `S3:GetObject` al rol de IAM asociado a su perfil de instancia y especifique la ruta de acceso a su bucket. Por ejemplo, `arn:aws:s3:::BucketName/*`).

**Entradas MSI complejas**  
Si las cadenas de entrada contienen caracteres entre comillas dobles (`"`), debe utilizar uno de los siguientes métodos para asegurarse de que se interpretan correctamente:
+ Puede utilizar comillas simples (') en la parte exterior de la cadena para contenerla y comillas dobles (") dentro de la cadena, como se muestra en el siguiente ejemplo.

  ```
  properties:
    COMPANYNAME: '"Acme ""Widgets"" and ""Gizmos."""'
  ```

  En este caso, si necesita usar un apóstrofo dentro de la cadena, debe evitarlo. Esto significa usar otra comilla simple (') antes del apóstrofo.
+ Puede usar comillas dobles (") en la parte exterior de la cadena para contenerla. Además, puede evitar las comillas dobles que haya dentro de la cadena utilizando el carácter de barra invertida (`\`), como se muestra en el siguiente ejemplo.

  ```
  properties:
    COMPANYNAME: "\"Acme \"\"Widgets\"\" and \"\"Gizmos.\"\"\""
  ```

Ambos métodos pasan el valor `COMPANYNAME="Acme ""Widgets"" and ""Gizmos."""` al comando **msiexec**.

**Topics**
+ [InstallMSI (Windows)](#action-modules-install-msi)
+ [UninstallMSI (Windows)](#action-modules-uninstall-msi)

### InstallMSI (Windows)
<a name="action-modules-install-msi"></a>

El módulo de acción `InstallMSI` instala una aplicación de Windows mediante un archivo MSI. Puede especificar el archivo MSI mediante una ruta local, un URI de objeto S3 o una URL web. La opción de reinicio configura el comportamiento de reinicio del sistema.

TOE de AWS genera el **msiexec** comando en función de los parámetros de entrada del módulo de acción. Los valores de los parámetros de entrada `path` (ubicación del archivo MSI) y `logFile` (ubicación del archivo de registro) deben escribirse entre comillas (").

Los siguientes códigos de salida MSI se consideran correctos:
+ 0 (Success)
+ 1614 (ERROR\$1PRODUCT\$1UNINSTALLED)
+ 1641 (reinicio iniciado)
+ 3010 (es necesario reiniciar)


**Input**  

| Nombre de la clave | Description (Descripción) | Tipo | Obligatorio/a | Predeterminado | Valores aceptables | 
| --- | --- | --- | --- | --- | --- | 
| path |  Especifique la ubicación del archivo MSI, usando una de las siguientes opciones: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/imagebuilder/latest/userguide/toe-action-modules.html) Se permite el encadenamiento de expresiones.  | Cadena | Sí | N/A | N/A | 
| reboot |  Configure el comportamiento de reinicio del sistema después de que el módulo de acción se ejecute correctamente. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/imagebuilder/latest/userguide/toe-action-modules.html)  | Cadena | No | Allow | Allow, Force, Skip | 
| logOptions |  Especifique las opciones que se van a utilizar para el registro de la instalación de MSI. Los indicadores especificados se pasan al instalador de MSI, junto con el parámetro de línea de comandos `/L` para habilitar el registro. Si no se especifica ningún indicador, TOE de AWS utiliza el valor predeterminado. Para obtener más información acerca de opciones de registro MSI, consulte [Opciones de línea de comandos](https://learn.microsoft.com/en-us/windows/win32/msi/command-line-options) en la documentación de del producto *Windows Installer* Microsoft.  | Cadena | No | \$1VX | i,w,e,a,r,u,c,m,o,p,v,x,\$1,\$1,\$1 | 
| logFile |  Una ruta absoluta o relativa a la ubicación del archivo de registro. Si la ruta del archivo de registro no existe, créela. Si no se proporciona la ruta del archivo de registro, TOE de AWS no almacena el registro de instalación de MSI.  | Cadena | No | N/A | N/A | 
| properties |  Los pares clave-valor de las propiedades de registro MSI, por ejemplo, `TARGETDIR: "C:\target\location"`   Nota: No se permite la modificación de las siguientes propiedades: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/imagebuilder/latest/userguide/toe-action-modules.html)  | Map[String]String | No | N/A | N/A | 
| ignoreAuthenticodeSignatureErrors |  Marcador para ignorar los errores de validación de la firma de Authenticode para el instalador especificado en la ruta. El comando **Get-AuthenticodeSignature** se utiliza para validar los instaladores. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/imagebuilder/latest/userguide/toe-action-modules.html)  | Booleano | No | false | true, false | 
| allowUnsignedInstaller |  Marca que permite ejecutar el instalador sin firma especificado en la ruta. El comando **Get-AuthenticodeSignature** se utiliza para validar los instaladores. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/imagebuilder/latest/userguide/toe-action-modules.html)  | Booleano | No | false | true, false | 

**Ejemplos**  
Los ejemplos siguientes muestran variaciones de la sección de entrada de su documento de componentes, en función de la ruta de instalación.

**Ejemplo de entrada: instalación de la ruta del documento local**

```
- name: local-path-install
  steps:
    - name: LocalPathInstaller
      action: InstallMSI
      inputs:
        path: C:\sample.msi
        logFile: C:\msilogs\local-path-install.log
        logOptions: '*VX'
        reboot: Allow
        properties:
          COMPANYNAME: '"Amazon Web Services"'
        ignoreAuthenticodeSignatureErrors: true
        allowUnsignedInstaller: true
```

**Ejemplo de entrada: instalación de la ruta Amazon S3**

```
- name: s3-path-install
  steps:
    - name: S3PathInstaller
      action: InstallMSI
      inputs:
        path: s3://<bucket-name>/sample.msi
        logFile: s3-path-install.log
        reboot: Force
        ignoreAuthenticodeSignatureErrors: false
        allowUnsignedInstaller: true
```

**Ejemplo de entrada: instalación de una ruta web**

```
- name: web-path-install
  steps:
    - name: WebPathInstaller
      action: InstallMSI
      inputs:
        path: https://<some-path>/sample.msi
        logFile: web-path-install.log
        reboot: Skip
        ignoreAuthenticodeSignatureErrors: true
        allowUnsignedInstaller: false
```

**Output**  
Véase a continuación un ejemplo de la salida del módulo de acción `InstallMSI`.

```
{
	"logFile": "web-path-install.log",
	"msiExitCode": 0,
	"stdout": ""
}
```

### UninstallMSI (Windows)
<a name="action-modules-uninstall-msi"></a>

Este módulo de acción `UninstallMSI` le permite desinstalar una aplicación de Windows utilizando un archivo MSI. Puede especificar la ubicación del archivo MSI mediante una ruta de archivo local, un URI de objeto S3 o una URL web. La opción de reinicio configura el comportamiento de reinicio del sistema.

TOE de AWS genera el **msiexec** comando en función de los parámetros de entrada del módulo de acción. La ubicación del archivo MSI (`path`) y la ubicación del archivo de registro (`logFile`) se escriben explícitamente entre comillas dobles (") al generar el comando **msiexec**.

Los siguientes códigos de salida MSI se consideran correctos:
+ 0 (Success)
+ 1605 (ERROR\$1UNKNOWN\$1PRODUCT)
+ 1614 (ERROR\$1PRODUCT\$1UNINSTALLED)
+ 1641 (reinicio iniciado)
+ 3010 (es necesario reiniciar)


**Input**  

| Nombre de la clave | Description (Descripción) | Tipo | Obligatorio/a | Predeterminado | Valores aceptables | 
| --- | --- | --- | --- | --- | --- | 
| path |  Especifique la ubicación del archivo MSI, usando una de las siguientes opciones: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/imagebuilder/latest/userguide/toe-action-modules.html) Se permite el encadenamiento de expresiones.  | Cadena | Sí | N/A | N/A | 
| reboot |  Configura el comportamiento de reinicio del sistema después de que el módulo de acción se ejecute correctamente. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/imagebuilder/latest/userguide/toe-action-modules.html)  | Cadena | No | Allow | Allow, Force, Skip | 
| logOptions |  Especifique las opciones que se van a utilizar para el registro de la instalación de MSI. Los indicadores especificados se pasan al instalador de MSI, junto con el parámetro de línea de comandos `/L` para habilitar el registro. Si no se especifica ningún indicador, TOE de AWS utiliza el valor predeterminado. Para obtener más información acerca de opciones de registro MSI, consulte [Opciones de línea de comandos](https://docs.microsoft.com/en-us/windows/win32/msi/command-line-options) en la documentación de del producto *Windows Installer* Microsoft.  | Cadena | No | \$1VX | i,w,e,a,r,u,c,m,o,p,v,x,\$1,\$1,\$1 | 
| logFile |  Una ruta absoluta o relativa a la ubicación del archivo de registro. Si la ruta del archivo de registro no existe, créela. Si no se proporciona la ruta del archivo de registro, TOE de AWS no almacena el registro de instalación de MSI.  | Cadena | No | N/A | N/A | 
| properties |  Los pares clave-valor de las propiedades de registro MSI, por ejemplo, `TARGETDIR: "C:\target\location"`   Nota: No se permite la modificación de las siguientes propiedades: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/imagebuilder/latest/userguide/toe-action-modules.html)  | Map[String]String | No | N/A | N/A | 
| ignoreAuthenticodeSignatureErrors |  Marcador para ignorar los errores de validación de la firma de Authenticode para el instalador especificado en la ruta. El comando **Get-AuthenticodeSignature** se utiliza para validar los instaladores. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/imagebuilder/latest/userguide/toe-action-modules.html)  | Booleano | No | false | true, false | 
| allowUnsignedInstaller |  Marca que permite ejecutar el instalador sin firma especificado en la ruta. El comando **Get-AuthenticodeSignature** se utiliza para validar los instaladores. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/imagebuilder/latest/userguide/toe-action-modules.html)  | Booleano | No | false | true, false | 

**Ejemplos**  
Los ejemplos siguientes muestran variaciones de la sección de entrada de su documento de componentes, en función de la ruta de instalación.

**Ejemplo de entrada: eliminación de la instalación de la ruta del documento local**

```
- name: local-path-uninstall
  steps:
    - name: LocalPathUninstaller
      action: UninstallMSI
      inputs:
        path: C:\sample.msi
        logFile: C:\msilogs\local-path-uninstall.log
        logOptions: '*VX'
        reboot: Allow
        properties:
          COMPANYNAME: '"Amazon Web Services"'
        ignoreAuthenticodeSignatureErrors: true
        allowUnsignedInstaller: true
```

**Ejemplo de entrada: eliminación de la instalación de la ruta Amazon S3**

```
- name: s3-path-uninstall
  steps:
    - name: S3PathUninstaller
      action: UninstallMSI
      inputs:
        path: s3://<bucket-name>/sample.msi
        logFile: s3-path-uninstall.log
        reboot: Force
        ignoreAuthenticodeSignatureErrors: false
        allowUnsignedInstaller: true
```

**Ejemplo de entrada: eliminación de la instalación de una ruta web**

```
- name: web-path-uninstall
  steps:
    - name: WebPathUninstaller
      action: UninstallMSI
      inputs:
        path: https://<some-path>/sample.msi
        logFile: web-path-uninstall.log
        reboot: Skip
        ignoreAuthenticodeSignatureErrors: true
        allowUnsignedInstaller: false
```

**Output**  
Véase a continuación un ejemplo de la salida del módulo de acción `UninstallMSI`.

```
{
	"logFile": "web-path-uninstall.log",
	"msiExitCode": 0,
	"stdout": ""
}
```

## Módulos de acción del sistema
<a name="action-modules-system-actions"></a>

En la siguiente sección se describen los módulos de acción que ejecutan acciones del sistema o actualizan la configuración del sistema.

**Topics**
+ [Reboot (Linux, Windows)](#action-modules-reboot)
+ [SetRegistry (Windows)](#action-modules-setregistry)
+ [UpdateOS (Linux, Windows)](#action-modules-updateos)

### Reboot (Linux, Windows)
<a name="action-modules-reboot"></a>

El módulo de acción **Reboot** reinicia la instancia. Tiene una opción configurable para retrasar el inicio del reinicio. De forma predeterminada, `delaySeconds` está configurada como `0`, lo que significa que no hay ningún retraso. El tiempo de espera por pasos no es compatible con el módulo de acción de reinicio, ya que no se aplica cuando se reinicia la instancia.

Si Systems Manager Agent invoca la aplicación, entrega el código de salida (`3010` para Windows o `194` Linux) a Systems Manager Agent. Systems Manager Agent gestiona el reinicio del sistema tal y como se describe en [Reiniciar una instancia gestionada desde scripts](https://docs.aws.amazon.com/systems-manager/latest/userguide/send-commands-reboot.html).

Si la aplicación se invoca en el host como un proceso independiente, guarda el estado de ejecución actual, configura un activador de ejecución automática posterior al reinicio para volver a ejecutar la aplicación después del reinicio y, a continuación, reinicia el sistema.

**Activador de ejecución automática posterior al reinicio:**
+ **Windows.** TOE de AWS crea una entrada del programador de tareas de Windows con un activador que se ejecuta automáticamente en `SystemStartup`
+ **Linux.** TOE de AWS agrega un trabajo en crontab que se ejecuta automáticamente después de que el sistema se reinicie.

```
@reboot /download/path/awstoe run --document s3://bucket/key/doc.yaml
```

Este activador se borra cuando se inicia la aplicación.

**Reintentos**  
De forma predeterminada, el número máximo de reintentos se establece en `CommandRetryLimit` de Systems Manager. Si el número de reinicios supera el límite de reintentos, se produce un error en la automatización. Para cambiar el límite, puede editar el archivo de configuración del agente de Systems Manager (`Mds.CommandRetryLimit`). Consulte [Runtime Configuration](https://github.com/aws/amazon-ssm-agent/blob/mainline/README.md#runtime-configuration) en el código abierto del agente de Systems Manager.

Para utilizar el módulo de acción **reinicio**, para los pasos que contienen el reinicio `exitcode` (por ejemplo, `3010`), debe ejecutar la aplicación binaria como `sudo user`.


**Input**  

| Nombre de la clave | Description (Descripción) | Tipo | Obligatorio/a | Predeterminado | 
| --- | --- | --- | --- | --- | 
| delaySeconds | Retrasa un tiempo específico antes de iniciar un reinicio. | Entero |  No  |  `0`  | 

**Ejemplo de entrada: paso de reinicio**

```
  - name: RebootStep
    action: Reboot
    onFailure: Abort
    maxAttempts: 2
    inputs:
      delaySeconds: 60
```

**Salida**

Ninguna.

Cuando finalice el módulo **Reboot**, Generador de Imágenes continúa con el siguiente paso de la compilación.

### SetRegistry (Windows)
<a name="action-modules-setregistry"></a>

El módulo de **SetRegistry**acción acepta una lista de entradas y permite establecer el valor de la clave de registro especificada. Si no existe una clave de registro, se crea en la ruta definida. Esta característica solo se aplica a los clientes de Windows.


**Input**  

| Nombre de la clave | Description (Descripción) | Tipo | Obligatorio/a | 
| --- | --- | --- | --- | 
| path | Ruta de la clave de registro. | Cadena | Sí | 
| name | Nombre de la clave de registro. | Cadena | Sí | 
| value | Valor de la clave de registro. | String/Number/Array | Sí | 
| type | Valor de la clave de registro. | Cadena | Sí | 

**Prefijos de ruta admitidos**
+ `HKEY_CLASSES_ROOT / HKCR:`
+ `HKEY_USERS / HKU:`
+ `HKEY_LOCAL_MACHINE / HKLM:`
+ `HKEY_CURRENT_CONFIG / HKCC:`
+ `HKEY_CURRENT_USER / HKCU:`

**Tipos admitidos**
+ `BINARY`
+ `DWORD`
+ `QWORD`
+ `SZ`
+ `EXPAND_SZ`
+ `MULTI_SZ`

**Ejemplo de entrada: cómo establecer los valores de las claves de registro**

```
  - name: SetRegistryKeyValues
    action: SetRegistry
    maxAttempts: 3
    inputs:
      - path: HKLM:\SOFTWARE\MySoftWare
        name: MyName
        value: FirstVersionSoftware
        type: SZ
      - path: HKEY_CURRENT_USER\Software\Test
        name: Version
        value: 1.1
        type: DWORD
```

**Salida**

Ninguna.

### UpdateOS (Linux, Windows)
<a name="action-modules-updateos"></a>

El módulo de acción **UpdateOS** añade soporte para instalar actualizaciones de Windows y Linux. Instala todas las actualizaciones disponibles de forma predeterminada. Como alternativa, puede configurar una lista de una o más actualizaciones específicas para que las instale el módulo de acción. También puede especificar las actualizaciones para excluirlas de la instalación.

Si se proporcionan listas de "incluir" y "excluir", la lista de actualizaciones resultante solo podrá incluir las incluidas en la lista de "inclusión" que no estén incluidas en la lista de "excluidas".

**nota**  
**UpdateOS** no es compatible con Amazon Linux 2023 (AL2023). Le recomendamos que actualice la AMI base a la nueva versión que viene con cada versión. Para ver otras alternativas, consulte [Controlar las actualizaciones recibidas de las versiones principales y secundarias](https://docs.aws.amazon.com/linux/al2023/ug/deterministic-upgrades.html#controlling-release-updates) en la *Guía del usuario de Amazon Linux 2023*.
+ **Windows**. Las actualizaciones se instalan desde la fuente de actualización configurada en la máquina de destino.
+ **Linux**. La aplicación busca el administrador de paquetes compatible en la plataforma Linux y utiliza un administrador de paquetes `yum` o `apt-get`. Si ninguna de las opciones es compatible, se devuelve un error. Debe tener permisos `sudo` para ejecutar el módulo de acción **UpdateOS**. Si no tiene permisos `sudo` se devuelve un `error.Input`.


**Input**  

| Nombre de la clave | Description (Descripción) | Tipo | Obligatorio/a | 
| --- | --- | --- | --- | 
| include |  Para Windows puede especificar lo siguiente: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/imagebuilder/latest/userguide/toe-action-modules.html) Para Linux, puede especificar uno o más paquetes para incluirlos en la lista de actualizaciones para su instalación.  | Lista de cadenas | No | 
| exclude |  Para Windows puede especificar lo siguiente: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/imagebuilder/latest/userguide/toe-action-modules.html) Para Linux, puede especificar uno o más paquetes para incluirlos en la lista de actualizaciones para su instalación.  | Lista de cadenas | No | 

**Ejemplo de entrada: cómo añadir soporte para instalar actualizaciones de Linux**

```
  - name: UpdateMyLinux
    action: UpdateOS
    onFailure: Abort
    maxAttempts: 3
    inputs:
      exclude:
        - ec2-hibinit-agent
```

**Ejemplo de entrada: cómo añadir soporte para instalar actualizaciones de Windows**

```
  - name: UpdateWindowsOperatingSystem
    action: UpdateOS
    onFailure: Abort
    maxAttempts: 3
    inputs:
      include:
        - KB1234567
        - '*Security*'
```

**Salida**

Ninguna.