

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Módulos de ação suportados pelo gerenciador de AWSTOE componentes
<a name="toe-action-modules"></a>

Os serviços de criação de imagens, como o EC2 Image Builder, AWSTOE usam módulos de ação para ajudar a configurar as instâncias do EC2 que são usadas para criar e testar imagens de máquina personalizadas. Esta seção descreve os recursos dos módulos de AWSTOE ação mais usados e como configurá-los, incluindo exemplos.

Os componentes são criados com documentos YAML de texto simples. Para obter mais informações sobre sintaxe de documentos, consulte [Use a estrutura de documentos de AWSTOE componentes para componentes personalizados](toe-use-documents.md).

**nota**  
Todos os módulos de ação usam a mesma conta do atendente do Systems Manager quando são executados, os quais são `root`, no Linux, e `NT Authority\SYSTEM`, no Windows.

A referência cruzada a seguir categoriza os módulos de ação pelo tipo de ação que eles executam.

 

**Execução geral**
+ [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)

 

**Download e upload de arquivos**
+ [S3Download (Linux, Windows, macOS)](#action-modules-s3download)
+ [S3Upload (Linux, Windows, macOS)](#action-modules-s3upload)
+ [WebDownload (Linux, Windows, macOS)](#action-modules-webdownload)

 

**Operações do sistema de arquivos**
+ [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)

 

**Ações de instalação de software**
+ [InstallMSI (Windows)](#action-modules-install-msi)
+ [UninstallMSI (Windows)](#action-modules-uninstall-msi)

 

**Ações do sistema**
+ [Reboot (Linux, Windows)](#action-modules-reboot)
+ [SetRegistry (Windows)](#action-modules-setregistry)
+ [UpdateOS (Linux, Windows)](#action-modules-updateos)

## Módulos de execução geral
<a name="action-modules-general-execution"></a>

A seção a seguir contém detalhes dos módulos de ação que executam comandos e controlam fluxos de trabalho de execução.

**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>

O módulo de ação **Assert** realiza comparações de valores usando [Operadores de comparação](toe-comparison-operators.md) ou [Operadores lógicos](toe-logical-operators.md) como entrada. O resultado da expressão do operador (verdadeiro ou falso) indica o status geral de êxito ou falha da etapa.

Se a comparação ou a expressão do operador lógico for avaliada como `true`, a etapa será marcada como `Success`. Caso contrário, a etapa será marcada como `Failed`. Se a etapa falhar, o parâmetro `onFailure` determinará o resultado da etapa.


**Input**  

| Nome da chave | Description | Tipo | Obrigatório | 
| --- | --- | --- | --- | 
| input | Contém um único operador lógico ou de comparação. Observe que os operadores lógicos podem conter mais de um operador de comparação. | Isso é variável, dependendo do operador. | Sim | 

**Exemplo de entrada: uma comparação simples usando o operador de comparação `stringEquals`**

Este exemplo é avaliado como `true`.

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

**Exemplo de entrada: comparações regex usando o operador de comparação `patternMatches`**

Todos estes exemplos são avaliados como `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'
```

**Exemplo de entrada: comparações aninhadas com operadores lógicos e variáveis encadeadas**

O exemplo a seguir demonstra comparações aninhadas com operadores lógicos que usam comparações com variáveis encadeadas. O `Assert` avalia como `true` se alguma das seguintes afirmações for verdadeira:
+ A `ApplicationVersion` é superior a `2.0` e a `CPUArchitecture` é igual a `arm64`.
+ A `CPUArchitecture` é 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 }}'
```

**Saída**:

O resultado do `Assert` é êxito ou falha da etapa.

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

O módulo de **ExecuteBash**ação permite que você execute scripts bash com códigos/comandos de shell embutidos. Este módulo é compatível com Linux. 

Todos os comandos e instruções que você especifica no bloco de comandos são convertidos em um arquivo (por exemplo, `input.sh`) e executados com o bash shell. O resultado da execução do arquivo shell é o código de saída da etapa. 

O **ExecuteBash**módulo manipula as reinicializações do sistema se o script sair com um código de saída de. `194` Quando iniciado, o aplicativo executa uma das seguintes ações:
+ O aplicativo entrega o código de saída ao chamador se ele for executado pelo Systems Manager Agent. O Systems Manager Agent controla a reinicialização do sistema e executa a mesma etapa que iniciou a reinicialização, conforme descrito em [Como reinicializar a instância gerenciada a partir de scripts](https://docs.aws.amazon.com/systems-manager/latest/userguide/send-commands-reboot.html).
+ O aplicativo salva o `executionstate` atual, configura um gatilho de reinicialização para executar o aplicativo novamente e reinicia o sistema.

Após a reinicialização do sistema, o aplicativo executa a mesma etapa que iniciou a reinicialização. Se você precisar dessa funcionalidade, deverá escrever scripts idempotentes que possam lidar com várias invocações do mesmo comando shell.


**Input**  

| Nome da chave | Description | Tipo | Obrigatório | 
| --- | --- | --- | --- | 
| commands | Contém uma lista de instruções ou comandos a serem executados de acordo com a sintaxe do bash. O YAML de várias linhas é permitido. | Lista | Sim | 

**Exemplo de entrada: antes e depois de uma reinicialização**

```
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 | Tipo | 
| --- | --- | --- | 
| stdout | Saída padrão da execução do comando. | string | 

Se você iniciar uma reinicialização e retornar o código de saída `194` como parte do módulo de ação, a compilação será retomada na mesma etapa do módulo de ação que iniciou a reinicialização. Se você iniciar uma reinicialização sem o código de saída, o processo de compilação poderá falhar.

**Exemplo de saída: antes da reinicialização (primeira vez no documento)**

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

**Exemplo de saída: após a reinicialização, (segunda vez no documento)**

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

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

O módulo de **ExecuteBinary**ação permite que você execute arquivos binários com uma lista de argumentos de linha de comando.

O **ExecuteBinary**módulo manipula as reinicializações do sistema se o arquivo binário sair com um código de saída `194` (Linux) ou `3010` (Windows). Quando iniciado, o aplicativo executa uma das seguintes ações:
+ O aplicativo entrega o código de saída ao chamador se ele for executado pelo Systems Manager Agent. O Systems Manager Agent controla a reinicialização do sistema e executa a mesma etapa que começou a reinicialização, conforme descrito em [Como reinicializar a instância gerenciada a partir de scripts](https://docs.aws.amazon.com/systems-manager/latest/userguide/send-commands-reboot.html).
+ O aplicativo salva o `executionstate` atual, configura um gatilho de reinicialização para executar o aplicativo novamente e reinicia o sistema.

Após a reinicialização do sistema, o aplicativo executa a mesma etapa que iniciou a reinicialização. Se você precisar dessa funcionalidade, deverá escrever scripts idempotentes que possam lidar com várias invocações do mesmo comando shell.


**Input**  

| Nome da chave | Description | Tipo | Obrigatório | 
| --- | --- | --- | --- | 
| path | O caminho para o arquivo binário para execução. | String | Sim | 
| arguments | Contém uma lista de argumentos de linha de comando a serem usados ao executar o binário. | Lista de strings | Não | 

**Exemplo de entrada: install.NET**

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


**Output**  

| Campo | Description | Tipo | 
| --- | --- | --- | 
| stdout | Saída padrão da execução do comando. | string | 

**Exemplo de saída**

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

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

O módulo de **ExecuteDocument**ação adiciona suporte para documentos de componentes aninhados, executando vários documentos de componentes a partir de um documento. AWSTOE valida o documento que é passado no parâmetro de entrada em tempo de execução.

**Restrições**
+ Esse módulo de ação é executado uma vez, sem a permissão de novas tentativas e sem a opção de definir limites de tempo limite. **ExecuteDocument**define os seguintes valores padrão e retorna um erro se você tentar alterá-los.
  + `timeoutSeconds`: -1
  + `maxAttempts`: 1
**nota**  
Você pode deixar esses valores em branco e AWSTOE usar os valores padrão.
+ O aninhamento de documentos é permitido, com até três níveis de profundidade, mas não mais do que isso. Três níveis de aninhamento se traduzem em quatro níveis de documentos, já que o nível superior não está aninhado. Nesse cenário, o documento de nível mais baixo não deve chamar nenhum outro documento.
+ A execução cíclica de documentos de componentes não é permitida. Qualquer documento que se chame fora de uma estrutura em loop, ou que chame outro documento mais alto na cadeia de execução atual, inicia um ciclo que pode resultar em um loop infinito. Quando o AWSTOE detecta uma execução cíclica, ele interrompe a execução e registra a falha.

![\[Restrições de nível de aninhamento para o módulo de ExecuteDocument ação.\]](http://docs.aws.amazon.com/pt_br/imagebuilder/latest/userguide/images/toe-component-document-nesting.png)


Se um documento do componente tentar se executar sozinho ou executar qualquer um dos documentos do componente que estão mais acima na cadeia de execução atual, a execução falhará.

**Entrada**


| Nome da chave | Description | Tipo | Obrigatório | 
| --- | --- | --- | --- | 
| document |  Caminho do documento do componente. Entre as opções válidas estão: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/imagebuilder/latest/userguide/toe-action-modules.html)  | String | Sim | 
| document-s3-bucket-owner |  O ID da conta do proprietário do bucket do S3 onde são armazenados os documentos do componente. *(Recomendado se você estiver usando o S3 URIs no documento do componente.)*  | String | Não | 
| phases |  Fases a serem executadas no documento do componente, expressas como uma lista separada por vírgulas. Se nenhuma fase for especificada, todas as fases serão executadas.  | String | Não | 
| parameters |  Parâmetros de entrada que são passados para o documento do componente no runtime como pares valores-chave.  | Lista de mapas de parâmetros | Não | 

**Entrada do mapa de parâmetros**


| Nome da chave | Description | Tipo | Obrigatório | 
| --- | --- | --- | --- | 
| name |  O nome do parâmetro de entrada a ser passado para o documento do componente que o módulo de **ExecuteDocument**ação está executando.  | String | Sim | 
| value |  O valor do parâmetro de entrada.  | String | Sim | 

**Exemplos de entrada**  
Os exemplos a seguir mostram variações das entradas do documento do componente, dependendo do caminho de instalação.

**Exemplo de entrada: caminho do 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
```

**Exemplo de entrada: URI do S3 como caminho do 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
```

**Exemplo de entrada: ARN do componente EC2 Image Builder como um caminho 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
```

**Usando um ForEach loop para executar 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
```

**Usando um loop For para executar 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**  
AWSTOE cria um arquivo de saída chamado `detailedoutput.json` toda vez que é executado. O arquivo contém detalhes sobre cada fase e etapa de cada documento do componente que é invocado durante a execução. Para o módulo de **ExecuteDocument**ação, você pode encontrar um breve resumo do tempo de execução no `outputs` campo e detalhes sobre as fases, etapas e documentos executados no`detailedOutput`.

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

O objeto de resumo de saída de cada documento do componente contém os seguintes detalhes, conforme mostrado aqui, com valores de amostra:
+ executedStepCount“:1
+ "executionId":"12345a67-89bc-01de-2f34-abcd56789012"
+ “failedStepCount“:0
+ "failureMessage":""
+ “ignoredFailedStepContagem” :0
+ "logUrl":""
+ “status” :"sucesso”

**Exemplo de saída**  
O exemplo a seguir mostra a saída do módulo de **ExecuteDocument**ação quando ocorre uma execução aninhada. Neste exemplo, o documento do componente `main.yaml` executa com êxito o documento do 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>

O módulo de **ExecutePowerShell**ação permite que você execute PowerShell scripts com códigos/comandos de shell embutidos. Este módulo oferece suporte à plataforma Windows e ao Windows PowerShell.

Todos os itens commands/instructions especificados no bloco de comandos são convertidos em um arquivo de script (por exemplo,`input.ps1`) e executados usando o WindowsPowerShell. O resultado da execução do arquivo shell é o código de saída.

O **ExecutePowerShell**módulo manipula as reinicializações do sistema se o comando shell sair com um código de saída de. `3010` Quando iniciado, o aplicativo executa uma das seguintes ações: 
+ O aplicativo entrega o código de saída ao chamador se ele for executado pelo Systems Manager Agent. O Systems Manager Agent controla a reinicialização do sistema e executa a mesma etapa que iniciou a reinicialização, conforme descrito em [Como reinicializar a instância gerenciada a partir de scripts](https://docs.aws.amazon.com/systems-manager/latest/userguide/send-commands-reboot.html).
+ Salva o `executionstate` atual, configura um gatilho de reinicialização para executar novamente o aplicativo e reinicializa o sistema.

Após a reinicialização do sistema, o aplicativo executa a mesma etapa que iniciou a reinicialização. Se você precisar dessa funcionalidade, deverá escrever scripts idempotentes que possam lidar com várias invocações do mesmo comando shell.


**Input**  

| Nome da chave | Description | Tipo | Obrigatório | 
| --- | --- | --- | --- | 
| commands | Contém uma lista de instruções ou comandos a serem executados de acordo com a PowerShell sintaxe. O YAML de várias linhas é permitido. | Lista de strings | Sim. Deve especificar `commands` ou `file`, não ambos.  | 
| file | Contém o caminho para um arquivo de PowerShell script. PowerShell será executado nesse arquivo usando o argumento da linha de -file comando. O caminho deve apontar para um arquivo do .ps1. | String | Sim. Deve especificar `commands` ou `file`, não ambos.  | 

**Exemplo de entrada: antes e depois de uma reinicialização**

```
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 | Tipo | 
| --- | --- | --- | 
| stdout | Saída padrão da execução do comando. | string | 

Se você executar uma reinicialização e retornar o código de saída `3010` como parte do módulo de ação, a compilação será retomada na mesma etapa do módulo de ação que iniciou a reinicialização. Se você executar uma reinicialização sem o código de saída, o processo de compilação poderá falhar.

**Exemplo de saída: antes da reinicialização (primeira vez no documento)**

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

**Exemplo de saída: após a reinicialização, (segunda vez no documento)**

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

## Módulos de download e upload de arquivos
<a name="action-modules-download-upload"></a>

A seção a seguir contém detalhes dos módulos de ação que fazem upload ou download de arquivos.

**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>

Com o módulo de ação `S3Download`, você pode baixar um objeto do Amazon S3, ou um conjunto de objetos, para um arquivo ou pasta local que você especifica com o caminho `destination`. Se algum arquivo já existir no local especificado e o sinalizador do `overwrite` estiver definido como verdadeiro, o `S3Download` substituirá o arquivo.

Sua localização `source` pode apontar para um objeto específico no Amazon S3, ou você pode usar um prefixo de chave com um caractere curinga de asterisco (`*`) para baixar um conjunto de objetos que correspondam ao caminho do prefixo da chave. Quando você especifica um prefixo de chave na sua localização `source`, o módulo de ação `S3Download` baixa tudo o que corresponde ao prefixo (arquivos e pastas incluídos). Certifique-se de que o prefixo da chave termine com uma barra, seguida por um asterisco (`/*`), para que você baixe tudo que corresponda ao prefixo. Por exemplo: `s3://my-bucket/my-folder/*`.

Se a ação `S3Download` de um prefixo de chave especificado falhar durante um download, o conteúdo da pasta não voltará ao estado anterior à falha. A pasta de destino permanece como estava no momento da falha.

**Casos de uso compatíveis**  
O módulo de ação `S3Download` é compatível com os seguintes casos de uso:
+ O objeto Amazon S3 é baixado para uma pasta local, conforme especificado no caminho de download.
+ Os objetos do Amazon S3 (com um prefixo de chave no caminho do arquivo do Amazon S3) são baixados para a pasta local especificada, que copia recursivamente todos os objetos do Amazon S3 que correspondem ao prefixo da chave na pasta local.

**Requisitos do IAM**  
O perfil do IAM que você associa ao seu perfil de instância precisa ter permissões para executar o módulo de ação `S3Download`. As seguintes políticas do IAM devem ser anexadas ao perfil do IAM associada ao perfil de instância:
+ **Arquivo único**: `s3:GetObject` contra o bucket/object (por exemplo,`arn:aws:s3:::BucketName/*`).
+ **Vários arquivos**: `s3:ListBucket` contra o bucket/object (por exemplo,`arn:aws:s3:::BucketName`) e `s3:GetObject` contra o bucket/object (por exemplo,`arn:aws:s3:::BucketName/*`).


**Input**  

|  Chave  |  Description  |  Tipo  |  Obrigatório  |  Padrão  | 
| --- | --- | --- | --- | --- | 
|  `source`  |  O bucket do Amazon S3 que é a fonte para seu download. Você pode especificar um caminho para um objeto específico ou usar um prefixo de chave que termine com uma barra, seguida por um caractere curinga de asterisco (`/*`), para baixar um conjunto de objetos que correspondam ao prefixo da chave.  |  String  |  Sim  |  N/D  | 
|  `destination`  |  O caminho local em que os objetos do Amazon S3 são baixados. Para baixar um único arquivo, especifique o nome do arquivo como parte do caminho. Por exemplo, .`/myfolder/package.zip`  |  String  |  Sim  |  N/D  | 
|  `expectedBucketOwner`  |  ID da conta do proprietário esperada do bucket fornecido no caminho `source`. Recomendamos que você verifique a propriedade do bucket Amazon S3 especificado na fonte.  |  String  |  Não  |  N/D  | 
|  `overwrite`  |  Quando definido como verdadeiro, se um arquivo com o mesmo nome já existir na pasta de destino no caminho local especificado, o arquivo de download substituirá o arquivo local. Quando definido como false, o arquivo existente no sistema local é protegido contra a substituição e o módulo de ação falha com um erro de download. Por exemplo, `Error: S3Download: File already exists and "overwrite" property for "destination" file is set to false. Cannot download.`.  |  Booleano  |  Não  |  true  | 

**nota**  
Nos exemplos a seguir, o caminho da pasta do Windows pode ser substituído por um caminho do Linux. Por exemplo, `C:\myfolder\package.zip` pode ser substituído por `/myfolder/package.zip`.

**Exemplo de entrada: copiar um objeto do Amazon S3 para um arquivo local**  
O exemplo a seguir mostra como copiar um objeto do Amazon S3 para um arquivo 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
```

**Exemplo de entrada: copie todos os objetos do Amazon S3 para um bucket do Amazon S3 com prefixo de chave em uma pasta local**  
O exemplo a seguir mostra como copiar todos os objetos do Amazon S3 para um bucket do Amazon S3 para uma pasta local. O Amazon S3 não tem o conceito de pasta, portanto, todos os objetos que correspondem ao prefixo da chave são copiados. O número máximo de objetos que podem ser baixados é 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**  
Nenhum.

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

Com o módulo de ação **S3Upload**, você pode carregar um arquivo de um arquivo ou pasta de origem para um local do Amazon S3. Você pode usar um curinga (`*`) no caminho especificado para o local de origem para carregar todos os arquivos cujo caminho corresponda ao padrão curinga.

Se a ação recursiva do **S3Upload** falhar, todos os arquivos que já foram carregados permanecerão no bucket Amazon S3 de destino.

**Casos de uso compatíveis**
+ Arquivo local para o objeto Amazon S3.
+ Arquivos locais na pasta (com curinga) para o prefixo de chave do Amazon S3.
+ Copie a pasta local (`recurse` deve ter sido definido como `true`) para o prefixo de chave do Amazon S3.

**Requisitos do IAM**  
O perfil do IAM que você associa ao seu perfil de instância precisa ter permissões para executar o módulo de ação `S3Upload`. As seguintes políticas do IAM devem ser anexadas ao perfil do IAM associada ao perfil de instância. A política deve conceder permissões de `s3:PutObject` ao bucket de destino do Amazon S3. Por exemplo, `arn:aws:s3:::BucketName/*`.


**Input**  

|  Chave  |  Description  |  Tipo  |  Obrigatório  |  Padrão  | 
| --- | --- | --- | --- | --- | 
|  `source`  |  O caminho local de origem da fonte files/folders . O `source` suporta um caractere curinga de asterisco (`*`).  |  String  |  Sim  |  N/D  | 
|  `destination`  |  O caminho para o bucket de destino do Amazon S3 onde os arquivos/pastas de origem são carregados.  |  String  |  Sim  |  N/D  | 
|  `recurse`  |  Quando definido como `true`, executa o **S3Upload** recursivamente.  |  String  |  Não  |  `false`  | 
|  `expectedBucketOwner`  |  O ID esperado da conta do proprietário para o bucket do Amazon S3 especificado no caminho de destino. Recomendamos que você verifique a propriedade do bucket Amazon S3 especificado no destino.  |  String  |  Não  |  N/D  | 

**Exemplo de entrada: copiar um arquivo local para um objeto do Amazon S3**  
O exemplo a seguir mostra como copiar um arquivo local para um objeto do Amazon S3.

```
  - 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
```

**Exemplo de entrada: copie todos os arquivos em uma pasta local para um bucket do Amazon S3 com prefixo de chave**  
O exemplo a seguir mostra como copiar todos os arquivos na pasta local para um bucket do Amazon S3 com prefixo de chave. Este exemplo não copia subpastas ou seu conteúdo porque o `recurse` não está especificado e o padrão é `false`.

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

**Exemplo de entrada: copiar recursivamente todos os arquivos e pastas de uma pasta local para um bucket do Amazon S3**  
O exemplo a seguir mostra como copiar recursivamente todos os arquivos e pastas de uma pasta local para um bucket do Amazon S3 com o prefixo de chaves.

```
  - 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**  
Nenhum.

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

O módulo de **WebDownload**ação permite que você baixe arquivos e recursos de um local remoto pelo HTTP/HTTPS protocolo (*HTTPS é recomendado*). Não há limites para o número ou o tamanho dos downloads. Este módulo lida com a lógica de repetição e recuo exponencial. 

Cada operação de download recebe no máximo 5 tentativas de sucesso, de acordo com as entradas do usuário. Essas tentativas diferem das especificadas no campo `maxAttempts` do documento `steps`, que estão relacionadas às falhas do módulo de ação.

Esse módulo de ação manipula implicitamente os redirecionamentos. Todos os códigos de status HTTP, exceto `200`, resultam em um erro.


**Input**  

| Nome da chave | Description | Tipo | Obrigatório | Padrão | 
| --- | --- | --- | --- | --- | 
| source | O HTTP/HTTPS URL válido (HTTPS é recomendado), que segue o padrão RFC 3986. Expressões de encadeamento são permitidas. | String |  Sim  | N/D | 
| destination | Um caminho absoluto ou relativo de arquivo ou pasta no sistema local. Os caminhos das pastas devem terminar com /. Se não terminarem com /, serão tratados como caminhos de arquivo. O módulo cria qualquer arquivo ou pasta necessário para downloads bem-sucedidos. Expressões de encadeamento são permitidas. | String | Sim | N/D | 
| overwrite | Quando ativado, substitui todos os arquivos existentes no sistema local pelo arquivo ou recurso baixado. Quando não ativado, os arquivos existentes no sistema local não são sobrescritos e o módulo de ação falha com um erro. Quando a substituição está ativada e a soma de verificação e o algoritmo são especificados, o módulo de ação baixa o arquivo somente se a soma de verificação e o hash de qualquer arquivo preexistente não corresponderem.  | Booleano | Não | true | 
| checksum | Quando você especifica a soma de verificação, ela é comparada com o hash do arquivo baixado que é gerado com o algoritmo fornecido. Para que a verificação do arquivo seja ativada, a soma de verificação e o algoritmo devem ser fornecidos. Expressões de encadeamento são permitidas.  | String | Não | N/D | 
| algorithm | O algoritmo usado para calcular a soma de verificação. As opções são MD5 SHA1 SHA256,, SHA512 e. Para que a verificação do arquivo seja ativada, a soma de verificação e o algoritmo devem ser fornecidos. Expressões de encadeamento são permitidas.  | String | Não | N/D | 
| ignoreCertificateErrors | A validação do certificado SSL é ignorada quando ativada. | Booleano | Não | false | 


**Output**  

| Nome da chave | Description | Tipo | 
| --- | --- | --- | 
| destination | String delimitada por caracteres de nova linha que especifica o caminho de destino em que os arquivos ou recursos baixados são armazenados. | String | 

**Exemplo de entrada: baixar arquivo remoto no destino local**

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

**Saída**:

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

**Exemplo de entrada: baixe mais de um arquivo remoto em mais de um 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/
```

**Saída**:

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

**Exemplo de entrada: baixe um arquivo remoto sem sobrescrever o destino local e baixe outro arquivo remoto com verificação de arquivo**

```
  - 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
```

**Saída**:

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

**Exemplo de entrada: baixe o arquivo remoto e ignore a validação da certificação SSL**

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

**Saída**:

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

## Módulos de operações do sistema de arquivos
<a name="action-modules-file-system-operations"></a>

A seção a seguir contém detalhes dos módulos de ação que executam operações do sistema de arquivos.

**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>

O módulo de **AppendFile**ação adiciona conteúdo especificado ao conteúdo preexistente de um arquivo.

Se o valor da codificação do arquivo for diferente do valor padrão de codificação (`utf-8`), você poderá especificar o valor da codificação do arquivo usando a opção `encoding`. Por padrão, presume-se que `utf-16` e `utf-32` usam a codificação little-endian. 

O módulo de ação retorna um erro quando ocorre o seguinte:
+ O arquivo especificado não existe no runtime.
+ Você não tem permissões de gravação para modificar o conteúdo do arquivo.
+ O módulo encontra um erro durante a operação do arquivo.


**Input**  

| Nome da chave | Description | Tipo | Obrigatório | Valor padrão  | Valores aceitos | Compatível com todas as plataformas | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | O caminho do arquivo. | String | Sim | N/D | N/D | Sim | 
| content | O conteúdo a ser anexado ao arquivo. | String | Não | String vazia | N/D | Sim | 
| encoding | O padrão de codificação. | String | Não | 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 e  utf-32-BE. O valor da opção de codificação não diferencia maiúsculas de minúsculas. | Sim | 

**Exemplo de entrada: anexar arquivo sem codificação (Linux)**

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

**Exemplo de entrada: anexar arquivo sem codificação (Windows)**

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

**Exemplo de entrada: anexar arquivo com codificação (Linux)**

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

**Exemplo de entrada: anexar arquivo com codificação (Windows)**

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

**Exemplo de entrada: anexar arquivo com string vazio (Linux)**

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

**Exemplo de entrada: anexar arquivo com string vazio (Windows)**

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

**Output**  
Nenhum.

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

O módulo de **CopyFile**ação copia arquivos da fonte especificada para o destino especificado. Por padrão, o módulo cria recursivamente a pasta de destino se ela não existir no runtime.

Se um arquivo com o nome especificado já existir na pasta especificada, o módulo de ação, por padrão, substituirá o arquivo existente. Você pode substituir esse comportamento padrão configurando a opção de substituição como `false`. Quando a opção de substituição estiver definida como `false`, e um arquivo já estiver no local especificado com o nome especificado, o módulo de ação retornará um erro. Essa opção funciona da mesma forma que o comando `cp` no Linux, que substitui por padrão.

O nome do arquivo de origem pode incluir um curinga (`*`). Caracteres curinga são aceitos somente após o último separador de caminho de arquivo (`/` ou `\`). Se caracteres curinga forem incluídos no nome do arquivo de origem, todos os arquivos que corresponderem ao curinga serão copiados para a pasta de destino. Se você quiser mover mais de um arquivo usando um caractere curinga, a entrada para a opção `destination` deverá terminar com um separador de caminho de arquivo (`/` ou `\`), que indica que a entrada de destino é uma pasta.

Se o nome do arquivo de destino for diferente do nome do arquivo de origem, você poderá especificar o nome do arquivo de destino usando a opção `destination`. Se você não especificar um nome de arquivo de destino, o nome do arquivo de origem será usado para criar o arquivo de destino. Qualquer texto que siga o último separador de caminho de arquivo (`/` ou `\`) será tratado como o nome do arquivo. Se você quiser usar o mesmo nome de arquivo do arquivo de origem, a entrada da opção `destination` deverá terminar com um separador de caminho de arquivo (`/` ou `\`). 

O módulo de ação retorna um erro quando ocorre o seguinte:
+ Você não tem a permissão para criar um arquivo na pasta especificada.
+ Os arquivos de origem não existem no runtime.
+ Já existe uma pasta com o nome de arquivo especificado e a `overwrite`opção está definida como `false`.
+ O módulo de ação encontra um erro ao executar a operação.


**Input**  

| Nome da chave | Description | Tipo | Obrigatório | Valor padrão  | Valores aceitos | Compatível com todas as plataformas | 
| --- | --- | --- | --- | --- | --- | --- | 
| source | O caminho do arquivo de origem. | String | Sim | N/D | N/D | Sim | 
| destination | O caminho do arquivo de destino. | String | Sim | N/D | N/D | Sim | 
| overwrite | Quando definido como false, os arquivos de destino não serão substituídos quando já houver um arquivo no local especificado com o nome especificado. | Booleano | Não | true | N/D | Sim | 

**Exemplo de entrada: copiar um arquivo (Linux)**

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

**Exemplo de entrada: copiar um arquivo (Windows)**

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

**Exemplo de entrada: copiar um arquivo usando o nome do arquivo de origem (Linux)**

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

**Exemplo de entrada: copiar um arquivo usando o nome do arquivo de origem (Windows)**

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

**Exemplo de entrada: copiar um arquivo usando o caractere curinga (Linux)**

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

**Exemplo de entrada: copiar um arquivo usando o caractere curinga (Windows)**

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

**Exemplo de entrada: copiar um arquivo sem substituir (Linux)**

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

**Exemplo de entrada: copiar um arquivo sem substituir (Windows)**

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

**Output**  
Nenhum.

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

O módulo de **CopyFolder**ação copia uma pasta da origem especificada para o destino especificado. A entrada para a opção `source` é a pasta a ser copiada, e a entrada para a opção `destination` é a pasta em que o conteúdo da pasta de origem é copiado. Por padrão, o módulo cria recursivamente a pasta de destino se ela não existir no runtime.

Se uma pasta com o nome especificado já existir na pasta especificada, o módulo de ação, por padrão, substituirá a pasta existente. Você pode substituir esse comportamento padrão configurando a opção de substituição como `false`. Quando a opção de substituição estiver definida como `false` e já houver uma pasta no local especificado com o nome especificado, o módulo de ação retornará um erro.

O nome da pasta de origem pode incluir um curinga (`*`). Caracteres curinga são aceitos somente após o último separador de caminho de arquivo (`/` ou `\`). Se caracteres curinga forem incluídos no nome da pasta de origem, todas as pastas que corresponderem ao curinga serão copiados para a pasta de destino. Se você quiser copiar mais de uma pasta usando um caractere curinga, a entrada para a opção `destination` deverá terminar com um separador de caminho de arquivo (`/` ou `\`), que indica que a entrada de destino é uma pasta.

Se o nome da pasta de destino for diferente do nome da pasta de origem, você poderá especificar o nome do arquivo da pasta usando a opção `destination`. Se você não especificar um nome da pasta de destino, o nome da pasta de origem será usado para criar a pasta de destino. Qualquer texto que siga o último separador de caminho de arquivo (`/` ou `\`) será tratado como o nome da pasta. Se você quiser usar o mesmo nome de pasta da pasta de origem, a entrada da opção `destination` deverá terminar com um separador de caminho de arquivo (`/` ou `\`). 

O módulo de ação retorna um erro quando ocorre o seguinte:
+ Você não tem a permissão para criar uma pasta na pasta especificada.
+ As pastas de origem não existem no runtime.
+ Já existe uma pasta com o nome de pasta especificado e a `overwrite`opção está definida como `false`.
+ O módulo de ação encontra um erro ao executar a operação.


**Input**  

| Nome da chave | Description | Tipo | Obrigatório | Valor padrão  | Valores aceitos | Compatível com todas as plataformas | 
| --- | --- | --- | --- | --- | --- | --- | 
| source | O caminho da pasta de origem. | String | Sim | N/D | N/D | Sim | 
| destination | O caminho da pasta de destino. | String | Sim | N/D | N/D | Sim | 
| overwrite | Quando definido como false, as pastas de destino não serão substituídas quando já houver uma pasta no local especificado com o nome especificado. | Booleano | Não | true | N/D | Sim | 

**Exemplo de entrada: copiar uma pasta (Linux)**

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

**Exemplo de entrada: copiar uma pasta (Windows)**

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

**Exemplo de entrada: copiar uma pasta usando o nome da pasta de origem (Linux)**

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

**Exemplo de entrada: copiar uma pasta usando o nome da pasta de origem (Windows)**

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

**Exemplo de entrada: copiar uma pasta usando o caractere curinga (Linux)**

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

**Exemplo de entrada: copiar uma pasta usando o caractere curinga (Windows)**

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

**Exemplo de entrada: copiar uma pasta sem substituir (Linux)**

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

**Exemplo de entrada: copiar uma pasta sem substituir (Windows)**

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

**Output**  
Nenhum.

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

O módulo de **CreateFile**ação cria um arquivo em um local especificado. Por padrão, se necessário, o módulo também cria as pastas principais recursivamente.

Se um arquivo já existir na pasta especificada, o módulo de ação, por padrão, truncará ou substituirá o arquivo existente. Você pode substituir esse comportamento padrão configurando a opção de substituição como `false`. Quando a opção de substituição estiver definida como `false`, e um arquivo já estiver no local especificado com o nome especificado, o módulo de ação retornará um erro.

Se o valor da codificação do arquivo for diferente do valor padrão de codificação (`utf-8`), você poderá especificar o valor da codificação do arquivo usando a opção `encoding`. Por padrão, presume-se que `utf-16` e `utf-32` usam a codificação little-endian. 

`owner`,`group` e `permissions` são entradas opcionais. A entrada para `permissions` deve ser um valor de string. Os arquivos são criados com valores padrão quando não são fornecidos. Essas opções não são suportadas nas plataformas Windows. Esse módulo de ação valida e retorna um erro se as opções `owner`, `group` e `permissions` forem usadas em plataformas Windows.

Esse módulo de ação pode criar um arquivo com permissões definidas pelo valor padrão `umask` do sistema operacional. Você deve definir o valor `umask` se quiser substituir o valor padrão.

O módulo de ação retorna um erro quando ocorre o seguinte:
+ Você não tem a permissão para criar um arquivo ou uma pasta na pasta parent especificada.
+ O módulo de ação encontra um erro ao executar a operação.


**Input**  

| Nome da chave | Description | Tipo | Obrigatório | Valor padrão  | Valores aceitos | Compatível com todas as plataformas | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | O caminho do arquivo. | String | Sim | N/D | N/D | Sim | 
| content | O conteúdo de texto do arquivo. | String | Não | N/D | N/D | Sim | 
| encoding | O padrão de codificação. | String | Não | 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 e  utf-32-BE. O valor da opção de codificação não diferencia maiúsculas de minúsculas. | Sim | 
| owner | O nome do usuário ou ID. | String | Não | N/D | N/D | Não compatível com Windows. | 
| group | O nome ou ID do grupo. | String | Não | O usuário atual. | N/D | Não compatível com Windows. | 
| permissions | As permissões de arquivo. | String | Não | 0666 | N/D | Não compatível com Windows. | 
| overwrite | Se o nome do arquivo especificado já existir, definir esse valor como false evita que o arquivo seja truncado ou substituído por padrão. | Booleano | Não | true | N/D | Sim | 

**Exemplo de entrada: criar um arquivo sem substituir (Linux)**

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

**Exemplo de entrada: criar um arquivo sem substituir (Windows)**

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

**Exemplo de entrada: criar um arquivo com propriedades do arquivo**

```
  - 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
```

**Exemplo de entrada: criar um arquivo sem propriedades do arquivo**

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

**Exemplo de entrada: criar um arquivo vazio para ignorar uma seção no script de limpeza do Linux**

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

Para obter mais informações, consulte [Substitua o script de limpeza do Linux](security-best-practices.md#override-linux-cleanup-script).

**Output**  
Nenhum.

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

O módulo de **CreateFolder**ação cria uma pasta em um local especificado. Por padrão, se necessário, o módulo também cria as pastas principais recursivamente.

Se a pasta já existir na pasta especificada, o módulo de ação, por padrão, truncará ou substituirá a pasta existente. Você pode substituir esse comportamento padrão configurando a opção de substituição como `false`. Quando a opção de substituição estiver definida como `false` e já houver uma pasta no local especificado com o nome especificado, o módulo de ação retornará um erro.

`owner`,`group` e `permissions` são entradas opcionais. A entrada para `permissions` deve ser um valor de string. Essas opções não são suportadas nas plataformas Windows. Esse módulo de ação valida e retorna um erro se as opções `owner`, `group` e `permissions` forem usadas em plataformas Windows.

Esse módulo de ação pode criar uma pasta com permissões definidas pelo valor padrão `umask` do sistema operacional. Você deve definir o valor `umask` se quiser substituir o valor padrão.

O módulo de ação retorna um erro quando ocorre o seguinte:
+ Você não tem permissão para criar uma pasta no local especificado.
+ O módulo de ação encontra um erro ao executar a operação.


**Input**  

| Nome da chave | Description | Tipo | Obrigatório | Valor padrão  | Valores aceitos | Compatível com todas as plataformas | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | O caminho da pasta. | String | Sim | N/D | N/D | Sim | 
| owner | O nome do usuário ou ID. | String | Não | O usuário atual. | N/D | Não compatível com Windows. | 
| group | O nome ou ID do grupo. | String | Não | O grupo do usuário atual. | N/D | Não compatível com Windows. | 
| permissions | As permissões da pasta. | String | Não | 0777 | N/D | Não compatível com Windows. | 
| overwrite | Se o nome do arquivo especificado já existir, definir esse valor como false evita que o arquivo seja truncado ou substituído por padrão. | Booleano | Não | true | N/D | Sim | 

**Exemplo de entrada: criar uma pasta (Linux)**

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

**Exemplo de entrada: criar uma pasta (Windows)**

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

**Exemplo de entrada: criar uma pasta especificando as propriedades da pasta**

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

**Exemplo de entrada: criar uma pasta que substitua a pasta existente, se houver uma.**

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

**Output**  
Nenhum.

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

O módulo de **CreateSymlink**ação cria links simbólicos ou arquivos que contêm uma referência a outro arquivo. Este módulo não é compatível com plataformas Windows. 

A entrada para as opções `path` e `target` pode ser um caminho absoluto ou relativo. Se a entrada da opção `path` for um caminho relativo, ela será substituída pelo caminho absoluto quando o link for criado.

Por padrão, quando um link com o nome especificado já existe na pasta especificada, o módulo de ação retorna um erro. Você pode substituir esse comportamento padrão configurando a opção `force` como `true`. Quando a opção `force` estiver definida como `true`, o módulo substituirá o link existente.

Se uma pasta principal não existir, o módulo de ação cria a pasta recursivamente, por padrão.

O módulo de ação retorna um erro quando ocorre o seguinte:
+ O arquivo de destino não existe no runtime.
+ Já existe um arquivo de link não simbólico com o nome especificado.
+ O módulo de ação encontra um erro ao executar a operação.


**Input**  

| Nome da chave | Description | Tipo | Obrigatório | Valor padrão  | Valores aceitos | Compatível com todas as plataformas | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | O caminho do arquivo. | String | Sim | N/D | N/D | Não compatível com Windows. | 
| target | O caminho do arquivo de destino para o qual o link simbólico aponta. | String | Sim | N/D | N/D | Não compatível com Windows. | 
| force | Força a criação de um link quando já existe um link com o mesmo nome. | Booleano | Não | false | N/D | Não compatível com Windows. | 

**Exemplo de entrada: criar um link simbólico que força a criação de um link**

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

**Exemplo de entrada: criar um link simbólico que não força a criação de um link**

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

**Output**  
Nenhum.

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

O módulo de **DeleteFile**ação exclui um arquivo ou arquivos em um local especificado.

A entrada de `path` deve ser um caminho de arquivo válido ou um caminho de arquivo com um caractere curinga (`*`) no nome do arquivo. Quando caracteres curinga são especificados no nome do arquivo, todos os arquivos na mesma pasta que correspondam ao curinga são excluídos. 

O módulo de ação retorna um erro quando ocorre o seguinte:
+ Você não tem a permissão para realizar a operação solicitada.
+ O módulo de ação encontra um erro ao executar a operação.


**Input**  

| Nome da chave | Description | Tipo | Obrigatório | Valor padrão  | Valores aceitos | Compatível com todas as plataformas | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | O caminho do arquivo. | String | Sim | N/D | N/D | Sim | 

**Exemplo de entrada: excluir um único arquivo (Linux)**

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

**Exemplo de entrada: excluir um único arquivo (Windows)**

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

**Exemplo de entrada: excluir um arquivo que termina com “log” (Linux)**

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

**Exemplo de entrada: excluir um arquivo que termina com “log” (Windows)**

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

**Exemplo de entrada: excluir todos os arquivos em uma pasta especificada (Linux)**

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

**Exemplo de entrada: excluir todos os arquivos em uma pasta especificada (Windows)**

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

**Output**  
Nenhum.

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

O módulo de **DeleteFolder**ação exclui pastas.

Se a pasta não estiver vazia, você deverá definir a `force` opção `true` para remover a pasta e seu conteúdo. Se você não definir a opção `force` como `true` e a pasta que você está tentando excluir não estiver vazia, o módulo de ação retornará um erro. O valor padrão da opção `force` é `false`.

O módulo de ação retorna um erro quando ocorre o seguinte:
+ Você não tem a permissão para realizar a operação solicitada.
+ O módulo de ação encontra um erro ao executar a operação.


**Input**  

| Nome da chave | Description | Tipo | Obrigatório | Valor padrão  | Valores aceitos | Compatível com todas as plataformas | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | O caminho da pasta. | String | Sim | N/D | N/D | Sim | 
| force | Remove a pasta, esteja ela vazia ou não. | Booleano | Não | false | N/D | Sim | 

**Exemplo de entrada: excluir uma pasta que não esteja vazia usando a `force` opção (Linux)** 

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

**Exemplo de entrada: excluir uma pasta que não esteja vazia usando a `force` opção (Windows)** 

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

**Exemplo de entrada: excluir uma pasta (Linux)** 

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

**Exemplo de entrada: excluir uma pasta (Windows)** 

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

**Output**  
Nenhum.

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

O módulo de **ListFiles**ação lista os arquivos em uma pasta especificada. Quando a opção recursiva está definida como `true`, ela lista os arquivos nas subpastas. Por padrão, este módulo não lista arquivos em subpastas.

Para listar todos os arquivos com nomes que correspondam a um padrão especificado, use a opção `fileNamePattern` para fornecer o padrão. A opção `fileNamePattern` aceita o valor curinga (`*`). Quando o `fileNamePattern` é fornecido, todos os arquivos que correspondem ao formato de nome de arquivo especificado são retornados. 

O módulo de ação retorna um erro quando ocorre o seguinte:
+ A pasta especificada não existe no runtime.
+ Você não tem a permissão para criar um arquivo ou uma pasta na pasta parent especificada.
+ O módulo de ação encontra um erro ao executar a operação.


**Input**  

| Nome da chave | Description | Tipo | Obrigatório | Valor padrão  | Valores aceitos | Compatível com todas as plataformas | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | O caminho da pasta. | String | Sim | N/D | N/D | Sim | 
| fileNamePattern | O padrão a ser correspondido ao listar todos os arquivos com nomes que correspondam ao padrão. | String | Não | N/D | N/D | Sim | 
| recursive | Lista os arquivos na pasta recursivamente. | Booleano | Não | false | N/D | Sim | 

**Exemplo de entrada: listar todos os arquivos em uma pasta especificada (Linux)**

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

**Exemplo de entrada: listar todos os arquivos em uma pasta especificada (Windows)**

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

**Exemplo de entrada: listar arquivos que terminam com “log” (Linux)**

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

**Exemplo de entrada: listar arquivos que terminam com “log” (Windows)**

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

**Exemplo de entrada: listar arquivos recursivamente**

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


**Output**  

| Nome da chave | Description | Tipo | 
| --- | --- | --- | 
| files | A lista de arquivos. | String | 

**Exemplo de saída**

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

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

O módulo de **MoveFile**ação move arquivos da fonte especificada para o destino especificado.

Se um arquivo já existir na pasta especificada, o módulo de ação, por padrão, substituirá o arquivo existente. Você pode substituir esse comportamento padrão configurando a opção de substituição como `false`. Quando a opção de substituição estiver definida como `false`, e um arquivo já estiver no local especificado com o nome especificado, o módulo de ação retornará um erro. Essa opção funciona da mesma forma que o comando `mv` no Linux, que substitui por padrão.

O nome do arquivo de origem pode incluir um curinga (`*`). Caracteres curinga são aceitos somente após o último separador de caminho de arquivo (`/` ou `\`). Se caracteres curinga forem incluídos no nome do arquivo de origem, todos os arquivos que corresponderem ao curinga serão copiados para a pasta de destino. Se você quiser mover mais de um arquivo usando um caractere curinga, a entrada para a opção `destination` deverá terminar com um separador de caminho de arquivo (`/` ou `\`), que indica que a entrada de destino é uma pasta.

Se o nome do arquivo de destino for diferente do nome do arquivo de origem, você poderá especificar o nome do arquivo de destino usando a opção `destination`. Se você não especificar um nome de arquivo de destino, o nome do arquivo de origem será usado para criar o arquivo de destino. Qualquer texto que siga o último separador de caminho de arquivo (`/` ou `\`) será tratado como o nome do arquivo. Se você quiser usar o mesmo nome de arquivo do arquivo de origem, a entrada da opção `destination` deverá terminar com um separador de caminho de arquivo (`/` ou `\`). 

O módulo de ação retorna um erro quando ocorre o seguinte:
+ Você não tem a permissão para criar um arquivo na pasta especificada.
+ Os arquivos de origem não existem no runtime.
+ Já existe uma pasta com o nome de arquivo especificado e a `overwrite`opção está definida como `false`.
+ O módulo de ação encontra um erro ao executar a operação.


**Input**  

| Nome da chave | Description | Tipo | Obrigatório | Valor padrão  | Valores aceitos | Compatível com todas as plataformas | 
| --- | --- | --- | --- | --- | --- | --- | 
| source | O caminho do arquivo de origem. | String | Sim | N/D | N/D | Sim | 
| destination | O caminho do arquivo de destino. | String | Sim | N/D | N/D | Sim | 
| overwrite | Quando definido como false, os arquivos de destino não serão substituídos quando já houver um arquivo no local especificado com o nome especificado. | Booleano | Não | true | N/D | Sim | 

**Exemplo de entrada: mover um arquivo (Linux)**

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

**Exemplo de entrada: mover um arquivo (Windows)**

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

**Exemplo de entrada: mover um arquivo usando o nome do arquivo de origem (Linux)**

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

**Exemplo de entrada: mover um arquivo usando o nome do arquivo de origem (Windows)**

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

**Exemplo de entrada: mover um arquivo usando o caractere curinga (Linux)**

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

**Exemplo de entrada: mover um arquivo usando o caractere curinga (Windows)**

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

**Exemplo de entrada: mover um arquivo sem substituir (Linux)**

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

**Exemplo de entrada: mover um arquivo sem substituir (Windows)**

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

**Output**  
Nenhum.

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

O módulo de **MoveFolder**ação move as pastas da origem especificada para o destino especificado. A entrada para a opção `source` é a pasta a ser movida, e a entrada para a opção `destination` é a pasta para a qual o conteúdo das pastas de origem é movido.

Se a pasta parent de destino ou a entrada para a opção `destination` não existirem no runtime, o comportamento padrão do módulo é criar a pasta no destino especificado recursivamente.

Se uma pasta igual à pasta de origem já existir na pasta de destino, o módulo de ação, por padrão, substituirá a pasta existente. Você pode substituir esse comportamento padrão configurando a opção de substituição como `false`. Quando a opção de substituição estiver definida como `false` e já houver uma pasta no local especificado com o nome especificado, o módulo de ação retornará um erro.

O nome da pasta de origem pode incluir um curinga (`*`). Caracteres curinga são aceitos somente após o último separador de caminho de arquivo (`/` ou `\`). Se caracteres curinga forem incluídos no nome da pasta de origem, todas as pastas que corresponderem ao curinga serão copiados para a pasta de destino. Se você quiser mover mais de uma pasta usando um caractere curinga, a entrada para a opção `destination` deverá terminar com um separador de caminho de arquivo (`/` ou `\`), que indica que a entrada de destino é uma pasta.

Se o nome da pasta de destino for diferente do nome da pasta de origem, você poderá especificar o nome do arquivo da pasta usando a opção `destination`. Se você não especificar um nome da pasta de destino, o nome da pasta de origem será usado para criar a pasta de destino. Qualquer texto que siga o último separador de caminho de arquivo (`/` ou `\`) será tratado como o nome da pasta. Se você quiser usar o mesmo nome de pasta da pasta de origem, a entrada da opção `destination` deverá terminar com um separador de caminho de arquivo (`/` ou `\`). 

O módulo de ação retorna um erro quando ocorre o seguinte:
+ Você não tem a permissão para criar uma pasta na pasta de destino.
+ As pastas de origem não existem no runtime.
+ Já existe uma pasta com o nome especificado e a opção `overwrite` está definida como `false`.
+ O módulo de ação encontra um erro ao executar a operação.


**Input**  

| Nome da chave | Description | Tipo | Obrigatório | Valor padrão  | Valores aceitos | Compatível com todas as plataformas | 
| --- | --- | --- | --- | --- | --- | --- | 
| source | O caminho da pasta de origem. | String | Sim | N/D | N/D | Sim | 
| destination | O caminho da pasta de destino. | String | Sim | N/D | N/D | Sim | 
| overwrite | Quando definido como false, as pastas de destino não serão substituídas quando já houver uma pasta no local especificado com o nome especificado. | Booleano | Não | true | N/D | Sim | 

**Exemplo de entrada: mover uma pasta (Linux)**

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

**Exemplo de entrada: mover uma pasta (Windows)**

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

**Exemplo de entrada: mover uma pasta usando o nome da pasta de origem (Linux)**

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

**Exemplo de entrada: mover uma pasta usando o nome da pasta de origem (Windows)**

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

**Exemplo de entrada: mover uma pasta usando o caractere curinga (Linux)**

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

**Exemplo de entrada: mover uma pasta usando o caractere curinga (Windows)**

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

**Exemplo de entrada: mover uma pasta sem substituir (Linux)**

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

**Exemplo de entrada: mover uma pasta sem substituir (Windows)**

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

**Output**  
Nenhum.

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

O módulo de **ReadFile**ação lê o conteúdo de um arquivo de texto do tipo string. Esse módulo pode ser usado para ler o conteúdo de um arquivo para uso em etapas subsequentes por meio de encadeamento ou para ler dados no arquivo do `console.log`. Se o caminho especificado for um link simbólico, este módulo retornará o conteúdo do arquivo de destino. Este módulo só oferece suporte a arquivos de texto.

Se o valor da codificação do arquivo for diferente do valor padrão de codificação (`utf-8`), você poderá especificar o valor da codificação do arquivo usando a opção `encoding`. Por padrão, presume-se que `utf-16` e `utf-32` usam a codificação little-endian. 

Por padrão, esse módulo não pode imprimir o conteúdo do arquivo no arquivo do `console.log`. Você pode substituir essa configuração definindo a propriedade `printFileContent` como `true`.

Esse módulo pode retornar somente o conteúdo de um arquivo. Ele não pode analisar arquivos, como arquivos Excel ou JSON.

O módulo de ação retorna um erro quando ocorre o seguinte:
+ O arquivo não existe no runtime.
+ O módulo de ação encontra um erro ao executar a operação.


**Input**  

| Nome da chave | Description | Tipo | Obrigatório | Valor padrão  | Valores aceitos | Compatível com todas as plataformas | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | O caminho do arquivo. | String | Sim | N/D | N/D | Sim | 
| encoding | O padrão de codificação. | String | Não | 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 e  utf-32-BE. O valor da opção de codificação não diferencia maiúsculas de minúsculas. | Sim | 
| printFileContent | Imprime o conteúdo do arquivo no arquivo console.log. | Booleano | Não | false | N/D | Sim. | 

**Exemplo de entrada: ler um arquivo (Linux)**

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

**Exemplo de entrada: ler um arquivo (Windows)**

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

**Exemplo de entrada: ler um arquivo e especificar o padrão de codificação**

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

**Exemplo de entrada: ler um arquivo e imprimir no `console.log` arquivo do**

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


**Output**  

| Campo | Description | Tipo | 
| --- | --- | --- | 
| content | O conteúdo do arquivo. | string | 

**Exemplo de saída**

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

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

O módulo de **SetFileEncoding**ação modifica a propriedade de codificação de um arquivo existente. Este módulo pode converter a codificação do arquivo do `utf-8` em um padrão de codificação especificado. Por padrão, presume-se que `utf-16` e `utf-32` usam a codificação little-endian.

O módulo de ação retorna um erro quando ocorre o seguinte:
+ Você não tem a permissão para realizar a modificação especificada.
+ O arquivo não existe no runtime.
+ O módulo de ação encontra um erro ao executar a operação.


**Input**  

| Nome da chave | Description | Tipo | Obrigatório | Valor padrão  | Valores aceitos | Compatível com todas as plataformas | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | O caminho do arquivo. | String | Sim | N/D | N/D | Sim | 
| encoding | O padrão de codificação. | String | Não | 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 e  utf-32-BE. O valor da opção de codificação não diferencia maiúsculas de minúsculas. | Sim | 

**Exemplo de entrada: definir propriedade de codificação do arquivo**

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

**Output**  
Nenhum.

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

O módulo de **SetFileOwner**ação modifica as propriedades `owner` e do `group` proprietário de um arquivo existente. Se o arquivo especificado for um link simbólico, o módulo modifica a propriedade `owner` do arquivo de origem. Este módulo não é compatível com plataformas Windows. 

Este módulo aceita nomes de usuários e grupos como entradas. Se o nome do grupo não for fornecido, o módulo atribuirá o proprietário do grupo do arquivo ao grupo ao qual o usuário pertence.

O módulo de ação retorna um erro quando ocorre o seguinte:
+ Você não tem a permissão para realizar a modificação especificada.
+ O nome do usuário ou grupo especificado não existe no runtime.
+ O arquivo não existe no runtime.
+ O módulo de ação encontra um erro ao executar a operação.


**Input**  

| Nome da chave | Description | Tipo | Obrigatório | Valor padrão  | Valores aceitos | Compatível com todas as plataformas | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | O caminho do arquivo. | String | Sim | N/D | N/D | Não compatível com Windows. | 
| owner | O nome do usuário. | string | Sim | N/D | N/D | Não compatível com Windows. | 
| group | O nome do grupo de usuários.  | String | Não | O nome do grupo ao qual o usuário pertence. | N/D | Não compatível com Windows. | 

**Exemplo de entrada: definir a propriedade do proprietário do arquivo sem especificar o nome do grupo de usuários**

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

**Exemplo de entrada: definir a propriedade do proprietário do arquivo especificando o nome do grupo de usuários**

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

**Output**  
Nenhum.

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

O módulo de **SetFolderOwner**ação modifica recursivamente as propriedades `owner` e o `group` proprietário de uma pasta existente. Por padrão, o módulo pode modificar a propriedade de todo o conteúdo de uma pasta. Você pode configurar a opção `recursive` para `false` para substituir esse comportamento. Este módulo não é compatível com plataformas Windows. 

Este módulo aceita nomes de usuários e grupos como entradas. Se o nome do grupo não for fornecido, o módulo atribuirá o proprietário do grupo do arquivo ao grupo ao qual o usuário pertence.

O módulo de ação retorna um erro quando ocorre o seguinte:
+ Você não tem a permissão para realizar a modificação especificada.
+ O nome do usuário ou grupo especificado não existe no runtime.
+ A pasta não existe no runtime.
+ O módulo de ação encontra um erro ao executar a operação.


**Input**  

| Nome da chave | Description | Tipo | Obrigatório | Valor padrão  | Valores aceitos | Compatível com todas as plataformas | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | O caminho da pasta. | String | Sim | N/D | N/D | Não compatível com Windows. | 
| owner | O nome do usuário. | string | Sim | N/D | N/D | Não compatível com Windows. | 
| group | O nome do grupo de usuários.  | String | Não | O nome do grupo ao qual o usuário pertence. | N/D | Não compatível com Windows. | 
| recursive | Substitui o comportamento padrão de modificar a propriedade de todo o conteúdo de uma pasta quando definido como false. | Booleano | Não | true | N/D | Não compatível com Windows. | 

**Exemplo de entrada: definir a propriedade do proprietário da pasta sem especificar o nome do grupo de usuários**

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

**Exemplo de entrada: definir a propriedade do proprietário da pasta sem substituir a propriedade de todo o conteúdo em uma pasta **

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

**Exemplo de entrada: definir a propriedade do arquivo especificando o nome do grupo de usuários**

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

**Output**  
Nenhum.

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

O módulo de **SetFilePermissions**ação modifica o `permissions` de um arquivo existente. Este módulo não é compatível com plataformas Windows. 

A entrada para `permissions` deve ser um valor de string.

Esse módulo de ação pode criar um arquivo com permissões definidas pelo valor unmask padrão do sistema operacional. Você deve definir o valor `umask` se quiser substituir o valor padrão.

O módulo de ação retorna um erro quando ocorre o seguinte:
+ Você não tem a permissão para realizar a modificação especificada.
+ O arquivo não existe no runtime.
+ O módulo de ação encontra um erro ao executar a operação.


**Input**  

| Nome da chave | Description | Tipo | Obrigatório | Valor padrão  | Valores aceitos | Compatível com todas as plataformas | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | O caminho do arquivo. | String | Sim | N/D | N/D | Não compatível com Windows. | 
| permissions | As permissões de arquivo. | String | Sim | N/D | N/D | Não compatível com Windows. | 

**Exemplo de entrada: modificar permissões de arquivo**

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

**Output**  
Nenhum.

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

O módulo de **SetFolderPermissions**ação modifica recursivamente a `permissions` pasta existente e todos os seus subarquivos e subpastas. Por padrão, esse módulo pode modificar as permissões para todo o conteúdo da pasta especificada. Você pode configurar a `recursive` opção para `false` para substituir esse comportamento. Este módulo não é compatível com plataformas Windows. 

A entrada para `permissions` deve ser um valor de string. 

Esse módulo de ação pode modificar as permissões de acordo com o valor umask padrão do sistema operacional. Você deve definir o valor `umask` se quiser substituir o valor padrão.

O módulo de ação retorna um erro quando ocorre o seguinte:
+ Você não tem a permissão para realizar a modificação especificada.
+ A pasta não existe no runtime.
+ O módulo de ação encontra um erro ao executar a operação.


**Input**  

| Nome da chave | Description | Tipo | Obrigatório | Valor padrão  | Valores aceitos | Compatível com todas as plataformas | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | O caminho da pasta. | String | Sim | N/D | N/D | Não compatível com Windows. | 
| permissions | As permissões da pasta. | String | Sim | N/D | N/D | Não compatível com Windows. | 
| recursive | Substitui o comportamento padrão de modificar as permissões de todo o conteúdo de uma pasta quando definido como false. | Booleano | Não | true | N/D | Não compatível com Windows. | 

**Exemplo de entrada: definir permissões de pasta**

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

**Exemplo de entrada: definir permissões de pasta sem modificar as permissões para todo o conteúdo de uma pasta**

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

**Output**  
Nenhum.

## Ações de instalação de software
<a name="action-modules-software-install-actions"></a>

A seção a seguir descreve os módulos de ação que instalam ou desinstalam software.

**Requisitos do IAM**  
Se o caminho de download da instalação for um URI do S3, o perfil do IAM associado ao perfil de instância deverá ter permissão para executar o módulo de ação `S3Download`. Para conceder a permissão necessária, anexe a `S3:GetObject` política do IAM ao perfil do IAM associada ao seu perfil de instância e especifique o caminho para seu bucket. Por exemplo, `arn:aws:s3:::BucketName/*`.

**Entradas MSI complexas**  
Se suas cadeias de caracteres de entrada contiverem aspas duplas (`"`), você deverá usar um dos seguintes métodos para garantir que elas sejam interpretadas corretamente:
+ Você pode usar aspas simples (') na parte externa da string, para contê-la, e aspas duplas (“) dentro da string, conforme mostrado no exemplo a seguir.

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

  Nesse caso, se você precisar usar um apóstrofo dentro de sua string, deverá contorná-la. Isso significa usar outra aspa simples (') antes do apóstrofo.
+ Você pode usar aspas duplas (“) na parte externa da string para contê-la. E você pode contornar qualquer aspa dupla dentro de sua string, usando o caractere de barra invertida (`\`), conforme mostrado no exemplo a seguir.

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

Ambos os métodos passam o valor `COMPANYNAME="Acme ""Widgets"" and ""Gizmos."""` para o comando **msiexec**.

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

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

O módulo de ação `InstallMSI` instala um aplicativo do Windows usando um arquivo MSI. Você pode especificar o arquivo MSI usando um caminho local, um URI de objeto do S3 ou um URL da web. A opção de reinicialização configura o comportamento de reinicialização do sistema.

AWSTOE gera o **msiexec** comando com base nos parâmetros de entrada para o módulo de ação. Os valores dos parâmetros de entrada `path` (localização do arquivo MSI) e `logFile` (localização do arquivo de log) devem estar entre aspas (“).

Os seguintes códigos de saída MSI são considerados bem-sucedidos:
+ 0 (Sucesso)
+ 1614 (ERROR\$1PRODUCT\$1UNINSTALLED)
+ 1641 (reinicialização iniciada)
+ 3010 (reinicialização necessária)


**Input**  

| Nome da chave | Description | Tipo | Obrigatório | Valor padrão  | Valores aceitos | 
| --- | --- | --- | --- | --- | --- | 
| path |  Especifique o local do arquivo MSI usando uma das opções a seguir: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/imagebuilder/latest/userguide/toe-action-modules.html) Expressões de encadeamento são permitidas.  | String | Sim | N/D | N/D | 
| reboot |  Configure o comportamento de reinicialização do sistema após a execução bem-sucedida do módulo de ação. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/imagebuilder/latest/userguide/toe-action-modules.html)  | String | Não | Allow | Allow, Force, Skip | 
| logOptions |  Especifique as opções a serem usadas para o registro de instalação do MSI. Os sinalizadores especificados são passados para o instalador do MSI, junto com o parâmetro da linha do comando `/L` para ativar o registro. Se nenhum sinalizador for especificado, AWSTOE usa o valor padrão. Para obter mais informações sobre opções de log do MSI, consulte [Opções de linha de comando](https://learn.microsoft.com/en-us/windows/win32/msi/command-line-options) na documentação de produto do Microsoft *Windows Installer*.  | String | Não | \$1VX | i,w,e,a,r,u,c,m,o,p,v,x,\$1,\$1,\$1 | 
| logFile |  Um caminho absoluto ou relativo para a localização do arquivo de log. Se o caminho de log do arquivo não existir, será criado. Se o caminho do arquivo de log não for fornecido, AWSTOE não armazenará o log de instalação do MSI.  | String | Não | N/D | N/D | 
| properties |  Pares valores-chave de propriedades de registro MSI, por exemplo: `TARGETDIR: "C:\target\location"`   Observação: a modificação das seguintes propriedades não é permitida: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/imagebuilder/latest/userguide/toe-action-modules.html)  | Map[String]String | Não | N/D | N/D | 
| ignoreAuthenticodeSignatureErrors |  Sinalize para ignorar erros de validação de assinatura authenticode para o instalador especificado no caminho. O comando **Get-AuthenticodeSignature** é usado para validar os instaladores. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/imagebuilder/latest/userguide/toe-action-modules.html)  | Booleano | Não | false | true, false | 
| allowUnsignedInstaller |  Sinalize para permitir a execução do instalador não assinado especificado no caminho. O comando **Get-AuthenticodeSignature** é usado para validar os instaladores. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/imagebuilder/latest/userguide/toe-action-modules.html)  | Booleano | Não | false | true, false | 

**Exemplos**  
Os exemplos a seguir mostram variações da seção de entrada do documento do componente, dependendo do caminho de instalação.

**Exemplo de entrada: caminho de instalação do 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
```

**Exemplo de entrada: instalação do caminho do 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
```

**Exemplo de entrada: instalação do caminho da 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**  
Este é um exemplo da saída do módulo de ação `InstallMSI`.

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

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

O módulo de ação `UninstallMSI` permite que você remova um aplicativo do Windows usando um arquivo MSI. Você pode especificar o local do arquivo MSI usando um caminho local, um URI de objeto do S3 ou um URL da web. A opção de reinicialização configura o comportamento de reinicialização do sistema.

AWSTOE gera o **msiexec** comando com base nos parâmetros de entrada para o módulo de ação. A localização do arquivo MSI (`path`) e a localização do arquivo de log (`logFile`) são explicitamente colocadas entre aspas duplas (“) ao gerar o comando. **msiexec**

Os seguintes códigos de saída MSI são considerados bem-sucedidos:
+ 0 (Sucesso)
+ 1605 (ERROR\$1UNKNOWN\$1PRODUCT)
+ 1614 (ERROR\$1PRODUCT\$1UNINSTALLED)
+ 1641 (reinicialização iniciada)
+ 3010 (reinicialização necessária)


**Input**  

| Nome da chave | Description | Tipo | Obrigatório | Valor padrão  | Valores aceitos | 
| --- | --- | --- | --- | --- | --- | 
| path |  Especifique o local do arquivo MSI usando uma das opções a seguir: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/imagebuilder/latest/userguide/toe-action-modules.html) Expressões de encadeamento são permitidas.  | String | Sim | N/D | N/D | 
| reboot |  Configure o comportamento de reinicialização do sistema após a execução bem-sucedida do módulo de ação. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/imagebuilder/latest/userguide/toe-action-modules.html)  | String | Não | Allow | Allow, Force, Skip | 
| logOptions |  Especifique as opções a serem usadas para o registro de instalação do MSI. Os sinalizadores especificados são passados para o instalador do MSI, junto com o parâmetro da linha do comando `/L` para ativar o registro. Se nenhum sinalizador for especificado, AWSTOE usa o valor padrão. Para obter mais informações sobre opções de log do MSI, consulte [Opções de linha de comando](https://docs.microsoft.com/en-us/windows/win32/msi/command-line-options) na documentação de produto do Microsoft *Windows Installer*.  | String | Não | \$1VX | i,w,e,a,r,u,c,m,o,p,v,x,\$1,\$1,\$1 | 
| logFile |  Um caminho absoluto ou relativo para a localização do arquivo de log. Se o caminho de log do arquivo não existir, será criado. Se o caminho do arquivo de log não for fornecido, AWSTOE não armazenará o log de instalação do MSI.  | String | Não | N/D | N/D | 
| properties |  Pares valores-chave de propriedades de registro MSI, por exemplo: `TARGETDIR: "C:\target\location"`   Observação: a modificação das seguintes propriedades não é permitida: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/imagebuilder/latest/userguide/toe-action-modules.html)  | Map[String]String | Não | N/D | N/D | 
| ignoreAuthenticodeSignatureErrors |  Sinalize para ignorar erros de validação de assinatura authenticode para o instalador especificado no caminho. O comando **Get-AuthenticodeSignature** é usado para validar os instaladores. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/imagebuilder/latest/userguide/toe-action-modules.html)  | Booleano | Não | false | true, false | 
| allowUnsignedInstaller |  Sinalize para permitir a execução do instalador não assinado especificado no caminho. O comando **Get-AuthenticodeSignature** é usado para validar os instaladores. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/imagebuilder/latest/userguide/toe-action-modules.html)  | Booleano | Não | false | true, false | 

**Exemplos**  
Os exemplos a seguir mostram variações da seção de entrada do documento do componente, dependendo do caminho de instalação.

**Exemplo de entrada: remove a insta;ação do caminho do 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
```

**Exemplo de entrada: remove a instalação do caminho do 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
```

**Exemplo de entrada: remove a instalação do caminho da 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**  
Este é um exemplo da saída do módulo de ação `UninstallMSI`.

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

## Módulos de ação do sistema
<a name="action-modules-system-actions"></a>

A seção a seguir descreve os módulos de ação que executam ações do sistema ou atualizam as configurações do 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>

O módulo de ação de **Reboot** reinicia a instância. Ele tem uma opção configurável para atrasar o início da reinicialização. Por padrão, `delaySeconds` está definido como `0`, o que significa que não há atraso. O tempo limite da etapa não é compatível com o módulo de ação de reinicialização, pois não se aplica quando a instância é reinicializada.

Se o aplicativo for chamado pelo Systems Manager Agent, ele entregará o código de saída (`3010` para Windows, `194` para Linux) para o Systems Manager Agent. O Systems Manager Agent lida com a reinicialização do sistema conforme descrito em [Como reinicializar a instância gerenciada a partir de scripts](https://docs.aws.amazon.com/systems-manager/latest/userguide/send-commands-reboot.html).

Se o aplicativo é invocado no host como um processo independente, ele salva o estado de execução atual, configura um gatilho de execução automática pós-reinicialização para executar novamente o aplicativo após a reinicialização e, em seguida, reinicializa o sistema.

**Acionador de execução automática após a reinicialização:**
+ **Windows**. AWSTOE cria uma entrada do Windows Task Scheduler com um gatilho que é executado automaticamente em `SystemStartup`
+ **Linux**. AWSTOE adiciona um trabalho no crontab que é executado automaticamente após a reinicialização do sistema.

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

Esse gatilho é limpo quando o aplicativo é iniciado.

**Novas tentativas**  
Por padrão, o número máximo de novas tentativas é definido para o `CommandRetryLimit` do Systems Manager. Se o número de reinicializações exceder o limite de novas tentativas, a automação falhará. É possível alterar o limite editando o arquivo de configuração do agente do Systems Manager (`Mds.CommandRetryLimit`). Consulte [Configuração do runtime](https://github.com/aws/amazon-ssm-agent/blob/mainline/README.md#runtime-configuration) no código aberto do agente do Systems Manager.

Para usar o módulo de ação de **Reboot**, para etapas que contêm reinicialização `exitcode` (por exemplo, `3010`), você deve executar o binário do aplicativo como `sudo user`.


**Input**  

| Nome da chave | Description | Tipo | Obrigatório | Padrão | 
| --- | --- | --- | --- | --- | 
| delaySeconds | Atrasa um determinado período de tempo antes de iniciar uma reinicialização. | Inteiro |  Não  |  `0`  | 

**Exemplo de entrada: etapa de reinicialização**

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

**Saída**

Nenhum.

Quando o módulo **Reboot** é concluído, o Image Builder continua na próxima etapa da compilação.

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

O módulo de **SetRegistry**ação aceita uma lista de entradas e permite que você defina o valor da chave de registro especificada. Se não existir uma chave de registro, ela será criada no caminho definido. Esse atributo se aplica somente ao Windows.


**Input**  

| Nome da chave | Description | Tipo | Obrigatório | 
| --- | --- | --- | --- | 
| path | Caminho da chave de registro. | String | Sim | 
| name | Nome da chave de registro. | String | Sim | 
| value | Valor da chave de registro. | String/Number/Array | Sim | 
| type | Tipo de valor da chave de registro. | String | Sim | 

**Prefixos de caminho compatíveis**
+ `HKEY_CLASSES_ROOT / HKCR:`
+ `HKEY_USERS / HKU:`
+ `HKEY_LOCAL_MACHINE / HKLM:`
+ `HKEY_CURRENT_CONFIG / HKCC:`
+ `HKEY_CURRENT_USER / HKCU:`

**Tipos compatíveis**
+ `BINARY`
+ `DWORD`
+ `QWORD`
+ `SZ`
+ `EXPAND_SZ`
+ `MULTI_SZ`

**Exemplo de entrada: definir valores de chave 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
```

**Saída**

Nenhum.

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

O módulo de ação **UpdateOS** adiciona suporte para a instalação de atualizações do Windows e do Linux. Ele instala todas as atualizações disponíveis por padrão. Como alternativa, você pode configurar uma lista de uma ou mais atualizações específicas para instalar o módulo de ação. Você também pode especificar atualizações a serem excluídas da instalação.

Se as listas “incluir” e “excluir” forem fornecidas, a lista de atualizações resultante poderá incluir somente aquelas listadas na lista “incluir” que não estejam listadas na lista “excluir”.

**nota**  
**O UpdateOS** não é compatível com o Amazon Linux 2023 ()AL2023. Recomendamos que você atualize sua AMI básica para a nova versão que vem com cada lançamento. Para outras alternativas, consulte [Controlar as atualizações recebidas de versões principais e secundárias](https://docs.aws.amazon.com/linux/al2023/ug/deterministic-upgrades.html#controlling-release-updates) no *Guia do usuário do Amazon Linux 2023*.
+ **Windows**. As atualizações são instaladas a partir da fonte de atualização configurada na máquina de destino.
+ **Linux**. O aplicativo verifica o gerenciador de pacotes compatível na plataforma Linux e usa o gerenciador de pacotes `yum` ou `apt-get`. Se nenhum dos dois for compatível, será retornado um erro. Você deve ter permissões de `sudo` para executar o módulo de ação **UpdateOS**. Se você não tiver permissões de `sudo`, um `error.Input` será retornado.


**Input**  

| Nome da chave | Description | Tipo | Obrigatório | 
| --- | --- | --- | --- | 
| include |  Para Windows, você pode especificar o seguinte: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/imagebuilder/latest/userguide/toe-action-modules.html) Para Linux, você pode especificar um ou mais pacotes a serem incluídos na lista de atualizações para instalação.  | Lista de strings | Não | 
| exclude |  Para Windows, você pode especificar o seguinte: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/imagebuilder/latest/userguide/toe-action-modules.html) Para Linux, você pode especificar um ou mais pacotes a serem excluídos na lista de atualizações para instalação.  | Lista de strings | Não | 

**Exemplo de entrada: adicionar suporte para instalação de atualizações do Linux**

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

**Exemplo de entrada: adicionar suporte para instalação de atualizações do Windows**

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

**Saída**

Nenhum.