

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

# Usar componentes para personalizar sua imagem do Image Builder
<a name="manage-components"></a>

O Image Builder usa o aplicativo de gerenciamento de componentes AWS Task Orchestrator and Executor (AWSTOE) para orquestrar fluxos de trabalho complexos. Os componentes de criação e teste que funcionam com o AWSTOE aplicativo são baseados em documentos YAML que definem os scripts para personalizar ou testar sua imagem. Para imagens da AMI, o Image Builder instala componentes e o aplicativo de gerenciamento de AWSTOE componentes em suas instâncias de compilação e teste do Amazon EC2. Para imagens de contêiner, os AWSTOE componentes e o aplicativo de gerenciamento de componentes são instalados dentro do contêiner em execução. 

O Image Builder usa AWSTOE para realizar todas as atividades na instância. Não é necessária nenhuma configuração adicional para interagir AWSTOE quando você executa os comandos do Image Builder ou usa o console do Image Builder.

**nota**  
Quando um componente gerenciado pela Amazon chega ao fim de sua vida útil de suporte, ele não é mais mantido. Cerca de quatro semanas antes que isso ocorra, todas as contas que estão usando o componente recebem uma notificação e uma lista das fórmulas afetadas em sua conta AWS Health Dashboard. Para saber mais AWS Health, consulte o [Guia AWS Health do usuário](https://docs.aws.amazon.com/health/latest/ug/).

**Etapas do fluxo de trabalho para criar uma nova imagem**  
O fluxo de trabalho do Image Builder para criar novas imagens inclui os dois estágios distintos a seguir.

1. **Estágio de criação** (pré-snapshot): durante o estágio de criação, você faz alterações na instância de compilação do Amazon EC2 que está executando sua imagem base, para criar a linha de base para sua nova imagem. Por exemplo, sua fórmula pode incluir componentes que instalam uma aplicação ou modificam as configurações do firewall do sistema operacional.

   As seguintes fases dos documentos de componente são executadas durante o estágio de compilação:
   + build
   + validar

   Depois que esse estágio for concluído com êxito, o Image Builder cria um snapshot ou imagem de contêiner que ele usa para o estágio de teste e além.

1. **Estágio de teste** (pós-snapshot): durante o estágio de teste, há algumas diferenças entre imagens que criam AMIs e imagens de contêiner. Para fluxos de trabalho da AMI, o Image Builder inicia uma instância do EC2 com base no snapshot que ele criou como etapa final do estágio de compilação. Os testes são executados na nova instância para validar as configurações e garantir que a instância esteja funcionando conforme o esperado. Para fluxos de trabalho de contêineres, os testes são executados na mesma instância usada para a compilação.

   A seguinte fase dos documentos de componente é executada para cada componente incluído na fórmula durante o estágio de teste de compilação da imagem: 
   + teste

   Essa fase de componente se aplica aos tipos de componentes de compilação e teste. Depois que esse estágio for concluído com êxito, o Image Builder poderá criar e distribuir sua imagem final a partir do snapshot ou da imagem do contêiner.

**nota**  
Embora a estrutura do AWSTOE aplicativo permita definir várias fases em um documento componente, o Image Builder tem regras rígidas sobre quais fases ele é executado e durante quais estágios ele as executa. Para que um componente seja executado durante o estágio de compilação da imagem, o documento do componente deve definir pelo menos uma dessas fases: `build` ou `validate`. Para que um componente seja executado durante o estágio de teste da imagem, o documento do componente deve definir a fase `test`, e nenhuma outra fase.  
Como o Image Builder executa os estágios de forma independente, o encadeamento de referências em documentos componentes não pode ultrapassar os limites do estágio. Você não pode encadear um valor de uma fase que é executada no estágio de construção para uma fase que é executada no estágio de teste. No entanto, você pode definir parâmetros de entrada para o destino pretendido e transmitir valores por meio da linha de comando. Para obter mais informações sobre como definir parâmetros de componentes em suas fórmulas do Image Builder, consulte[Tutorial: criar um componente personalizado com parâmetros de entrada](tutorial-component-parameters.md).

Para ajudar na solução de problemas em sua instância de compilação ou teste, AWSTOE crie uma pasta de log que contém o documento de entrada e os arquivos de log para monitorar o que está acontecendo sempre que um componente é executado. Se você configurou um bucket do Amazon S3 na configuração do pipeline, os registros também são gravados lá. Para obter mais informações sobre documentos YAML e saída de log, consulte[Use a estrutura de documentos de AWSTOE componentes para componentes personalizados](toe-use-documents.md).

**dica**  
Quando você tem muitos componentes para monitorar, a marcação ajuda a identificar um componente ou versão específica com base nas tags que você atribuiu a ele. Para obter mais informações sobre como marcar seus recursos usando os comandos do Image Builder no AWS CLI, consulte a [Marcar recursos](tag-resources.md) seção deste guia.

Esta seção aborda como listar, visualizar, criar e importar componentes usando o console do Image Builder ou os comandos da AWS CLI.

**Topics**
+ [Listar e visualizar detalhes do componente](component-details.md)
+ [Use AWS Marketplace componentes para personalizar sua imagem](use-marketplace-components.md)
+ [Usar componentes gerenciados para personalizar sua imagem do Image Builder](use-managed-components.md)
+ [Desenvolver componentes personalizados para imagens do Image Builder](create-custom-components.md)
+ [Como o Image Builder usa o AWS Task Orchestrator and Executor aplicativo para gerenciar componentes](toe-component-manager.md)

# Listar e visualizar detalhes do componente
<a name="component-details"></a>

Esta seção descreve como você pode encontrar informações e visualizar detalhes dos componentes que você usa em suas receitas do EC2 Image Builder.

**Topics**
+ [Listar componentes do Image Builder](#list-components)
+ [Listar as versões de construção de componentes do AWS CLI](#cli-list-component-versions)
+ [Obtenha detalhes do componente no AWS CLI](#cli-get-component)
+ [Obtenha detalhes da política de componentes no AWS CLI](#cli-get-component-policy)

## Listar componentes do Image Builder
<a name="list-components"></a>

É possível usar um dos métodos a seguir para listar e filtrar componentes do Image Builder.

------
#### [ Console de gerenciamento da AWS ]

Para exibir uma lista de componentes no Console de gerenciamento da AWS, siga estas etapas:

1. Abra o console [https://console.aws.amazon.com/imagebuilder/](https://console.aws.amazon.com/imagebuilder/)do EC2 Image Builder em.

1. Selecione **Componentes** no painel de navegação. Por padrão, o Image Builder mostra uma lista dos componentes que sua conta possui.

1. Opcionalmente, você pode filtrar pela propriedade do componente. Para ver os componentes que você não possui, mas aos quais tem acesso, amplie a lista suspensa do tipo de proprietário e selecione um dos valores. A lista de tipos de proprietário está localizada na barra de pesquisa, ao lado da caixa de texto de pesquisa. Você pode selecionar um dos seguintes valores:
   + **AWS Marketplace**— Componentes associados diretamente a uma assinatura de AWS Marketplace produto.
   + **Início rápido (gerenciado pela Amazon)**: componentes publicamente disponíveis que a Amazon cria e mantém.
   + **De minha propriedade**: componentes que você criou. Esta é a seleção padrão.
   + **Compartilhado comigo**: componentes que outras pessoas criaram e compartilharam com você a partir de suas contas.
   + **Gerenciado por terceiros** — Componentes que um terceiro possui e nos AWS Marketplace quais você se inscreveu.

------
#### [ AWS CLI ]

O exemplo a seguir mostra como usar o comando **[list-components](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/list-components.html)** para retornar uma lista de componentes do Image Builder que sua conta possui.

```
aws imagebuilder list-components
```

Opcionalmente, você pode filtrar pela propriedade do componente. O atributo proprietário define quem é o proprietário dos componentes que deseja listar. Por padrão, essa solicitação retorna uma lista dos componentes que sua conta possui. Para filtrar os resultados por proprietário do componente, especifique um dos valores a seguir com o parâmetro `--owner` ao executar o comando **list-components**.

**Valores do proprietário do componente**
+ `AWSMarketplace`
+ `Amazon`
+ `Self`
+ `Shared`
+ `ThirdParty`

Os exemplos a seguir mostram o comando **list-components** com o parâmetro `--owner` para filtrar os resultados.

```
aws imagebuilder list-components --owner Self
{
    "requestId": "012a3456-b789-01cd-e234-fa5678b9012b",
    "componentVersionList": [
        {
            "arn": "arn:aws:imagebuilder:us-west-2:123456789012:component/sample-component01/1.0.0",
            "name": "sample-component01",
            "version": "1.0.0",
            "platform": "Linux",
            "type": "BUILD",
            "owner": "123456789012",
            "dateCreated": "2020-09-24T16:58:24.444Z"
        },
        {
            "arn": "arn:aws:imagebuilder:us-west-2:123456789012:component/sample-component01/1.0.1",
            "name": "sample-component01",
            "version": "1.0.1",
            "platform": "Linux",
            "type": "BUILD",
            "owner": "123456789012",
            "dateCreated": "2021-07-10T03:38:46.091Z"
        }
    ]
}
```

```
aws imagebuilder list-components --owner Amazon
```

```
aws imagebuilder list-components --owner Shared
```

```
aws imagebuilder list-components --owner ThirdParty
```

------

## Listar as versões de construção de componentes do AWS CLI
<a name="cli-list-component-versions"></a>

O exemplo a seguir mostra como usar o comando **[list-component-build-versions](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/list-component-build-versions.html)** para listar as versões de compilação do componente que têm uma versão semântica específica. Para saber mais sobre o versionamento semântico dos recursos do Image Builder, consulte [Versionamento semântico no Image Builder](ibhow-semantic-versioning.md).

```
aws imagebuilder list-component-build-versions --component-version-arn arn:aws:imagebuilder:us-west-2:123456789012:component/example-component/1.0.1
{
    "requestId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
    "componentSummaryList": [
        {
            "arn": "arn:aws:imagebuilder:us-west-2:123456789012:component/examplecomponent/1.0.1/1",
            "name": "examplecomponent",
            "version": "1.0.1",
            "platform": "Linux",
            "type": "BUILD",
            "owner": "123456789012",
            "description": "An example component that builds, validates and tests an image",
            "changeDescription": "Updated version.",
            "dateCreated": "2020-02-19T18:53:45.940Z",
            "tags": {
                "KeyName": "KeyValue"
            }
        }
    ]
}
```

## Obtenha detalhes do componente no AWS CLI
<a name="cli-get-component"></a>

O exemplo a seguir mostra como usar o comando **[get-component](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/get-component.html)** para obter detalhes do componente quando você especifica o nome do recurso da Amazon (ARN) do componente.

```
aws imagebuilder get-component --component-build-version-arn arn:aws:imagebuilder:us-west-2:123456789012:component/example-component/1.0.1/1
			{
    "requestId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11112",
    "component": {
        "arn": "arn:aws:imagebuilder:us-west-2:123456789012:component/examplecomponent/1.0.1/1",
        "name": "examplecomponent",
        "version": "1.0.1",
        "type": "BUILD",
        "platform": "Linux",
        "owner": "123456789012",
        "data": "name: HelloWorldTestingDocument\ndescription: This is hello world testing document... etc.\"\n",
        "encrypted": true,
        "dateCreated": "2020-09-24T16:58:24.444Z",
        "tags": {}
    }
}
```

## Obtenha detalhes da política de componentes no AWS CLI
<a name="cli-get-component-policy"></a>

O exemplo a seguir mostra como usar o comando **[get-component-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/get-component-policy.html)** para obter detalhes de uma política de componente ao especificar o ARN do componente.

```
aws imagebuilder get-component-policy --component-arn arn:aws:imagebuilder:us-west-2:123456789012:component/example-component/1.0.1
```

# Use AWS Marketplace componentes para personalizar sua imagem
<a name="use-marketplace-components"></a>

Além de uma grande seleção de imagens criadas por Independent Software Vendors (ISVs), ele AWS Marketplace oferece componentes que você pode usar para personalizar suas próprias imagens do Image Builder. Você deve assinar esses AWS Marketplace componentes antes de poder usá-los em sua receita de imagem para criar uma nova imagem.

Quando você especifica um AWS Marketplace componente em uma receita de imagem, o Image Builder valida a assinatura e executa verificações de dependência para garantir que você tenha os recursos necessários para usá-lo. Quando a validação é bem-sucedida, o Image Builder cria downloads seguros para o componente e seus artefatos para uso nas compilações do pipeline de imagem.

## Descubra os AWS Marketplace componentes
<a name="use-marketplace-components-discover"></a>

Você pode descobrir componentes AWS Marketplace de software para usar em suas receitas na página **Discover products** no console do Image Builder, da seguinte forma.

1. Abra o console [https://console.aws.amazon.com/imagebuilder/](https://console.aws.amazon.com/imagebuilder/)do EC2 Image Builder em.

1. No painel de navegação, escolha **Descobrir produtos** na **AWS Marketplace**seção.

1. Selecione a guia **Components** (Componentes). Essa guia lista todos os AWS Marketplace produtos que usam a opção de entrega que inclui componentes associados em AWS Marketplace.

1. Para pesquisar produtos de software específicos que incluam componentes, você pode inserir parte do nome na barra de pesquisa ou filtrar por `Status``Operating System`,`Publisher`, ou`Categories`. A barra de pesquisa também contém controles de paginação para seus resultados.

### Resultados
<a name="w2aac13c26b7b7"></a>

Cada AWS Marketplace produto tem seu próprio painel de detalhes que inclui as seguintes informações.

**O nome e o logotipo do AWS Marketplace produto**  
O nome do produto de software está vinculado aos detalhes do produto em AWS Marketplace. Você pode selecionar o link para saber mais sobre o produto em AWS Marketplace. Como alternativa, você pode ver um resumo das opções de assinatura e se inscrever diretamente nos resultados da pesquisa com o botão **Exibir opções de assinatura**, caso já tenha feito sua pesquisa.

**Versão**  
Ele contém a versão principal do componente.

**Sistema operacional**  
O sistema operacional no qual o componente foi projetado para ser executado.

**Editora**  
O editor do componente. Isso está vinculado à página de detalhes do editor em AWS Marketplace. A página de detalhes do editor é aberta em uma nova guia do seu navegador.

**Categorias**  
Uma ou mais categorias de AWS Marketplace produtos que se aplicam ao componente.

**Status**  
Mostra se você está inscrito neste produto. Se você não estiver inscrito, poderá escolher **Exibir opções de assinatura** para ver um resumo das opções de assinatura do AWS Marketplace produto e, opcionalmente, assinar diretamente do console do Image Builder.

**Componentes associados**  
Se o AWS Marketplace produto tiver uma ou mais versões incluídas em sua assinatura, elas serão mostradas na seção **Componentes associados**. A seção é reduzida inicialmente e exibe uma contagem dos componentes associados. Você pode expandir a seção para ver mais detalhes.

**nota**  
O componente Center for Internet Security (CIS) associado ao produto de AWS Marketplace imagem não é exibido nos resultados do **Discover products**. Se você assinar seu produto de imagem, o componente associado será mostrado na página **Assinaturas** e como um componente de terceiros na caixa de diálogo **Criar receita de imagem**. Para obter mais informações sobre o componente, consulte[Componentes de fortalecimento do CIS](toe-cis.md).

## Inscrever-se em AWS Marketplace componentes
<a name="use-marketplace-components-subscribe"></a>

Depois de encontrar um AWS Marketplace produto com componentes que você deseja usar em suas receitas, você pode assiná-lo diretamente do console do Image Builder, da seguinte forma, ou você pode se inscrever no AWS Marketplace console.

1. Abra o console [https://console.aws.amazon.com/imagebuilder/](https://console.aws.amazon.com/imagebuilder/)do EC2 Image Builder em.

1. No painel de navegação, escolha **Descobrir produtos** na **AWS Marketplace**seção.

1. Selecione a guia **Components** (Componentes). Essa guia lista todos os AWS Marketplace produtos que usam a opção de entrega que inclui componentes associados em AWS Marketplace.

1. Para pesquisar um AWS Marketplace produto específico, insira parte do nome na barra de pesquisa. Se você conhece o editor, mas não sabe o nome exato do produto ou como soletrá-lo, você também pode filtrar por `Publisher` para obter uma lista dos produtos que o editor tem disponíveis.

1. Selecione o produto que você deseja assinar na lista de resultados e escolha **Exibir opções de assinatura**. Isso mostra um resumo das opções de assinatura do AWS Marketplace produto.

1. Selecione **Inscrever-se** para assinar o produto sem sair do console do Image Builder. Você é notificado de que a assinatura está sendo processada. Depois de se inscrever, o **status** é atualizado para`Subscribed`.

Para obter mais informações sobre os AWS Marketplace produtos nos quais você está inscrito atualmente, consulte as etapas do console descritas em[AWS Marketplace assinaturas no Image Builder](integ-marketplace.md#integ-marketplace-subs).

## Use um AWS Marketplace componente em uma receita de imagem do Image Builder
<a name="use-marketplace-components-recipe"></a>

Você pode usar AWS Marketplace componentes em suas receitas de imagem do Image Builder da mesma forma que usa outros tipos de componentes. Para a maioria dos componentes associados a um produto de AWS Marketplace imagem, a categoria de propriedade é`AWS Marketplace`. Por exemplo, para usar um componente de compilação de um AWS Marketplace produto que você assinou, escolha **Adicionar componentes de compilação** e `AWS Marketplace` selecione na lista. Isso abre um painel de seleção no lado direito da interface do console que lista AWS Marketplace os componentes.

**nota**  
Se você estiver procurando pelo componente de fortalecimento do CIS, selecione, na lista de proprietários`Third party managed`, em vez de. `AWS Marketplace`

Para obter mais informações sobre como selecionar, organizar e configurar parâmetros para seus componentes, consulte[Criar uma nova versão de uma fórmula de imagem](create-image-recipes.md).

# Usar componentes gerenciados para personalizar sua imagem do Image Builder
<a name="use-managed-components"></a>

Os componentes gerenciados são criados AWS, às vezes em parceria com uma organização terceirizada, como o Center for Internet Security (CIS), por exemplo. Quando você usa componentes gerenciados em suas receitas de imagem ou contêiner, a Amazon fornece as versões mais recentes dos componentes que têm patches e outras atualizações aplicadas. Para obter uma lista de componentes ou obter informações sobre componentes, consulte[Listar e visualizar detalhes do componente](component-details.md).

A lista a seguir de componentes AWS gerenciados em destaque inclui um componente que está disponível para você usar ao assinar o CIS reforçado por AMIs meio do. AWS Marketplace

**Topics**
+ [Instalação de aplicativo de componente gerenciado pelo pacote de distribuidor para imagens do Image Builder para Windows](mgdcomponent-distributor-win.md)
+ [Componentes de fortalecimento do CIS](toe-cis.md)
+ [Componentes de hardening do STIG gerenciados pela Amazon para o Image Builder](ib-stig.md)

# Instalação de aplicativo de componente gerenciado pelo pacote de distribuidor para imagens do Image Builder para Windows
<a name="mgdcomponent-distributor-win"></a>

AWS Systems Manager O Distributor ajuda você a empacotar e publicar software em nós AWS Systems Manager gerenciados. Você pode empacotar e publicar seu próprio software ou usar o Distributor para encontrar e publicar pacotes de software de agente fornecidos por AWS. Para obter mais informações sobre o Systems Manager Distributor, consulte[AWS Systems Manager Distributor](https://docs.aws.amazon.com/systems-manager/latest/userguide/distributor.html) no *Manual do usuário do AWS Systems Manager *.

**Componentes gerenciados para Distributor**  
Os seguintes componentes gerenciados do Image Builder usam o AWS Systems Manager Distributor para instalar pacotes de aplicativos em instâncias do Windows.
+ O componente gerenciado `distributor-package-windows` usa o AWS Systems Manager Distributor para instalar pacotes de aplicações que você especifica em sua instância Windows de compilação de imagem. Para configurar parâmetros ao incluir esse componente em sua fórmula, consulte [Configurar `distributor-package-windows` como um componente independente](#mgdcomponent-distributor-config-standalone).
+ O `aws-vss-components-windows` componente usa o AWS Systems Manager Distributor para instalar o `AwsVssComponents` pacote na sua instância de criação de imagem do Windows. Para configurar parâmetros ao incluir esse componente em sua fórmula, consulte [Configurar `aws-vss-components-windows` como um componente independente](#mgdcomponent-vss-config-standalone).

Para obter mais informações sobre como usar componentes gerenciados em sua fórmula do Image Builder, consulte [Criar uma nova versão de uma fórmula de imagem](create-image-recipes.md) para fórmulas de imagens ou [Criar uma nova versão de fórmula de contêiner](create-container-recipes.md) para fórmulas de contêiner. Para obter mais informações sobre o pacote `AwsVssComponents`, consulte [Create a VSS application-consistent snapshot](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/application-consistent-snapshots.html) no *Manual do usuário do Amazon EC2*.

## Pré-requisitos
<a name="mgdcomponent-distributor-prereq"></a>

Antes de usar os componentes do Image Builder que dependem do Systems Manager Distributor para instalar pacotes de aplicativos, você deve garantir que os seguintes pré-requisitos sejam atendidos.
+ Os componentes do Image Builder que usam o Systems Manager Distributor para instalar pacotes de aplicativos na sua instância precisam de permissão para chamar a API do Systems Manager. Antes de usar os componentes em uma fórmula do Image Builder, crie a política do IAM e a função que concedam permissão. Para configurar permissões, consulte [Configurar permissões de Systems Manager Distributor](#mgdcomponent-distributor-permissions).

**nota**  
Atualmente, o Image Builder não é compatível com pacotes do Systems Manager Distributor que reinicializam a instância. Por exemplo, os pacotes de distribuidor `AWSNVMe`, `AWSPVDrivers` e `AwsEnaNetworkDriver` reinicializam a instância e, portanto, não são permitidos.

## Configurar permissões de Systems Manager Distributor
<a name="mgdcomponent-distributor-permissions"></a>

O componente `distributor-package-windows` e outros componentes que o usam, como o `aws-vss-components-windows`, exigem permissão adicional na instância de compilação para serem executados. A instância de compilação deve ser capaz de chamar a API do Systems Manager para iniciar uma instalação do Distributor e pesquisar o resultado.

Siga esses procedimentos em Console de gerenciamento da AWS para criar uma política e uma função personalizadas do IAM que concedam permissão para que os componentes do Image Builder instalem pacotes do Systems Manager Distributor a partir da instância de compilação.

**Etapa 1: Criar uma política**  
Crie uma política do IAM para permissões do Distributor.

1. Abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, selecione **Políticas** e, em seguida, **Criar política**.

1. Na página **Criar política**, escolha a aba **JSON** e, em seguida, substitua o conteúdo padrão pela seguinte política JSON, substituindo partição, região e ID da conta conforme necessário ou usando curingas.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowDistributorSendCommand",
               "Effect": "Allow",
               "Action": "ssm:SendCommand",
               "Resource": [
                   "arn:aws:ssm:*::document/AWS-ConfigureAWSPackage",
                   "arn:aws:ec2:*:111122223333:instance/*"
               ]
           },
           {
               "Sid": "AllowGetCommandInvocation",
               "Effect": "Allow",
               "Action": "ssm:GetCommandInvocation",
               "Resource": "*"
           }
       ]
   }
   ```

------

1. Escolha **Revisar política**.

1. Em **Name (Nome)**, insira um nome para identificar a política, como `InvokeDistributor` ou outro nome que preferir.

1. (Opcional) Para **Description (Descrição)**, informe a descrição do propósito da função.

1. Selecione **Criar política**.

**Etapa 2: Criar uma função**  
Crie um perfil do IAM para permissões do Distributor.

1. A partir do painel de navegação do console do IAM, escolha **Funções** e **Criar função**.

1. Em **Select type of trusted entity** (Selecionar o tipo de entidade confiável), escolha **AWS service (Serviço da AWS)**.

1. Imediatamente em **Choose the service that will use this role (Escolher o serviço que usará essa função)**, selecione **EC2** e **Next: Permissions (Próximo: permissões)**.

1. Em **Select your use case (Selecione seu caso de uso)**, escolha **EC2** e **Next: Permissions (Próximo: permissões)**.

1. Na lista de políticas, marque a caixa de seleção ao lado **da Amazon SSMManaged InstanceCore**. (Digite `SSM` na caixa de texto se você precisar restringir a lista.)

1. Nessa lista de políticas, escolha a caixa ao lado de **EC2InstanceProfileForImageBuilder**. (Digite `ImageBuilder` na caixa de texto se você precisar restringir a lista.)

1. Escolha **Next: Tags (Próximo: tags)**.

1. (Opcional) Adicione um ou mais pares de chave-valor de tag para organizar, rastrear ou controlar o acesso para esta função e selecione **Próximo: revisar**.

1. Em **Role name (Nome da função)**, insira um nome para a nova função, como `InvokeDistributor` ou outro nome que você preferir.

1. (Opcional) Para **Role description (Descrição da função)**, substitua o texto padrão pela descrição do propósito dessa função.

1. Selecione **Create role**. O sistema faz com que você retorne para a página **Roles**.

**Etapa 3: Anexar a política à função**  
A etapa final para configurar suas permissões de Distribuidor é anexar a política do IAM ao perfil do IAM.

1. A partir da página **Perfis** no console do IAM, escolha o nome do perfil que você acabou de criar. A função **Summary page (Página de resumo)** é aberta.

1. Escolha **Attach policies (Anexar políticas)**.

1. Pesquise a política que você criou no procedimento anterior e selecione a caixa de seleção ao lado do nome.

1. Escolha **Anexar política**.

Use essa função no recurso de configuração de infraestrutura do Image Builder para qualquer imagem que inclua componentes que usam o Systems Manager Distributor. Para obter mais informações, consulte [Criar uma configuração de infraestrutura](create-infra-config.md).

## Configurar `distributor-package-windows` como um componente independente
<a name="mgdcomponent-distributor-config-standalone"></a>

Para usar o componente `distributor-package-windows` em uma fórmula, defina os seguintes parâmetros que configuram o pacote a ser instalado.

**nota**  
Antes de usar o componente `distributor-package-windows` em uma fórmula, você deve garantir que todos os [Pré-requisitos](#mgdcomponent-distributor-prereq) sejam atendidos.
+ **Ação** (Obrigatório): especifique se deseja instalar ou desinstalar o pacote. Os valores válidos são `Install` e `Uninstall`. O valor padrão é `Install`.
+ **PackageName**(Obrigatório) — O nome do pacote do Distribuidor a ser instalado ou desinstalado. Para obter uma lista de nomes de pacotes válidos, consulte [Encontre pacotes de distribuidor](#mgdcomponent-distributor-find-pkg).
+ **PackageVersion**(Opcional) — A versão do pacote do Distribuidor a ser instalada. PackageVersion usa como padrão a versão recomendada.
+ **AdditionalArguments**(Opcional) — Uma string JSON que contém os parâmetros adicionais a serem fornecidos ao script para instalar, desinstalar ou atualizar um pacote. Para obter mais informações, consulte **AdditionalArguments** na seção **Entradas** de [aws:ConfigurePackage](https://docs.aws.amazon.com/systems-manager/latest/userguide/documents-command-ssm-plugin-reference.html#aws-configurepackage) da página de **referência do plug-in de documentos do Systems Manager Command**.

## Configurar `aws-vss-components-windows` como um componente independente
<a name="mgdcomponent-vss-config-standalone"></a>

Ao usar o componente `aws-vss-components-windows` em uma fórmula, você pode, opcionalmente, definir o parâmetro `PackageVersion` para usar uma versão específica do pacote `AwsVssComponents`. Quando você omite esse parâmetro, o componente usa como padrão a versão recomendada do pacote `AwsVssComponents`.

**nota**  
Antes de usar o componente `aws-vss-components-windows` em uma fórmula, você deve garantir que todos os [Pré-requisitos](#mgdcomponent-distributor-prereq) sejam atendidos.

## Encontre pacotes de distribuidor
<a name="mgdcomponent-distributor-find-pkg"></a>

A Amazon e terceiros fornecem pacotes públicos que você pode instalar com o Systems Manager Distributor.

Para ver os pacotes disponíveis no Console de gerenciamento da AWS, faça login no [AWS Systems Manager console](https://console.aws.amazon.com/systems-manager/;) e escolha **Distribuidor** no painel de navegação. A página do **Distribuidor** mostra todos os pacotes disponíveis para você. Para obter mais informações sobre como listar pacotes disponíveis com o AWS CLI, consulte [Exibir pacotes (linha de comando)](https://docs.aws.amazon.com/systems-manager/latest/userguide/distributor-view-packages.html) no *Guia AWS Systems Manager do usuário*.

Você também pode criar seus próprios pacotes privados do Systems Manager Distributor. Para obter mais informações, consulte [Criar um pacote](https://docs.aws.amazon.com/systems-manager/latest/userguide/distributor-working-with-packages-create.html) no *Guia do usuário do AWS Systems Manager *.

# Componentes de fortalecimento do CIS
<a name="toe-cis"></a>

O CIS: Centro de segurança na internet é uma organização sem fins lucrativos dirigida pela comunidade. Seus especialistas em segurança cibernética trabalham juntos para desenvolver diretrizes de segurança de TI que protejam organizações públicas e privadas contra ameaças cibernéticas. Seu conjunto globalmente reconhecido de melhores práticas, conhecido como CIS Benchmarks, ajuda organizações de TI em todo o mundo a configurar seus sistemas com segurança. *Para artigos populares, postagens em blogs, podcasts, webinars e whitepapers, consulte [CIS Insights](https://www.cisecurity.org/insights) no site Center for Internet Security*.

**Referências do CIS**  
O CIS cria e mantém um conjunto de diretrizes de configuração, conhecido como CIS Benchmarks, que fornecem as melhores práticas de configuração para tecnologias específicas, incluindo sistemas operacionais, plataformas de nuvem, aplicativos, bancos de dados e muito mais. CIS Benchmarks são reconhecidos como um padrão da indústria por organizações e normas como PCI DSS, HIPAA, computação em nuvem SRG do DoD, FISMA, DFARS e FEDRAMP. Para saber mais, consulte [CIS Benchmarks](https://www.cisecurity.org/benchmark) no site do *Center for Internet Security*.

**Componentes de fortalecimento do CIS**  
Ao assinar uma imagem reforçada do CIS em AWS Marketplace, você também obtém acesso ao componente de proteção associado que executa um script para aplicar as diretrizes do CIS Benchmarks de nível 1 para sua configuração. A organização CIS possui e mantém os componentes de fortalecimento do CIS para garantir que eles reflitam as diretrizes mais recentes.

**nota**  
Os componentes de endurecimento do CIS não seguem as regras padrão de ordenação de componentes nas fórmulas do Image Builder. Os componentes de endurecimento do CIS sempre são executados por último para garantir que os testes de benchmark sejam executados em relação à sua imagem de saída.

# Componentes de hardening do STIG gerenciados pela Amazon para o Image Builder
<a name="ib-stig"></a>

Os Guias de Implementação Técnica de Segurança (STIGs) são os padrões de fortalecimento da configuração criados pela Agência de Sistemas de Informação de Defesa (DISA) para proteger sistemas de informação e software. Para que seus sistemas estejam em conformidade com os padrões STIG, você deve instalar, definir e testar uma variedade de configurações de segurança.

O Image Builder fornece componentes de fortalecimento do STIG para ajudá-lo a compilar, de forma mais eficiente, imagens compatíveis para os padrões do STIG de base. Esses componentes do STIG verificam se há configurações incorretas e executam um script de correção. Não há cobranças adicionais pelo uso de componentes em conformidade com o STIG.

**Importante**  
Com poucas exceções, a menos que sejam especificados por meio de parâmetros, os componentes de endurecimento do STIG não instalam pacotes de terceiros. Se pacotes de terceiros já estiverem instalados na instância e se houver algo relacionado ao STIGs qual o Image Builder oferece suporte para esse pacote, o componente de proteção os aplica.

Esta página lista todos os STIGs que o Image Builder suporta e que são aplicados às instâncias do EC2 que o Image Builder inicializa quando você compila e testa uma nova imagem. Se quiser aplicar configurações adicionais do STIG à sua imagem, você pode criar um componente personalizado para configurá-la. Para obter mais informações sobre os componentes personalizados e como criá-los, consulte [Usar componentes para personalizar sua imagem do Image Builder](manage-components.md).

Quando você cria uma imagem, os componentes de endurecimento do STIG registram se os suportados foram aplicados ou STIGs ignorados. Recomendamos que você revise os logs do Image Builder para suas imagens que usam componentes de fortalecimento do STIG. Para obter mais informações sobre como acessar e revisar os logs do Image Builder, consulte [Solucionar problemas em compilação de pipelines](troubleshooting.md#troubleshooting-pipelines).

**Níveis de conformidade**
+ **Alto (categoria I) **

  O risco mais grave. Inclui qualquer vulnerabilidade que possa resultar em perda de confidencialidade, disponibilidade ou integridade.
+ **Médio (categoria II) **

  Inclui qualquer vulnerabilidade que possa resultar em perda de confidencialidade, disponibilidade ou integridade, mas os riscos podem ser mitigados.
+ **Baixo (categoria III) **

  Qualquer vulnerabilidade que degrade medidas de proteção contra perda de confidencialidade, disponibilidade ou integridade.

**Topics**
+ [Componentes de fortalecimento do STIG do Windows](#windows-os-stig)
+ [Log do histórico de versões do STIG para Windows](#ib-windows-version-hist)
+ [Componentes de fortalecimento do STIG do Linux](#linux-os-stig)
+ [Log do histórico de versões do STIG para Linux](#ib-linux-version-hist)
+ [Componente validador de conformidade do SCAP](#scap-compliance)

## Componentes de fortalecimento do STIG do Windows
<a name="windows-os-stig"></a>

AWSTOE Os componentes de proteção do Windows STIG foram projetados para servidores autônomos e aplicam a Política de Grupo Local. Os componentes de endurecimento compatíveis com STIG instalam e atualizam os certificados do Departamento de Defesa (DoD). Eles também removem certificados desnecessários para manter a conformidade com o STIG. Atualmente, as linhas de base do STIG são suportadas nas seguintes versões do Windows Server: 2012 R2, 2016, 2019, 2022 e 2025.

Esta seção lista as configurações atuais de cada um dos componentes de fortalecimento do STIG do Windows, seguidas por um log do histórico de versões.

### STIG do Windows baixa (categoria III)
<a name="ib-windows-stig-low"></a>

A lista a seguir contém configurações do STIG que o componente de fortalecimento aplica à sua infraestrutura. Se uma configuração compatível não for aplicável à sua infraestrutura, o componente de fortalecimento ignora essa configuração e segue em frente. Por exemplo, algumas configurações STIG podem não se aplicar a servidores autônomos. Políticas específicas da organização também podem afetar quais configurações o componente de fortalecimento aplica, como um requisito para que os administradores revisem as configurações do documento.

Para obter uma lista completa do Windows STIGs, consulte a [Biblioteca de STIGs Documentos](https://public.cyber.mil/stigs/downloads/?_dl_facet_stigs=windows). Para obter informações sobre como visualizar a lista completa, consulte [STIG Viewing Tools](https://public.cyber.mil/stigs/srg-stig-tools/).
+ **Windows Server 2025 STIG versão 1 versão 1**

  V-278082, V-278083, V-278084, V-278085, V-278098, V-278104, V-278110 e V-278231
+ **Windows Server 2022 STIG versão 2 versão 7**

  V-254335, V-254336, V-254337, V-254338, V-254351, V-254357, V-254363 e V-254481
+ **Windows Server 2019 STIG versão 3 versão 7**

  V-205691, V-205819, V-205858, V-205859, V-205860, V-205870, V-205871 e V-205923
+ **STIG versão 2 lançamento 10 do Windows Server 2016**

  V-224916, V-224917, V-224918, V-224919, V-224931, V-224942 e V-225060
+ **Windows Server 2012 R2 MS STIG Versão 3 Release 5**

  V-225250, V-225318, V-225319, V-225324, V-225327, V-225328, V-225330, V-225331, V-225332, V-225333, V-225334, V-225335, V-225336, V-225342, V-225343, V-225355, V-225357, V-225358, V-225359, V-225360, V-225362, V-225363, V-225376, V-225392, V-225394, V-225412, V-225459, V-225460, V-225462, V-225468, V-225473, V-225476, V-225479, V-225480, V-225481, V-225482, V-225483, V-225484, V-225485, V-225487, V-225488, V-225489, V-225490, V-225511, V-225514, V-225525, V-225526, V-225536e V-225537
+ **Microsoft.NET Framework 4.0 STIG versão 2 versão 7**

  Nenhuma configuração STIG é aplicada ao Microsoft .NET Framework para vulnerabilidades de Categoria III.
+ **STIG versão 2 lançamento 2 do Firewall do Windows**

  V-241994, V-241995, V-241996, V-241999, V-242000, V-242001, V-242006, V-242007 e V-242008
+ **Internet Explorer 11 STIG Versão 2 Versão 6**

  V-223056 e V-223078
+ **Microsoft Edge STIG versão 2 versão 4 (somente Windows Server 2022 e 2025)**

  V-235727, V-235731, V-235751, V-235752 e V-235765
+ **Microsoft Defender STIG Versão 2 Versão 7**

  Nenhuma configuração STIG é aplicada ao Microsoft Antivirus para vulnerabilidades de categoria III.

### Windows STIG Medium (categoria III)
<a name="ib-windows-stig-medium"></a>

A lista a seguir contém configurações do STIG que o componente de fortalecimento aplica à sua infraestrutura. Se uma configuração compatível não for aplicável à sua infraestrutura, o componente de fortalecimento ignora essa configuração e segue em frente. Por exemplo, algumas configurações STIG podem não se aplicar a servidores autônomos. Políticas específicas da organização também podem afetar quais configurações o componente de fortalecimento aplica, como um requisito para que os administradores revisem as configurações do documento.

Para obter uma lista completa do Windows STIGs, consulte a [Biblioteca de STIGs Documentos](https://public.cyber.mil/stigs/downloads/?_dl_facet_stigs=windows). Para obter informações sobre como visualizar a lista completa, consulte [STIG Viewing Tools](https://public.cyber.mil/stigs/srg-stig-tools/).

**nota**  
Os componentes de proteção do Windows STIG Medium incluem todas as configurações STIG listadas que AWSTOE se aplicam aos componentes do Windows STIG Low Hardening, além das configurações STIG listadas especificamente para vulnerabilidades da Categoria II.
+ **Windows Server 2025 STIG versão 1 versão 1**

  Inclui todas as configurações do STIG compatíveis que o componente de fortalecimento aplica às vulnerabilidades da Categoria III (Baixa), além de:

  V-278015, V-278016, V-278019, V-278020, V-278021, V-278022, V-278023, V-278024, V-278025, V-278039, V-278034, V-278035, V-278036, V-278037, V-278038, V-278039, V-278047, V-278048, V-278049, V-278050, V-278051, V-278052, V-278053, V-278054, V-278055, V-278056, V-278057, V-278065, V-278066, V-278067, V-278061, V-278062, V-278063, V-278064, V-278065, V-278066, V-278067, V-278068, V-278069, V-278070, V-278071, V-278072, V-278073, V-278074, V-278075, V-278076, V-278077, V-278078, V-278079, V-278080, V-278086, V-278088, V-278089, V-278091, V-278092, V-278093, V-278094, V-278095, V-278096, V-278097, V-278102, V-278103, V-278105, V-278106, V-278107, V-278108, V-278109, V-278111, V-278112, V-278113, V-278114, V-278115, V-278116, V-278117, V-278118, V-278119, V-278120, V-278122, V-278123, V-278124, V-278126, V-278127, V-278129, V-278130, V-278131, V-278165, V-278168, V-278169, V-278170, V-278171, V-278174, V-278180, V-278180 181, V-278182, V-278183, V-278184, V-278185, V-278187, V-278188, V-278189, V-278192, V-278193, V-278194, V-278195, V-278198, V-278199, V-278200, V-278201, V-278201, V-278202, V-278203, V-278204, V-278205, V-278206, V-278209, V-278210, V-278211, V-278212, V-278213, V-278214, V-278218, V-278220, V-278221, V-278222, V-278223, V-278226, V-278227, V-278228, V-278229, V-278230, V-278232, V-278233, V-278233, V-27273, V-27273, V-27273 8234, V-278235, V-278236, V-278237, V-278238, V-278239, V-278240, V-278241, V-278243, V-278244, V-278245, V-278247, V-278248, V-278249, V-278251, V-278252, V-27272 8253, V-278254, V-278255, V-278256, V-278257, V-278258, V-278259, V-278260, V-278261, V-278262, V-279916, V-279917, V-279918, V-279919, V-279920, V-279921, V-279922 e V-279922 23
+ **Windows Server 2022 STIG versão 2 versão 7**

  Inclui todas as configurações do STIG compatíveis que o componente de fortalecimento aplica às vulnerabilidades da Categoria III (Baixa), além de:

  V-254247, V-254269, V-254270, V-254271, V-254272, V-254273, V-254274, V-254276, V-254277, V-254278, V-254285, V-254286, V-254287, V-254288, V-254289, V-254290, V-254291, V-254292, V-254296, V-254297, V-254298, V-254299, V-254300, V-254301, V-254302, V-254303, V-254304, V-254305, V-254307, V-254309, V-254311, V-254311, V-254311 V-254313, V-254314, V-254315, V-254316, V-254319, V-254320, V-254321, V-254322, V-254323, V-254324, V-254325, V-254326, V-254327, V-254328, V-254329, V-254330, V-254331, V-254331, V-254332, V-254332 33, V-254334, V-254339, V-254341, V-254342, V-254344, V-254345, V-254346, V-254347, V-254348, V-254349, V-254350, V-254355, V-254356, V-254358, V-254359, V-254360, V-254361, V-254362, V-254364, V-254365, V-254366, V-254366, V-254366 7, V-254368, V-254369, V-254370, V-254371, V-254372, V-254373, V-254376, V-254377, V-254379, V-254380, V-254382, V-254383, V-254384, V-254431, V-254433, V-254433, V-254433, V-254431, V-254433, V-254433, V-254433, V-254433, V-254431, V-254433, V-254433, V-254433, V-254433, V-254431, V-254433, V-254433, V-254433, V-254433, V-254431, V-254433, V-254433, V-2544254434, V-254435, V-254436, V-254438, V-254439, V-254440, V-254442, V-254443, V-254444, V-254445, V-254447, V-254448, V-254449, V-254450, V-254451, V-254452, V-254453, V-254454, V-254454, V-254454, V-254454 4455, V-254456, V-254459, V-254460, V-254461, V-254462, V-254463, V-254464, V-254468, V-254470, V-254471, V-254472, V-254473, V-254477, V-254478, V-254479, V-254480, V-254482, V-254483, V-254484, V-254485, V-254485 254486, V-254487, V-254488, V-254489, V-254491, V-254493, V-254494, V-254497, V-254498, V-254499, V-254501, V-254502, V-254503, V-254504, V-254505, V-254506, V-254507, V-254508, V-254509, V-254510, V-254511, V-254512, V-278942, V-278943, V-278944, V-278945, V-278946, V-278947, V-278948 e V-278949
+ **Windows Server 2019 STIG versão 3 versão 7**

  Inclui todas as configurações do STIG compatíveis que o componente de fortalecimento aplica às vulnerabilidades da Categoria III (Baixa), além de:

  V-205625, V-205626, V-205627, V-205629, V-205630, V-205633, V-205634, V-205635, V-205636, V-205637, V-205638, V-205639, V-205640, V-205641, V-205642, V-205643, V-205644, V-205648, V-205649, V-205649, V-205650, V-205651, V-205652, V-205655, V-205656, V-205659, V-205660, V-205662, V-205671, V-205672, V-205673, V-205675, V-205676, V-205678, V-205679, V-205680, V-205681, V-205682, V-205683, V-205684, V-205685, V-205686, V-205687, V-205688, V-205689, V-205690, V-205692, V-205693, V-205694, V-205697, V-205698, V-205708, V-205709, V-205712, V-205714, V-205716, V-205717, V-205718, V-205719, V-205720, V-205722, V-205730, V-205731, V-205733, V-205747, V-205748, V-205749, V-205751, V-205752, V-205754, V-205755, V-205756, V-205758, V-205759, V-205760, V-205761, V-205762, V-205763, V-205764, V-205765, V-205766, V-205767, V-205768, V-205769, V-205770, V-205771, V-205772, V-205773, V-205774, V-205775, V-205776, V-205777, V-205778 5779, V-205780, V-205781, V-205782, V-205783, V-205784, V-205795, V-205796, V-205797, V-205798, V-205801, V-205808, V-205809, V-205810, V-205811, V-205812, V-205813, V-205814, V-205814, V-205814 15, V-205816, V-205817, V-205821, V-205822, V-205823, V-205824, V-205825, V-205826, V-205827, V-205828, V-205830, V-205832, V-205833, V-205835, V-205836, V-205837, V-205838, V-205842, V-205861, V-205863, V-205865, V-205866, V-205866, V-205867, V-205868, V-205869, V-205872, V-205873, V-205874, V-205909, V-205910, V-205911, V-205912, V-205915, V-205916, V-205917, V-205918, V-205920, V-205921, V-205922, V-205925, V-257503, V-278934, V-278935, V-278936, V-278937, V-278938, V-278939, V-278940 e V-278941
+ **STIG versão 2 lançamento 10 do Windows Server 2016**

  Inclui todas as configurações do STIG compatíveis que o componente de fortalecimento aplica às vulnerabilidades da Categoria III (Baixa), além de:

  V-224850, V-224851, V-224852, V-224853, V-224854, V-224855, V-224856, V-224857, V-224858, V-224859, V-224866, V-224867, V-224868, V-224869, V-224870, V-224871, V-224872, V-224873, V-224877, V-224878, V-224879, V-224880, V-224881, V-224882, V-224883, V-224884, V-224885, V-224886, V-224888, V-224890, V-224892, V-224893, V-224894, V-224895, V-224896, V-224897, V-224900, V-224901, V-224902, V-224903, V-224904, V-224905, V-224906, V-224907, V-224908, V-224909, V-224910, V-224911, V-224912, V-224913, V-224914, V-224915, V-224920, V-224921, V-224922, V-224924, V-224925, V-224926, V-224927, V-224928, V-224929, V-224930, V-224935, V-224936, V-224937, V-224938, V-224939, V-224940, V-224941, V-224943, V-224944, V-224945, V-224946, V-224947, V-224948, V-224949, V-224951, V-224952, V-224953, V-224955, V-224956, V-224957, V-224959, V-224960, V-224962, V-224963, V-224965, V-224966, V-224966, V-224966 67, V-224968, V-224969, V-224987, V-224988, V-224989, V-224995, V-224996, V-224997, V-224998, V-224999, V-225000, V-225001, V-225002, V-225003, V-225004, V-225005, V-225008, V-225009, V-225010, V-225011, V-225013, V-225014, V-225015, V-225016, V-225017, V-225018, V-225019, V-225020, V-225021, V-225022, V-225023, V-225024, V-225026, V-225027, V-225028, V-225029, V-225030, V-225031, V-225032, V-225033, V-225034, V-225035, V-225038, V-225039, V-225039, V-225040, V-225041, V-225042, V-225043, V-225047, V-225049, V-225050, V-225051, V-225052, V-225055, V-225056, V-225057, V-225058, V-225059, V-225061, V-225062, V-225063, V-225064, V-225065, V-225066, V-225067, V-225068, V-225070, V-225072, V-225073, V-225074, V-225076, V-225077, V-225078, V-225080, V-225081, V-225082, V-225083, V-225084, V-225085, V-225086, V-225087, V-225088, V-225089, V-225092, V-225093 e V-257502
+ **Windows Server 2012 R2 MS STIG Versão 3 Release 5**

  Inclui todas as configurações do STIG compatíveis que o componente de fortalecimento aplica às vulnerabilidades da Categoria III (Baixa), além de:

  V-225239, V-225259, V-225260, V-225261, V-225263, V-225264, V-225265, V-225266, V-225267, V-225268, V-225269, V-225270, V-225271, V-225272, V-225273, V-225275, V-225276, V-225277, V-225278, V-225279, V-225280, V-225281, V-225282, V-225283, V-225284, V-225285, V-225286, V-225287, V-225288, V-225289, V-225290, V-225291, V-225292, V-225293, V-225294, V-225295, V-225296, V-225297, V-225298, V-225299, V-225300, V-225301, V-225302, V-225303, V-225304, V-225305, V-225314, V-225315, V-225316, V-225317, V-225325, V-225326, V-225329, V-225337, V-225338, V-225339, V-225340, V-225341, V-225344, V-225345, V-225346, V-225347, V-225348, V-225349, V-225350, V-225351, V-225352, V-225353, V-225356, V-225367, V-225368, V-225369, V-225370, V-225371, V-225372, V-225373, V-225374, V-225375, V-225377, V-225378, V-225379, V-225380, V-225381, V-225382, V-225383, V-225384, V-225385, V-225386, V-225389, V-225391, V-225393, V-225395, V-225397, V-225398, V-225400, V-225401, V-225402, V-225404, V-225405, V-225406, V-225407, V-225408, V-225409, V-225410, V-225411, V-225413, V-225414, V-225415, V-225441, V-225442, V-225443, V-225448, V-225452, V-225453, V-225454, V-225455, V-225456, V-225457, V-225458, V-225461, V-225463, V-225464, V-225469, V-225470, V-225471, V-225472, V-225474, V-225475, V-225477, V-225478, V-225486, V-225494, V-225500, V-225501, V-225502, V-225503, V-225504, V-225506, V-225508, V-225509, V-225510, V-225513, V-225515, V-225516, V-225517, V-225518, V-225519, V-225520, V-225521, V-225522, V-225523, V-225524, V-225527, V-225528, V-225529, V-225530, V-225531, V-225532, V-225533, V-225534, V-225535, V-225538, V-225539, V-225540, V-225541, V-225542, V-225543, V-225544, V-225545, V-225546, V-225548, V-225549, V-225550, V-225551, V-225553, V-225554, V-225555, V-225557, V-225558, V-225559, V-225560, V-225561, V-225562, V-225563, V-225564, V-225565, V-225566, V-225567, V-225568, V-225569, V-225570, V-225571, V-225572, V-225573e V-225574
+ **Microsoft.NET Framework 4.0 STIG versão 2 versão 7**

  Inclui todas as configurações do STIG compatíveis que o componente de fortalecimento aplica às vulnerabilidades da Categoria III (Baixa), além de:

  V-225223, V-225230, V-225235 e V-225238
+ **STIG versão 2 lançamento 2 do Firewall do Windows**

  Inclui todas as configurações do STIG compatíveis que o componente de fortalecimento aplica às vulnerabilidades da Categoria III (Baixa), além de:

  V-241989, V-241990, V-241991, V-241993, V-241998, V-242003, V-242004 e V-242005
+ **Internet Explorer 11 STIG Versão 2 Versão 6**

  Inclui todas as configurações do STIG compatíveis que o componente de fortalecimento aplica às vulnerabilidades da Categoria III (Baixa), além de:

  V-223015, V-223017, V-223018, V-223019, V-223020, V-223021, V-223022, V-223023, V-223024, V-223025, V-223026, V-223027, V-223028, V-223029, V-223030, V-223031, V-223032, V-223033, V-223034 V-223035, V-223036, V-223037, V-223038, V-223039, V-223040, V-223041, V-223042, V-223043, V-223044, V-223045, V-223046, V-223048, V-223049, V-223050, V-223051, V-223052, V-223053, V-223054, V-223054, V-223055, V-223057, V-223058, V-223059, V-223060, V-223061, V-223062, V-223063, V-223064, V-223065, V-223066, V-223067, V-223068, V-223069, V-223070, V-223071, V-223072, V-223073, V-227430, V-223075, V-223076, V-223077, V-223079, V-223080, V-223081, V-223082, V-223083, V-223084, V-223085, V-223086, V-223087, V-223088, V-223089, V-223090, V-223091, V-223092, V-223093, V-223094, V-223095, V-223096, V-223097, V-223098, V-223099, V-223100, V-223101, V-223102, V-223103, V-223104, V-223105, V-223106, V-223107, V-223108, V-223109, V-223110, V-223111, V-223112, V-223113 V-223114, V-223115, V-223116, V-223117, V-223118, V-223119, V-223120, V-223121, V-223123, V-223125, V-223126, V-223127, V-223128, V-223129, V-223130, V-223131, V-223132, V-223133, V-223134, V-223135, V-223136, V-223137, V-223138, V-223139, V-223140, V-223141, V-223143, V-223144, V-223145, V-223145, V-223146, V-223147, V-223148, V-223149, V-250540 e V-052541
+ **Microsoft Edge STIG versão 2 versão 4 (somente Windows Server 2022 e 2025)**

  Inclui todas as configurações do STIG compatíveis que o componente de fortalecimento aplica às vulnerabilidades da Categoria III (Baixa), além de:

  V-235720, V-235721, V-235723, V-235724, V-235725, V-235726, V-235728, V-235729, V-235730, V-235732, V-235733, V-235734, V-235735, V-235736, V-235737, V-235738, V-235739, V-235740, V-235741, V-235742, V-235743, V-235744, V-235745, V-235746, V-235747, V-235748, V-235749, V-235750, V-235754, V-235756, V-235760, V-235761, V-235763, V-235764, V-235766, V-235767, V-235768, V-235769, V-235770, V-235771, V-235772, V-235773, V-235774 e V-246736
+ **Microsoft Defender STIG Versão 2 Versão 7**

  Inclui todas as configurações do STIG compatíveis que o componente de fortalecimento aplica às vulnerabilidades da Categoria III (Baixa), além de:

  V-213427, V-213429, V-213430, V-213431, V-213432, V-213433, V-213434, V-213435, V-213436, V-213437, V-213438, V-213439, V-213440, V-213441, V-213442, V-213443, V-213444, V-213445, V-213446, V-213447, V-213448, V-213449, V-213450, V-213451, V-213454, V-213455, V-213456, V-213457, V-213458, V-213459, V-213460, V-213461, V-213462, V-213463, V-213464, V-213465, V-213466, V-278647, V-278648, V-278649, V-278650, V-278651, V-278652, V-278653, V-278654, V-278655, V-278656, V-278658, V-278658, V-278658 659, V-278660, V-278661, V-278662, V-278668, V-278669, V-278672, V-278674, V-278675, V-278676, V-278677, V-278678, V-278679, V-278680 e V-278863

### STIG do Windows High (categoria I)
<a name="ib-windows-stig-high"></a>

A lista a seguir contém configurações do STIG que o componente de fortalecimento aplica à sua infraestrutura. Se uma configuração compatível não for aplicável à sua infraestrutura, o componente de fortalecimento ignora essa configuração e segue em frente. Por exemplo, algumas configurações STIG podem não se aplicar a servidores autônomos. Políticas específicas da organização também podem afetar quais configurações o componente de fortalecimento aplica, como um requisito para que os administradores revisem as configurações do documento.

Para obter uma lista completa do Windows STIGs, consulte a [Biblioteca de STIGs Documentos](https://public.cyber.mil/stigs/downloads/?_dl_facet_stigs=windows). Para obter informações sobre como visualizar a lista completa, consulte [STIG Viewing Tools](https://public.cyber.mil/stigs/srg-stig-tools/).

**nota**  
Os componentes de proteção do Windows STIG High incluem todas as configurações STIG listadas que AWSTOE se aplicam aos componentes de fortalecimento do Windows STIG Low e do Windows STIG Medium, além das configurações STIG listadas especificamente para vulnerabilidades da Categoria I.
+ **Windows Server 2025 STIG versão 1 versão 1**

  Inclui todas as configurações do STIG compatíveis que o componente de fortalecimento aplica às vulnerabilidades das Categorias II e III (Média e Baixa), além de:

  V-278040, V-278099, V-278100, V-278101, V-278121, V-278125, V-278128, V-278196, V-278215, V-278216, V-278217, V-278219, V-278225, V-278242, V-278246 e V-278250
+ **Windows Server 2022 STIG versão 2 versão 7**

  Inclui todas as configurações do STIG compatíveis que o componente de fortalecimento aplica às vulnerabilidades das Categorias II e III (Média e Baixa), além de:

  V-254250, V-254293, V-254352, V-254353, V-254354, V-254374, V-254378, V-254381, V-254446, V-254466, V-254467, V-254469, V-254474, V-254475, V-254492, V-254496 e V-254500
+ **Windows Server 2019 STIG versão 3 versão 7**

  Inclui todas as configurações do STIG compatíveis que o componente de fortalecimento aplica às vulnerabilidades das Categorias II e III (Média e Baixa), além de:

  V-205653, V-205654, V-205663, V-205711, V-205713, V-205724, V-205725, V-205750, V-205753, V-205757, V-205802, V-205804, V-205805, V-205806, V-205849, V-205908, V-205914 e V-205919
+ **STIG versão 2 lançamento 10 do Windows Server 2016**

  Inclui todas as configurações do STIG compatíveis que o componente de fortalecimento aplica às vulnerabilidades das Categorias II e III (Média e Baixa), além de:

  V-224831, V-224874, V-224932, V-224933, V-224934, V-224954, V-224958, V-224961, V-225025, V-225045, V-225046, V-225048, V-225053, V-225054, V-225071, V-225079 e V-225091
+ **Windows Server 2012 R2 MS STIG Versão 3 Release 5**

  Inclui todas as configurações do STIG compatíveis que o componente de fortalecimento aplica às vulnerabilidades das Categorias II e III (Média e Baixa), além de:

  V-225274, V-225354, V-225364, V-225365, V-225366, V-225390, V-225396, V-225399, V-225444, V-225449, V-225491, V-225492, V-225493, V-225496, V-225497, V-225498, V-225505, V-225507, V-225547, V-225552e V-225556
+ **Microsoft.NET Framework 4.0 STIG versão 2 versão 7**

  Inclui todas as configurações do STIG compatíveis que o componente de fortalecimento aplica às vulnerabilidades das Categorias II e III (Média e Baixa) do Microsoft .NET Framework. Nenhuma configuração adicional do STIG se aplica a vulnerabilidades da Categoria I.
+ **STIG versão 2 lançamento 2 do Firewall do Windows**

  Inclui todas as configurações do STIG compatíveis que o componente de fortalecimento aplica às vulnerabilidades das Categorias II e III (Média e Baixa), além de:

  V-241992, V-241997 e V-242002
+ **Internet Explorer 11 STIG Versão 2 Versão 6**

  V-252910
+ **Microsoft Edge STIG versão 2 versão 4 (somente Windows Server 2022 e 2025)**

  Inclui todas as configurações do STIG compatíveis que o componente de fortalecimento aplica às vulnerabilidades das Categorias II e III (Média e Baixa), além de:

  V-235758 e V-235759
+ **Microsoft Defender STIG Versão 2 Versão 7**

  Inclui todas as configurações do STIG compatíveis que o componente de fortalecimento aplica às vulnerabilidades das Categorias II e III (Média e Baixa), além de:

  V-213426, V-213428, V-213452 e V-213453

## Log do histórico de versões do STIG para Windows
<a name="ib-windows-version-hist"></a>

Esta seção registra o histórico de versões do componente de fortalecimento do Windows para as atualizações trimestrais do STIG. Para ver as alterações e as versões publicadas de um trimestre, escolha o título para expandir as informações.

### Alterações no primeiro trimestre de 2026 - 10/3/2026:
<a name="2026-q1-windows"></a>

Foi adicionado suporte para o Windows Server 2025 e atualizou tudo aplicável STIGs ao primeiro trimestre de 2026.

**STIG-Build-windows**
+ Windows Server 2025 STIG versão 1 versão 1
+ Windows Server 2022 STIG versão 2 versão 7
+ Windows Server 2019 STIG versão 3 versão 7
+ STIG versão 2 lançamento 10 do Windows Server 2016
+ Windows Server 2012 R2 MS STIG Versão 3 Release 5
+ Microsoft.NET Framework 4.0 STIG versão 2 versão 7
+ STIG versão 2 lançamento 2 do Windows Firewall
+ Internet Explorer 11 STIG Versão 2 Versão 8
+ Microsoft Edge STIG versão 2 versão 4 (somente Windows Server 2022 e 2025)

### Alterações no terceiro trimestre de 2025 (4/09/2025) (nenhuma alteração):
<a name="2025-q3-windows"></a>

Não houve alterações de STIGS para componentes Windows para o lançamento do terceiro trimestre de 2025.

### Alterações no segundo trimestre de 2025 (26/06/2025):
<a name="2025-q2-windows"></a>

Atualizadas versões de STIG e STIGS aplicados para o lançamento do segundo trimestre de 2025, como se segue:

**STIG-Build-Windows-Low versão 2025.2.x**
+ STIG versão 2 lançamento 4 do Windows Server 2022
+ STIG versão 3 lançamento 4 do Windows Server 2019
+ STIG versão 2 lançamento 10 do Windows Server 2016
+ Windows Server 2012 R2 MS STIG Versão 3 Release 5
+ STIG versão 2 lançamento 6 do Microsoft .NET Framework 4.0
+ STIG versão 2 lançamento 2 do Windows Firewall
+ STIG versão 2 lançamento 5 do Internet Explorer 11
+ STIG versão 2 lançamento 2 do Microsoft Edge (somente Windows Server 2022)

**STIG-Build-Windows-Medium versão 2025.2.x**
+ STIG versão 2 lançamento 4 do Windows Server 2022
+ STIG versão 3 lançamento 4 do Windows Server 2019
+ STIG versão 2 lançamento 10 do Windows Server 2016
+ Windows Server 2012 R2 MS STIG Versão 3 Release 5
+ STIG versão 2 lançamento 6 do Microsoft .NET Framework 4.0
+ STIG versão 2 lançamento 2 do Windows Firewall
+ STIG versão 2 lançamento 5 do Internet Explorer 11
+ STIG versão 2 lançamento 2 do Microsoft Edge (somente Windows Server 2022)
+ STIG versão 2 lançamento 4 do Defender

**STIG-Build-Windows-High versão 2025.2.x**
+ STIG versão 2 lançamento 4 do Windows Server 2022
+ STIG versão 3 lançamento 4 do Windows Server 2019
+ STIG versão 2 lançamento 10 do Windows Server 2016
+ Windows Server 2012 R2 MS STIG Versão 3 Release 5
+ STIG versão 2 lançamento 6 do Microsoft .NET Framework 4.0
+ STIG versão 2 lançamento 2 do Windows Firewall
+ STIG versão 2 lançamento 5 do Internet Explorer 11
+ STIG versão 2 lançamento 2 do Microsoft Edge (somente Windows Server 2022)
+ STIG versão 2 lançamento 4 do Defender

### Alterações no primeiro trimestre de 2025 (4/05/2025):
<a name="2025-q1-windows"></a>

Atualizados STIGS para o STIG versão 2 lançamento 5 do Internet Explorer 11 para todos os componentes STIG para o lançamento do primeiro trimestre de 2025.
+ STIG-Build-Windows-Low versão 2025.1.x
+ STIG-Build-Windows-Medium versão 2025.1.x
+ STIG-Build-Windows-High versão 2025.1.x

### Alterações no quarto trimestre de 2024 - 02/04/2025:
<a name="2024-q4-windows"></a>

Atualizadas versões de STIG e aplicados STIGS para o lançamento do quarto trimestre de 2024, como se segue:

**STIG-Build-Windows-Low versão 2024.4.0**
+ STIG versão 2 lançamento 2 do Windows Server 2022
+ STIG versão 3 lançamento 2 do Windows Server 2019
+ STIG versão 2 lançamento 9 do Windows Server 2016
+ Windows Server 2012 R2 MS STIG Versão 3 Release 5
+ Microsoft .NET Framework 4.0 STIG Versão 2 Release 2
+ STIG versão 2 lançamento 2 do Windows Firewall
+ STIG versão 2 lançamento 5 do Internet Explorer 11
+ STIG versão 2 lançamento 2 do Microsoft Edge (somente Windows Server 2022)

**STIG-Build-Windows-Medium versão 2024.4.0**
+ STIG versão 2 lançamento 2 do Windows Server 2022
+ STIG versão 3 lançamento 2 do Windows Server 2019
+ STIG versão 2 lançamento 9 do Windows Server 2016
+ Windows Server 2012 R2 MS STIG Versão 3 Release 5
+ Microsoft .NET Framework 4.0 STIG Versão 2 Release 2
+ STIG versão 2 lançamento 2 do Windows Firewall
+ STIG versão 2 lançamento 5 do Internet Explorer 11
+ STIG versão 2 lançamento 2 do Microsoft Edge (somente Windows Server 2022)
+ STIG versão 2 lançamento 4 do Defender

**STIG-Build-Windows-High versão 2024.4.0**
+ STIG versão 2 lançamento 2 do Windows Server 2022
+ STIG versão 3 lançamento 2 do Windows Server 2019
+ STIG versão 2 lançamento 9 do Windows Server 2016
+ Windows Server 2012 R2 MS STIG Versão 3 Release 5
+ Microsoft .NET Framework 4.0 STIG Versão 2 Release 2
+ STIG versão 2 lançamento 2 do Windows Firewall
+ STIG versão 2 lançamento 5 do Internet Explorer 11
+ STIG versão 2 lançamento 2 do Microsoft Edge (somente Windows Server 2022)
+ STIG versão 2 lançamento 4 do Defender

### Alterações no terceiro trimestre de 2024 - 10/04/2023 (sem alterações):
<a name="2024-q3-windows"></a>

Não houve alterações de STIGS para componente Windows para o lançamento do terceiro trimestre de 2024.

### Alterações no segundo trimestre de 2024 (10/5/2024; sem alterações):
<a name="2024-q2-windows"></a>

Não houve alterações no componente STIGS do Windows para o lançamento do segundo trimestre de 2024.

### Alterações no primeiro trimestre de 2024 (6/2/2024; sem alterações):
<a name="2024-q1-windows"></a>

Não houve alterações no componente STIGS do Windows para o lançamento do primeiro trimestre de 2024.

### Alterações no quarto trimestre de 2023 (4/12/2023; sem alterações):
<a name="2023-q4-windows"></a>

Não houve alterações no componente STIGS do Windows para o lançamento do quarto trimestre de 2023.

### Alterações no terceiro trimestre de 2023 - 04/10/2023 (sem alterações):
<a name="2023-q3-windows"></a>

Não houve alterações no componente STIGS do Windows para o release do terceiro trimestre de 2023.

### Alterações no segundo trimestre de 2023 - 03/05/2023 (sem alterações):
<a name="2023-q2-windows"></a>

Não houve alterações no componente STIGS do Windows para o release do segundo trimestre de 2023.

### Alterações no primeiro trimestre de 2023 - 27/03/2023 (sem alterações):
<a name="2023-q1-windows"></a>

Não houve alterações no componente STIGS do Windows para o release do primeiro trimestre de 2023.

### Alterações no quarto trimestre de 2022 - 01/02/2023:
<a name="2022-q4-windows"></a>

Versões do STIG atualizadas e STIGS aplicados para o release do quarto trimestre de 2022 da seguinte forma:

**STIG-Build-Windows-Low versão 2022.4.x**
+ Windows Server 2022 STIG versão 1 release 1
+ Windows Server 2019 STIG Versão 2 Release 5
+ Windows Server 2016 STIG Versão 2 Release 5
+ Windows Server 2012 R2 MS STIG Versão 3 Release 5
+ Microsoft .NET Framework 4.0 STIG Versão 2 Release 2
+ Windows Firewall STIG Versão 2 Release 1
+ Internet Explorer 11 STIG Versão 2 Release 3
+ Microsoft Edge STIG Versão 1 Release 6 (somente Windows Server 2022)

**STIG-Build-Windows-Medium versão 2022.4.x**
+ Windows Server 2022 STIG versão 1 release 1
+ Windows Server 2019 STIG Versão 2 Release 5
+ Windows Server 2016 STIG Versão 2 Release 5
+ Windows Server 2012 R2 MS STIG Versão 3 Release 5
+ Microsoft .NET Framework 4.0 STIG Versão 2 Release 2
+ Windows Firewall STIG Versão 2 Release 1
+ Internet Explorer 11 STIG Versão 2 Release 3
+ Microsoft Edge STIG Versão 1 Release 6 (somente Windows Server 2022)
+ Defender STIG Versão 2 Release 4 (somente Windows Server 2022)

**STIG-Build-Windows-High versão 2022.4.x**
+ Windows Server 2022 STIG versão 1 release 1
+ Windows Server 2019 STIG Versão 2 Release 5
+ Windows Server 2016 STIG Versão 2 Release 5
+ Windows Server 2012 R2 MS STIG Versão 3 Release 5
+ Microsoft .NET Framework 4.0 STIG Versão 2 Release 2
+ Windows Firewall STIG Versão 2 Release 1
+ Internet Explorer 11 STIG Versão 2 Release 3
+ Microsoft Edge STIG Versão 1 Release 6 (somente Windows Server 2022)
+ Defender STIG Versão 2 Release 4 (somente Windows Server 2022)

### Alterações no terceiro trimestre de 2022 - 30/09/2022 (sem alterações):
<a name="2022-q3-windows"></a>

Não houve alterações no componente STIGS do Windows para o release do terceiro trimestre de 2022.

### Alterações no segundo trimestre de 2022 - 02/08/2022:
<a name="2022-q2-windows"></a>

Versões do STIG atualizadas e STIGS aplicados para o release do segundo trimestre de 2022.

**STIG-Build-Windows-Low versão 1.5.x**
+ Windows Server 2019 STIG Versão 2 Release 4
+ Windows Server 2016 STIG Versão 2 Release 4
+ Windows Server 2012 R2 MS STIG Versão 3 Release 3
+ Microsoft .NET Framework 4.0 STIG Versão 2 Release 1
+ Windows Firewall STIG Versão 2 Release 1
+ Internet Explorer 11 STIG Versão 1 Release 19

**STIG-Build-Windows-Medium versão 1.5.x**
+ Windows Server 2019 STIG Versão 2 Release 4
+ Windows Server 2016 STIG Versão 2 Release 4
+ Windows Server 2012 R2 MS STIG Versão 3 Release 3
+ Microsoft .NET Framework 4.0 STIG Versão 2 Release 1
+ Windows Firewall STIG Versão 2 Release 1
+ Internet Explorer 11 STIG Versão 1 Release 19

**STIG-Build-Windows-High versão 1.5.x**
+ Windows Server 2019 STIG Versão 2 Release 4
+ Windows Server 2016 STIG Versão 2 Release 4
+ Windows Server 2012 R2 MS STIG Versão 3 Release 3
+ Microsoft .NET Framework 4.0 STIG Versão 2 Release 1
+ Windows Firewall STIG Versão 2 Release 1
+ Internet Explorer 11 STIG Versão 1 Release 19

### Alterações no primeiro trimestre de 2022 - 02/08/2022 (sem alterações):
<a name="2022-q1-windows"></a>

Não houve alterações no componente STIGS do Windows para o release do primeiro trimestre de 2022.

### Alterações no quarto trimestre de 2021 - 20/12/2021:
<a name="2021-q4-windows"></a>

Versões do STIG atualizadas e STIGS aplicados para o release do quarto trimestre de 2021.

**STIG-Build-Windows-Low versão 1.5.x**
+ Windows Server 2019 STIG Versão 2 Release 3
+ Windows Server 2016 STIG Versão 2 Release 3
+ Windows Server 2012 R2 MS STIG Versão 3 Release 3
+ Microsoft .NET Framework 4.0 STIG Versão 2 Release 1
+ Windows Firewall STIG Versão 2 Release 1
+ Internet Explorer 11 STIG Versão 1 Release 19

**STIG-Build-Windows-Medium versão 1.5.x**
+ Windows Server 2019 STIG Versão 2 Release 3
+ Windows Server 2016 STIG Versão 2 Release 3
+ Windows Server 2012 R2 MS STIG Versão 3 Release 3
+ Microsoft .NET Framework 4.0 STIG Versão 2 Release 1
+ Windows Firewall STIG Versão 2 Release 1
+ Internet Explorer 11 STIG Versão 1 Release 19

**STIG-Build-Windows-High versão 1.5.x**
+ Windows Server 2019 STIG Versão 2 Release 3
+ Windows Server 2016 STIG Versão 2 Release 3
+ Windows Server 2012 R2 MS STIG Versão 3 Release 3
+ Microsoft .NET Framework 4.0 STIG Versão 2 Release 1
+ Windows Firewall STIG Versão 2 Release 1
+ Internet Explorer 11 STIG Versão 1 Release 19

### Alterações no terceiro trimestre de 2021 - 30/09/2021:
<a name="2021-q3-windows"></a>

Versões do STIG atualizadas e STIGS aplicados para o release do terceiro trimestre de 2021.

**STIG-Build-Windows-Low versão 1.4.x**
+ Windows Server 2019 STIG Versão 2 Release 2
+ Windows Server 2016 STIG Versão 2 Release 2
+ Windows Server 2012 R2 MS STIG Versão 3 Release 2
+ Microsoft .NET Framework 4.0 STIG Versão 2 Release 1
+ Windows Firewall STIG Versão 1 Release 7
+ Internet Explorer 11 STIG Versão 1 Release 19

**STIG-Build-Windows-Medium versão 1.4.x**
+ Windows Server 2019 STIG Versão 2 Release 2
+ Windows Server 2016 STIG Versão 2 Release 2
+ Windows Server 2012 R2 MS STIG Versão 3 Release 2
+ Microsoft .NET Framework 4.0 STIG Versão 2 Release 1
+ Windows Firewall STIG Versão 1 Release 7
+ Internet Explorer 11 STIG Versão 1 Release 19

**STIG-Build-Windows-High versão 1.4.x**
+ Windows Server 2019 STIG Versão 2 Release 2
+ Windows Server 2016 STIG Versão 2 Release 2
+ Windows Server 2012 R2 MS STIG Versão 3 Release 2
+ Microsoft .NET Framework 4.0 STIG Versão 2 Release 1
+ Windows Firewall STIG Versão 1 Release 7
+ Internet Explorer 11 STIG Versão 1 Release 19

## Componentes de fortalecimento do STIG do Linux
<a name="linux-os-stig"></a>

Esta seção contém informações sobre os componentes de fortalecimento do STIG do Linux, seguidas por um log do histórico de versões. Se a distribuição do Linux não tiver configurações de STIG próprias, o componente de fortalecimento aplicará as configurações do RHEL.

Os componentes Linux têm parâmetros de entrada opcionais que ajudam você a personalizar os seguintes comportamentos para sua instância Linux.
+ **Nível (string)** Se nenhum valor for especificado, o padrão é `High` e aplicará todas as configurações Baixa, Média e Alta aplicáveis.
+ **InstallPackages (string)** Se o valor for`No`, o componente não instalará nenhum pacote de software adicional. Se o valor for`Yes`, o componente instala pacotes de software adicionais que são necessários para máxima conformidade. O padrão é `No`.
+ **SetDoDConsentBanner (string)** Se o valor for`No`, o banner de consentimento do DoD não é exibido quando você se conecta a uma instância que tem um dos componentes do STIG Linux instalado. Se o valor for`Yes`, o banner de consentimento do DoD será exibido antes de você fazer login quando você se conectar a uma instância que tenha um dos componentes do STIG Linux instalado. Você deve aceitar o banner para poder fazer login. O padrão é `No`.

  Para ver um exemplo do banner de consentimento, consulte o [Disclaimer Department of Defense Privacy and Consent Notice](https://dso.dla.mil/) que aparece quando você acessa o site do DLA Document Services.

O componente de fortalecimento aplica as configurações do STIG compatíveis à infraestrutura com base na distribuição do Linux, da seguinte forma:

**Configurações do Red Hat Enterprise Linux (RHEL) 7 STIG**
+ RHEL 7
+ CentOS 7
+ Amazon Linux (2AL2)

**Configurações do RHEL 8 STIG**
+ RHEL 8
+ CentOS 8

**Configurações do RHEL 9 STIG**
+ RHEL 9
+ CentOS Stream 9

### Linux STIG Low (categoria III)
<a name="ib-linux-stig-low"></a>

A lista a seguir contém configurações do STIG que o componente de fortalecimento aplica à sua infraestrutura. Se uma configuração compatível não for aplicável à sua infraestrutura, o componente de fortalecimento ignora essa configuração e segue em frente. Por exemplo, algumas configurações STIG podem não se aplicar a servidores autônomos. Políticas específicas da organização também podem afetar quais configurações o componente de fortalecimento aplica, como um requisito para que os administradores revisem as configurações do documento.

Para obter uma lista completa, consulte a [Biblioteca de STIGs documentos](https://public.cyber.mil/stigs/downloads/?_dl_facet_stigs=operating-systems%2Cunix-linux). Para obter informações sobre como visualizar a lista completa, consulte [STIG Viewing Tools](https://public.cyber.mil/stigs/srg-stig-tools/).

**STIG versão 3 lançamento 15 do RHEL 7**
+ 

**RHEL 7/CentOS 7/ AL2**  
V-204452, V-204576 e V-204605

**RHEL 8 STIG Versão 2 Versão 6**
+ 

**RHEL 8/CentOS 8**  
V-230241, V-230269, V-230270, V-230281, V-230285, V-230346, V-230381, V-230395, V-230468, V-230469, V-230485, V-230486, V-230491, V-230494, V-230495, V-230496, V-230497, V-230498, V-230499 e V-244527

**RHEL 9 STIG Versão 2 Versão 7**
+ 

**RHEL 9/CentOS Stream 9**  
V-257782, V-257824, V-258138, V-258037, V-257880, V-258069, V-258076, V-258067, V-257946, V-257947, V-257795, V-257796 e V-258173

**Amazon Linux 2023 STIG versão 1 versão 2**

V-274141

**SLES 12 STIG Versão 3 Versão 4**

V-217108, V-217113, V-217140, V-217198, V-217209, V-217211, V-217212, V-217213, V-217214, V-217215, V-217216, V-217236, V-217237, V-217238, V-217239, V-217282 e V-255915

**SLES 15 STIG Versão 2 Versão 6**

V-234811, V-234850, V-234868, V-234873, V-234905, V-234907, V-234908, V-234909, V-234933, V-234934, V-234935, V-234936, V-234955, V-234963, V-234967 e V-255921

**Ubuntu 18.04 STIG versão 2 versão 15**

V-219163, V-219164, V-219165, V-219172, V-219173, V-219174, V-219175, V-219178, V-219179, V-219180, V-219210, V-219301, V-219327, V-219332 e V-219333

**Ubuntu 20.04 STIG Versão 2 Versão 4**

V-238202, V-238203, V-238221, V-238222, V-238223, V-238224, V-238226, V-238234, V-238235, V-238237, V-238308, V-238323, V-238357, V-238362 e V-238373

**Ubuntu 22.04 STIG Versão 2 Versão 7**

V-260472, V-260476, V-260479, V-260480, V-260481, V-260520, V-260521, V-260549, V-260550, V-260551, V-260552, V-260581 e V-260596

**Ubuntu 24.04 STIG Versão 1 Versão 4**

V-270645, V-270646, V-270664, V-270677, V-270690, V-270695, V-270706, V-270710, V-270734, V-270749, V-270752, V-270818 e V-270820

### Linux STIG Medium (categoria II)
<a name="ib-linux-stig-medium"></a>

A lista a seguir contém configurações do STIG que o componente de fortalecimento aplica à sua infraestrutura. Se uma configuração compatível não for aplicável à sua infraestrutura, o componente de fortalecimento ignora essa configuração e segue em frente. Por exemplo, algumas configurações STIG podem não se aplicar a servidores autônomos. Políticas específicas da organização também podem afetar quais configurações o componente de fortalecimento aplica, como um requisito para que os administradores revisem as configurações do documento.

Para obter uma lista completa, consulte a [Biblioteca de STIGs documentos](https://public.cyber.mil/stigs/downloads/?_dl_facet_stigs=operating-systems%2Cunix-linux). Para obter informações sobre como visualizar a lista completa, consulte [STIG Viewing Tools](https://public.cyber.mil/stigs/srg-stig-tools/).

**nota**  
Os componentes de fortalecimento Linux STIG Medium incluem todas as configurações STIG listadas que AWSTOE se aplicam aos componentes Linux STIG Low Hardening, além das configurações STIG listadas especificamente para vulnerabilidades da Categoria II.

**STIG versão 3 lançamento 15 do RHEL 7**

Inclui todas as configurações STIG compatíveis que o componente de fortalecimento aplica às vulnerabilidades da Categoria III (Baixa) para esta distribuição do Linux, além de:
+ 

**RHEL 7/CentOS 7/ AL2**  
V-204405, V-204406, V-204407, V-204408, V-204409, V-204410, V-204411, V-204412, V-204413, V-204414, V-204415, V-204416, V-204417, V-204418, V-204420, V-204422, V-204423, V-204426, V-204423, V-204426, V-204427, V-204431, V-204434, V-204435, V-204437, V-204449, V-204450, V-204451, V-204457, V-204466, V-204490, V-204491, V-204503, V-204507, V-204508, V-204510, V-204511, V-204511, V-204511 12, V-204514, V-204515, V-204516, V-204517, V-204521, V-204524, V-204531, V-204536, V-204537, V-204538, V-204539, V-204540, V-204541, V-204542, V-204543, V-204544, V-204545, V-204546, V-204546, V-204546, V-204546, V-204546, V-204546, V-204546, V-204546 47, V-204548, V-204549, V-204550, V-204551, V-204552, V-204553, V-204554, V-204555, V-204556, V-204557, V-204558, V-204559, V-204560, V-204562, V-204563, V-204564, V-204565, V-204566, V-204567, V-204568, V-204572, V-204579, V-204584, V-204585, V-204587, V-204588, V-204589, V-204590, V-204591, V-204592, V-204593, V-204596, V-204597, V-204598, V-204599, V-204600, V-204601, V-204602, V-204609 4610, V-204611, V-204612, V-204613, V-204614, V-204615, V-204616, V-204617, V-204619, V-204622, V-204625, V-204630, V-204631, V-204633, V-233307, V-237634, V-237635, V-251703, V-255925, V-255925, V-255927, V-255928 e V-256970

**RHEL 8 STIG Versão 2 Versão 6**

Inclui todas as configurações STIG compatíveis que o componente de fortalecimento aplica às vulnerabilidades da Categoria III (Baixa) para esta distribuição do Linux, além de:
+ 

**RHEL 8/CentOS 8**  
V-230222, V-230228, V-230231, V-230233, V-230236, V-230237, V-230238, V-230239, V-230240, V-230243, V-230244, V-230245, V-230246, V-230247, V-230248, V-230249, V-230250, V-230256, V-230257, V-230258, V-230259, V-230260, V-230261, V-230262, V-230266, V-230267, V-230268, V-230271, V-230273, V-230275, V-230276, V-230277, V-230278, V-230279, V-230280, V-230282 230286, V-230287, V-230288, V-230290, V-230291, V-230296, V-230298, V-230310, V-230311, V-230312, V-230313, V-230314, V-230315, V-230316, V-230318, V-230319, V-230320, V-230321, V-230322, V-230324, V-230325, V-230326, V-230327, V-230330, V-230332, V-230333, V-230335, V-230337, V-230339, V-230341, V-230343, V-230345, V-230347, V-230348, V-230352, V-230353, V-230354 230356, V-230357, V-230358, V-230359, V-230360, V-230361, V-230362, V-230363, V-230365, V-230366, V-230368, V-230369, V-230370, V-230372, V-230373, V-230375, V-230376, V-230377, V-230377, V-230378, V-230380, V-230382, V-230383, V-230385, V-230386, V-230387, V-230389, V-230390, V-230392, V-230393, V-230394, V-230396, V-230397, V-230398, V-230399, V-230400, V-230401, V-230402, V-230402, V-230403, V-230404, V-230405, V-230406, V-230407, V-230408, V-230409, V-230410, V-230411, V-230412, V-230413, V-230418, V-230419, V-230421, V-230422, V-230423, V-230424, V-230425, V-230426, V-230427, V-230428, V-230429, V-230430, V-230431, V-230432, V-230433, V-230434, V-230435, V-230436, V-230437, V-230438, V-230439, V-230444, V-230446, V-230447, V-230448, V-230449, V-230455, V-230456, V-230462, V-230463, V-230464, V-230465, V-230466, V-230467, V-230470, V-230471, V-230472, V-230473, V-230474, V-230475, V-230478, V-230480, V-230481, V-230482, V-230483, V-230483, V-230488, V-230489, V-230493, V-230502, V-230503, V-230505, V-230506, V-230507, V-230523, V-230524, V-230525, V-230526, V-230527, V-230532, V-230535, V-230536, V-230537, V-230538, V-230539, V-230540, V-230541, V-230542, V-230543, V-230544, V-230545, V-230546, V-230547, V-230548, V-230549, V-230550, V-230555, V-230556, V-230557, V-230559, V-230560, V-230561, V-237640, V-237642, V-237643, V-244519, V-244519, V-244523, V-244524, V-244525, V-244526, V-244528, V-244531, V-244533, V-244535, V-244536, V-244538, V-244539, V-244542, V-244543, V-244544, V-244545, V-244547, V-244550, V-244551, V-244552, V-244553, V-244554, V-250315, V-250315, V-250315, V-250316, V-250316, V-250317, V-251707, V-251708, V-251709, V-251710, V-251711, V-251713, V-251714, V-251715, V-251716, V-251717, V-251718, V-256974, V-257258, V-257258, V-274877, V-279929, V-279930 e V-279931

**RHEL 9 STIG Versão 2 Versão 7**

Inclui todas as configurações STIG compatíveis que o componente de fortalecimento aplica às vulnerabilidades da Categoria III (Baixa) para esta distribuição do Linux, além de:
+ 

**RHEL 9/CentOS Stream 9**  
V-257780, V-257781, V-257783, V-257786, V-257788, V-257790, V-257791, V-257792, V-257793, V-257794, V-257797, V-257798, V-257799, V-257800, V-257801, V-257802, V-257803, V-257804 257805, V-257806, V-257807, V-257809, V-257810, V-257811, V-257812, V-257813, V-257814, V-257815, V-257816, V-257817, V-257818, V-257825, V-257827, V-257828, V-257829 257830, V-257831, V-257832, V-257833, V-257834, V-257836, V-257838, V-257839, V-257840, V-257841, V-257842, V-257849, V-257882, V-257883, V-257884, V-257885, V-257886, V-257887, V-257888, V-257889, V-257890, V-257891, V-257892, V-257893, V-257894, V-257895, V-257896, V-257897, V-257898, V-257899, V-257900, V-257901, V-257902, V-257903, V-257904, V-257905, V-257906, V-257907, V-257907, V-257907 908, V-257909, V-257910, V-257912, V-257913, V-257914, V-257915, V-257916, V-257917, V-257918, V-257919, V-257920, V-257921, V-257922, V-257923, V-257924, V-257925, V-257926, V-257926, V-257926, V-257926, V-257925, V-257926, V-257926, V-257926 257927, V-257928, V-257929, V-257930, V-257933, V-257934, V-257935, V-257936, V-257939, V-257940, V-257942, V-257943, V-257944, V-257948, V-257951, V-257952, V-257953, V-257954, V-257957 257958, V-257959, V-257960, V-257961, V-257962, V-257963, V-257964, V-257965, V-257966, V-257967, V-257968, V-257969, V-257970, V-257971, V-257972, V-257973, V-257974, V-257975, V-257976, V-257977, V-257978, V-257979, V-257980, V-257982, V-257983, V-257985, V-257987, V-257988, V-257992, V-257993, V-257994, V-257995, V-257996, V-257997, V-257998, V-257999, V-258000, V-258001, V-258002, V-258003, V-258004, V-258006, V-258007, V-258008, V-258009, V-258010, V-258011, V-258028, V-258034, V-258035, V-258038, V-258039, V-258040, V-258041, V-258043, V-258046, V-258049, V-258052, V-258054, V-258055, V-258056, V-258057, V-258060, V-258063, V-258064, V-258065, V-258066, V-258077, V-258071, V-258072, V-258073, V-258074, V-258075, V-258077, V-258079, V-258080, V-258080, V-258081, V-258082, V-258083, V-258084, V-258085, V-258088, V-258089, V-258090, V-258091, V-258092, V-258093, V-258095, V-258097, V-258098, V-258099, V-258100, V-258101, V-258102, V-258103 V-258104, V-258105, V-258107, V-258108, V-258109, V-258110, V-258111, V-258112, V-258113, V-258114, V-258115, V-258116, V-258117, V-258118, V-258119, V-258120, V-258121, V-258122, V-258122, V-258122 3, V-258124, V-258125, V-258126, V-258128, V-258129, V-258130, V-258133, V-258137, V-258140, V-258141, V-258142, V-258144, V-258145, V-258146, V-258147, V-258148, V-258150, V-258150, V-258150 V-258151, V-258153, V-258154, V-258156, V-258157, V-258158, V-258159, V-258160, V-258161, V-258162, V-258163, V-258164, V-258165, V-258166, V-258167, V-258167, V-258167 168, V-258169, V-258170, V-258171, V-258172, V-258175, V-258176, V-258177, V-258178, V-258179, V-258180, V-258181, V-258182, V-258183, V-258184, V-258185, V-258186, V-258187, V-258188, V-258189, V-258190, V-258191, V-258192, V-258193, V-258194, V-258195, V-258196, V-258197, V-258198, V-258199, V-258200, V-258202, V-258203, V-258204, V-258205, V-258206, V-258207, V-258208, V-258209, V-258210, V-258211, V-258212, V-258213, V-258214, V-258215, V-258216, V-258217, V-258218, V-258219, V-258220, V-258221, V-258222, V-258223, V-258224, V-258225, V-258226, V-258227, V-258228, V-258228 258229, V-258232, V-258233, V-258234, V-258237, V-258239, V-258240, V-270174, V-270175, V-270176, V-270177, V-272488 e V-279936

**Amazon Linux 2023 STIG versão 1 versão 2**

Inclui todas as configurações STIG compatíveis que o componente de fortalecimento aplica às vulnerabilidades da Categoria III (Baixa) para esta distribuição do Linux, além de:

V-273995, V-274000, V-274001, V-274002, V-274003, V-274004, V-274005, V-274006, V-274008, V-274018, V-274011, V-274012, V-274013, V-274014, V-274017, V-274018, V-274019, V-274020, V-274020, V-274021, V-274022, V-274023, V-274024, V-274026, V-274027, V-274028, V-274030, V-274031, V-274032, V-274033, V-274034, V-274035, V-274036, V-274037, V-274040, V-274041, V-274042, V-274044, V-274044, V-274042, V-274044, V-274044, V-274042, V-274044, V-274044, V-274042, V-274044, V-274044, V-274042, V-274044, V-274044, V-274042, V-274044, V-274044, V-274042, V-274044, V-274044, V-V-274045, V-274047, V-274048, V-274049, V-274050, V-274051, V-274053, V-274054, V-274059, V-274061, V-274062, V-274069, V-274070, V-274071, V-274072, V-274073, V-274074, V-274075, V-274076, V-274077, V-274078, V-274079, V-274081, V-274082, V-274083, V-274084, V-274085, V-274086, V-274087, V-274088, V-274089, V-274090, V-274091, V-274092, V-274093, V-274094, V-274095, V-274096, V-274097, V-274098, V-274099, V-274100, V-274101, V-274102, V-274103, V-274104, V-274105, V-274106, V-274107, V-274108, V-274109, V-274110, V-274111, V-274112, V-274113, V-274114, V-274115, V-274116, V-274117, V-274119, V-274120, V-274121, V-274122, V-274123, V-274124, V-274125, V-274126, V-274127, V-274128, V-274129, V-274130, V-274131, V-274132, V-274133, V-274134, V-274135, V-274136, V-274137, V-274138, V-274139, V-274140, V-274142, V-274143, V-274144, V-274145, V-274147, V-274149, V-274151, V-274152, V-274154, V-274155, V-274156, V-274156, V-274156, V-274156 157, V-274160, V-274161, V-274162, V-274163, V-274164, V-274165, V-274166, V-274167, V-274168, V-274169, V-274170, V-274173, V-274177, V-274181, V-274182, V-274185 e V-274187

**SLES 12 STIG Versão 3 Versão 4**

Inclui todas as configurações STIG compatíveis que o componente de fortalecimento aplica às vulnerabilidades da Categoria III (Baixa) para esta distribuição do Linux, além de:

V-217102, V-217105, V-217105, V-217106, V-217106, V-217110, V-217116, V-217117, V-217118, V-217119, V-217120, V-217121, V-217122, V-217124, V-217125, V-217126, V-217127, V-217128, V-217130, V-217134, V-217138, V-217143, V-217147, V-217152, V-217153, V-217154, V-217155, V-217156, V-217158, V-217161, V-217163, V-217166, V-217167, V-217168, V-217169, V-217170, V-217171, V-217182, V-217183, V-217188, V-217190, V-217191, V-217194, V-217195, V-217196, V-217197, V-217200, V-217201, V-217202, V-217203, V-217204 17205, V-217206, V-217207, V-217208, V-217210, V-217217, V-217218, V-217223, V-217227, V-217230, V-217240, V-217241, V-217242, V-217243, V-217244, V-217245, V-217246, V-217247, V-217248, V-217249, V-217250, V-217251 17252, V-217253, V-217254, V-217255, V-217257, V-217258, V-217260, V-217265, V-217266, V-217267, V-217269, V-217272, V-217273, V-217274, V-217275, V-217276, V-217276, V-22217277, V-217278, V-217279, V-217280, V-217283, V-217284, V-217286, V-217287, V-217288, V-217289, V-217290, V-217291, V-217292, V-217293, V-217294, V-217295, V-217295 17296, V-217299, V-217300, V-217301, V-217302, V-233308, V-237605, V-237606, V-237607, V-237608, V-237609, V-237610, V-237611, V-237612, V-237613, V-237614, V-237615, V-237616, V-237617, V-237618, V-237619, V-237620, V-237621, V-237622, V-237623, V-251720, V-251722, V-255922 14 e V-256981

**SLES 15 STIG Versão 2 Versão 6**

Inclui todas as configurações STIG compatíveis que o componente de fortalecimento aplica às vulnerabilidades da Categoria III (Baixa) para esta distribuição do Linux, além de:

V-234802, V-234807, V-234808, V-234809, V-234813, V-234815, V-234817, V-234821, V-234822, V-234823, V-234825, V-234827, V-234828, V-234829, V-234830, V-234832, V-234833, V-234834, V-234834, V-234834 234835, V-234836, V-234837, V-234838, V-234839, V-234840, V-234841, V-234842, V-234843, V-234844, V-234845, V-234848, V-234854, V-234855, V-234856, V-234857, V-234858, V-234861, V-234862, V-234862, V-234862 234863, V-234869, V-234870, V-234875, V-234878, V-234880, V-234881, V-234882, V-234883, V-234884, V-234885, V-234886, V-234887, V-234888, V-234889, V-234891, V-234895, V-234896, V-234897, V-234897, V-234897 234899, V-234900, V-234901, V-234902, V-234903, V-234904, V-234906, V-234910, V-234911, V-234912, V-234913, V-234914, V-234918, V-234924, V-234928, V-234932, V-234937, V-234938, V-234939, V-234939, V-234940, V-234941, V-234942, V-234943, V-234944, V-234945, V-234946, V-234947, V-234948, V-234949, V-234950, V-234951, V-234952, V-234954, V-234956, V-234957, V-234958, V-234959, V-234961, V-234962, V-234964, V-234966, V-234969, V-234973, V-234975, V-234976, V-234977, V-234978, V-234979, V-234981, V-234982, V-234983, V-234991, V-235002, V-235003, V-235007, V-235008, V-235009, V-235010, V-235013, V-235014, V-235015, V-235016, V-235017, V-235018, V-235019, V-235020, V-235021, V-235022, V-235023, V-235024, V-235025, V-235026, V-235028, V-235029, V-235030, V-251724, V-255920, V-256983 e V-274879

**Ubuntu 18.04 STIG versão 2 versão 15**

Inclui todas as configurações STIG compatíveis que o componente de fortalecimento aplica às vulnerabilidades da Categoria III (Baixa) para esta distribuição do Linux, além de:

V-219149, V-219155, V-219156, V-219160, V-219166, V-219168, V-219176, V-219181, V-219184, V-219186, V-219188, V-219189, V-219190, V-219191, V-219192, V-219193, V-219194, V-219195, V-219196, V-219197, V-219198, V-219199, V-219200, V-219201, V-219202, V-219203, V-219204, V-219205, V-219206, V-219207, V-219208, V-219209, V-219213, V-219214, V-219215, V-219216, V-219217, V-219218, V-219219, V-219220, V-219221, V-219222, V-219223, V-219224, V-219225, V-219226, V-219227, V-219228, V-219229, V-219230, V-219231, V-219232, V-219233, V-219234, V-219235, V-219236, V-219238, V-219239, V-219240, V-219241, V-219242, V-219243, V-219244, V-219250, V-219254, V-219257, V-219263, V-219264, V-219265, V-219266, V-219267, V-219268, V-219269, V-219270, V-219271, V-219272, V-219273, V-219274, V-219275, V-219276, V-219277, V-219279, V-219281, V-219287, V-219291, V-219296, V-219297, V-219298, V-219299, V-219300, V-219303, V-219304, V-219306, V-219309, V-219310, V-219311, V-219315, V-219318, V-219319, V-219323, V-219326, V-219328, V-219330, V-219331, V-219335, V-219336, V-219337, V-219338, V-219339, V-219342, V-219344, V-233779, V-233780e V-255906

**Ubuntu 20.04 STIG Versão 2 Versão 4**

Inclui todas as configurações STIG compatíveis que o componente de fortalecimento aplica às vulnerabilidades da Categoria III (Baixa) para esta distribuição do Linux, além de:

V-238200, V-238205, V-238207, V-238209, V-238210, V-238211, V-238212, V-238213, V-238220, V-238225, V-238227, V-238228, V-238229, V-238230, V-238231, V-238232, V-238236, V-238238, V-238239, V-238240, V-238241, V-238242, V-238244, V-238245, V-238246, V-238247, V-238248, V-238249, V-238250, V-238251, V-238252, V-238253, V-238254, V-238255, V-238256, V-238257, V-238258, V-238264, V-238268, V-238271, V-238277, V-238278, V-238279, V-238280, V-238281, V-238282, V-238283, V-238284, V-238285, V-238286, V-238287, V-238288, V-238289, V-238290, V-238291, V-238292, V-238293, V-238294, V-238295, V-238297, V-238298, V-238299, V-238300, V-238301, V-238302, V-238303, V-238304, V-238309, V-238310, V-238315, V-238316, V-238317, V-238318, V-238319, V-238320, V-238324, V-238325, V-238329, V-238330, V-238333, V-238334, V-238337, V-238338, V-238339, V-238340, V-238341, V-238342, V-238343, V-238344, V-238345, V-238346, V-238347, V-238348, V-238349, V-238350, V-238351, V-238352, V-238353, V-238355, V-238356, V-238359, V-238360, V-238369, V-238370, V-238371, V-238376, V-238377, V-238378, V-251505, V-255912, V-274852e V-274853

**Ubuntu 22.04 STIG Versão 2 Versão 7**

Inclui todas as configurações STIG compatíveis que o componente de fortalecimento aplica às vulnerabilidades da Categoria III (Baixa) para esta distribuição do Linux, além de:

V-260471, V-260473, V-260474, V-260475, V-260477, V-260478, V-260485, V-260486, V-260487, V-260488, V-260489, V-260490, V-260491, V-260492, V-260493, V-260494, V-260495, V-260496, V-260497, V-260498, V-260499, V-260500, V-260505, V-260506, V-260507, V-260508, V-260509, V-260510, V-260511, V-260512, V-260513, V-260514, V-260522, V-260527, V-260528, V-260530, V-260533, V-260534, V-260535, V-260537, V-260538, V-260540, V-260542, V-260543, V-260545, V-260546, V-260546 47, V-260553, V-260554, V-260555, V-260556, V-260557, V-260560, V-260561, V-260562, V-260563, V-260564, V-260565, V-260566, V-260567, V-260569, V-260572, V-260573, V-260574, V-260575, V-260576, V-260582, V-260584, V-260585, V-260586, V-260588, V-260589, V-260590, V-260591, V-260594, V-260597, V-260598, V-260599, V-260600, V-260601, V-260602, V-260603, V-260604, V-260605, V-260606, V-260607, V-260608, V-260609, V-260610, V-260611, V-260612, V-260613, V-260614, V-260615, V-260616, V-260617, V-260618, V-260619, V-260620, V-260621, V-260622, V-260623, V-260624, V-260624 25, V-260626, V-260627, V-260628, V-260629, V-260630, V-260631, V-260632, V-260633, V-260634, V-260635, V-260636, V-260637, V-260638, V-260639, V-260640, V-260641, V-260643, V-260644, V-260645, V-260646, V-260647, V-260648, V-260649, V-274862, V-274864 e V-274866

**Ubuntu 24.04 STIG Versão 1 Versão 4**

Inclui todas as configurações STIG compatíveis que o componente de fortalecimento aplica às vulnerabilidades da Categoria III (Baixa) para esta distribuição do Linux, além de:

V-270649, V-270651, V-270652, V-270653, V-270654, V-270656, V-270657, V-270659, V-270660, V-270661, V-270662, V-270663, V-270669, V-270672, V-270673, V-270674, V-270676, V-270678, V-270679, V-270680, V-270681, V-270683, V-270684, V-270685, V-270686, V-270687, V-270688, V-270689, V-270692, V-270693, V-270696, V-270697, V-270698, V-270699, V-270700, V-270701, V-270702, V-270703, V-270704, V-270705, V-270709, V-270715, V-270716, V-270718, V-270720, V-270721, V-270722, V-270723, V-270724, V-270725, V-270726, V-270727, V-270728, V-270729, V-270730, V-270731, V-270732, V-270733, V-270737, V-270739, V-270740, V-270741, V-270742, V-270743, V-270746, V-270750, V-270753, V-270755, V-270756, V-270757, V-270758, V-270759, V-270760, V-270765, V-270766, V-270767, V-270768, V-270769, V-270770, V-270771, V-270772, V-270773, V-270775, V-270776, V-270777, V-270778, V-270779, V-270780, V-270781, V-270782, V-270783, V-270784, V-270785, V-270786, V-270787, V-270788, V-270789, V-270790, V-270791, V-270792, V-270793, V-270794, V-270795, V-270796, V-270797, V-270798, V-270799, V-270800, V-270801, V-270802, V-270803, V-270804, V-270805, V-270806, V-270807, V-270808, V-270809, V-270810, V-270811, V-270812, V-270813, V-270814, V-270815, V-270821, V-270822, V-270823, V-270824, V-270825, V-270826, V-270827, V-270828, V-270829, V-270830, V-270831, V-270832, V-274870, V-274871, V-274872e V-274873

### Linux STIG High (categoria I)
<a name="ib-linux-stig-high"></a>

A lista a seguir contém configurações do STIG que o componente de fortalecimento aplica à sua infraestrutura. Se uma configuração compatível não for aplicável à sua infraestrutura, o componente de fortalecimento ignora essa configuração e segue em frente. Por exemplo, algumas configurações STIG podem não se aplicar a servidores autônomos. Políticas específicas da organização também podem afetar quais configurações o componente de fortalecimento aplica, como um requisito para que os administradores revisem as configurações do documento.

Para obter uma lista completa, consulte a [Biblioteca de STIGs documentos](https://public.cyber.mil/stigs/downloads/?_dl_facet_stigs=operating-systems%2Cunix-linux). Para obter informações sobre como visualizar a lista completa, consulte [STIG Viewing Tools](https://public.cyber.mil/stigs/srg-stig-tools/).

**nota**  
Os componentes de fortalecimento Linux STIG High incluem todas as configurações STIG listadas que AWSTOE se aplicam aos componentes de fortalecimento Linux STIG Low e Linux STIG Medium, além das configurações STIG listadas que se aplicam especificamente às vulnerabilidades da Categoria I.

**STIG versão 3 lançamento 15 do RHEL 7**

Inclui todas as configurações STIG compatíveis que o componente de fortalecimento aplica às vulnerabilidades das Categorias II e III (Média e Baixa) para esta distribuição do Linux, além de:
+ 

**RHEL 7/CentOS 7/ AL2**  
V-204424, V-204425, V-204442, V-204443, V-204447, V-204448, V-204455, V-204462, V-204497, V-204497, V-204502, V-204594, V-204620 e V-204621

**RHEL 8 STIG Versão 2 Versão 6**

Inclui todas as configurações STIG compatíveis que o componente de fortalecimento aplica às vulnerabilidades das Categorias II e III (Média e Baixa) para esta distribuição do Linux, além de:
+ 

**RHEL 8/CentOS 8**  
V-230223, V-230264, V-230283, V-230284, V-230487, V-230492, V-230533, V-230558, V-244540, V-279933, V-230265, V-230226, V-230530, V-268322, V-230529 e V-230531

**RHEL 9 STIG Versão 2 Versão 7**

Inclui todas as configurações STIG compatíveis que o componente de fortalecimento aplica às vulnerabilidades das Categorias II e III (Média e Baixa) para esta distribuição do Linux, além de:
+ 

**RHEL 9/CentOS Stream 9**  
V-257820, V-257821, V-257826, V-257835, V-257955, V-257956, V-258059, V-258230, V-258238, V-257984, V-257986, V-258078, V-258094, V-258235, V-257784 e V-257785

**Amazon Linux 2023 STIG versão 1 versão 2**

Inclui todas as configurações STIG compatíveis que o componente de fortalecimento aplica às vulnerabilidades das Categorias II e III (Média e Baixa) para esta distribuição do Linux, além de:

V-273996, V-273997, V-273999, V-274007, V-274038, V-274039, V-274046, V-274052, V-274057e V-274153

**SLES 12 STIG Versão 3 Versão 4**

Inclui todas as configurações STIG compatíveis que o componente de fortalecimento aplica às vulnerabilidades das Categorias II e III (Média e Baixa) para esta distribuição do Linux, além de:

 V-217101, V-217139, V-217141, V-217142, V-217159, V-217160, V-217164, V-217264, V-217268, V-222386 e V-251721

**SLES 15 STIG Versão 2 Versão 6**

Inclui todas as configurações STIG compatíveis que o componente de fortalecimento aplica às vulnerabilidades das Categorias II e III (Média e Baixa) para esta distribuição do Linux, além de:

V-234800, V-234804, V-234818, V-234852, V-234859, V-234860, V-234898, V-234984, V-234985, V-234988, V-234989, V-234990, V-235031, V-235032e V-251725

**Ubuntu 18.04 STIG versão 2 versão 15**

Inclui todas as configurações STIG compatíveis que o componente de fortalecimento aplica às vulnerabilidades das Categorias II e III (Média e Baixa) para esta distribuição do Linux, além de:

V-219157, V-219158, V-219177, V-219212, V-219308, V-219314, V-219316 e V-251507

**Ubuntu 20.04 STIG Versão 2 Versão 4**

Inclui todas as configurações STIG compatíveis que o componente de fortalecimento aplica às vulnerabilidades das Categorias II e III (Média e Baixa) para esta distribuição do Linux, além de:

V-238201, V-238218, V-238219, V-238326, V-238327, V-238380e V-251504

**Ubuntu 22.04 STIG Versão 2 Versão 7**

Inclui todas as configurações STIG compatíveis que o componente de fortalecimento aplica às vulnerabilidades das Categorias II e III (Média e Baixa) para esta distribuição do Linux, além de:

V-260469, V-260482, V-260483, V-260523, V-260524, V-260526, V-260529, V-260539, V-260570, V-260571, V-260579 e V-279937

**Ubuntu 24.04 STIG Versão 1 Versão 4**

Inclui todas as configurações STIG compatíveis que o componente de fortalecimento aplica às vulnerabilidades das Categorias II e III (Média e Baixa) para esta distribuição do Linux, além de:

V-270647, V-270648, V-270665, V-270666, V-270708, V-270711, V-270712, V-270713, V-270714, V-270717, V-270736, V-270738 e V-279938

## Log do histórico de versões do STIG para Linux
<a name="ib-linux-version-hist"></a>

Esta seção registra o histórico de versões do componente do Linux. Para ver as alterações e as versões publicadas de um trimestre, escolha o título para expandir as informações.

### Alterações no primeiro trimestre de 2026 - 10/3/2026:
<a name="2026-q1-linux"></a>

As seguintes versões do STIG foram atualizadas, aplicadas à STIGs versão do primeiro trimestre de 2026 para todos os níveis de conformidade:

**STIG-Build-Linux**
+ RHEL 8 STIG Versão 2 Versão 6
+ RHEL 9 STIG Versão 2 Versão 7
+ Amazon Linux 2023 STIG versão 1 versão 2
+ SLES 12 STIG Versão 3 Versão 4
+ SLES 15 STIG Versão 2 Versão 6
+ Ubuntu 20.04 STIG Versão 2 Versão 4
+ Ubuntu 22.04 STIG Versão 2 Versão 7
+ Ubuntu 24.04 STIG Versão 1 Versão 4

### Alterações no terceiro trimestre de 2025 (4/09/2025):
<a name="2025-q3-linux"></a>

Adicionada compatibilidade com o sistema operacional SUSE Linux Enterprise Server (SLES) e o Amazon Linux 2023. Atualizou as seguintes versões do STIG e aplicou o STIGS para a versão do terceiro trimestre de 2025 para todos os níveis de conformidade ()low/medium/high:
+ STIG versão 3 lançamento 15 do RHEL 7
+ STIG versão 2 lançamento 4 do RHEL 8
+ STIG versão 2 lançamento 5 do RHEL 9
+ STIG versão 1 lançamento 1 do Amazon Linux 2023
+ STIG versão 3 lançamento 3 do SLES 12
+ STIG versão 2 lançamento 5 do SLES 15
+ STIG versão 2 lançamento 15 do Ubuntu 18.04
+ STIG versão 2 lançamento 3 do Ubuntu 20.04
+ STIG versão 2 lançamento 5 do Ubuntu 22.04
+ STIG versão 1 lançamento 2 do Ubuntu 24.04

### Alterações no segundo trimestre de 2025 (26/06/2025):
<a name="2025-q2-linux"></a>

Atualizadas as versões de STIG atualizadas a seguir, aplicados STIGS para o lançamento do segundo trimestre de 2025:

**STIG-Build-Linux-Low versão 2025.2.x**
+ STIG versão 3 lançamento 15 do RHEL 7
+ STIG versão 2 lançamento 3 do RHEL 8
+ STIG versão 2 lançamento 4 do RHEL 9
+ STIG versão 2 lançamento 15 do Ubuntu 18.04
+ STIG versão 2 lançamento 2 do Ubuntu 20.04
+ STIG versão 2 lançamento 4 do Ubuntu 22.04
+ STIG versão 1 lançamento 1 do Ubuntu 24.04

**STIG-Build-Linux-Medium versão 2025.2.x**
+ STIG versão 3 lançamento 15 do RHEL 7
+ STIG versão 2 lançamento 3 do RHEL 8
+ STIG versão 2 lançamento 4 do RHEL 9
+ STIG versão 2 lançamento 15 do Ubuntu 18.04
+ STIG versão 2 lançamento 2 do Ubuntu 20.04
+ STIG versão 2 lançamento 4 do Ubuntu 22.04
+ STIG versão 1 lançamento 1 do Ubuntu 24.04

**STIG-Build-Linux-High versão 2025.2.x**
+ STIG versão 3 lançamento 15 do RHEL 7
+ STIG versão 2 lançamento 3 do RHEL 8
+ STIG versão 2 lançamento 4 do RHEL 9
+ STIG versão 2 lançamento 15 do Ubuntu 18.04
+ STIG versão 2 lançamento 2 do Ubuntu 20.04
+ STIG versão 2 lançamento 4 do Ubuntu 22.04
+ STIG versão 1 lançamento 1 do Ubuntu 24.04

### Alterações no primeiro trimestre de 2025 (11/04/2025):
<a name="2025-q1-linux"></a>

Atualizadas versões de STIG a seguir, aplicados STIGS para o lançamento do primeiro trimestre de 2025 e adicionada compatibilidade com o Ubuntu 24.04:

**STIG-Build-Linux-Low versão 2025.1.x**
+ STIG versão 3 lançamento 15 do RHEL 7
+ STIG versão 2 lançamento 2 do RHEL 8
+ STIG versão 2 lançamento 3 do RHEL 9
+ STIG versão 2 lançamento 15 do Ubuntu 18.04
+ STIG versão 2 lançamento 2 do Ubuntu 20.04
+ STIG versão 2 lançamento 3 do Ubuntu 22.04
+ STIG versão 1 lançamento 1 do Ubuntu 24.04

**STIG-Build-Linux-Medium versão 2025.1.x**
+ STIG versão 3 lançamento 15 do RHEL 7
+ STIG versão 2 lançamento 2 do RHEL 8
+ STIG versão 2 lançamento 3 do RHEL 9
+ STIG versão 2 lançamento 15 do Ubuntu 18.04
+ STIG versão 2 lançamento 2 do Ubuntu 20.04
+ STIG versão 2 lançamento 3 do Ubuntu 22.04
+ STIG versão 1 lançamento 1 do Ubuntu 24.04

**STIG-Build-Linux-High versão 2025.1.x**
+ STIG versão 3 lançamento 15 do RHEL 7
+ STIG versão 2 lançamento 2 do RHEL 8
+ STIG versão 2 lançamento 3 do RHEL 9
+ STIG versão 2 lançamento 15 do Ubuntu 18.04
+ STIG versão 2 lançamento 2 do Ubuntu 20.04
+ STIG versão 2 lançamento 3 do Ubuntu 22.04
+ STIG versão 1 lançamento 1 do Ubuntu 24.04

### Alterações no quarto trimestre de 2024 (10/12/2024):
<a name="2024-q4-linux"></a>

Atualizadas as versões de STIG a seguir, aplicados STIGS para o lançamento do quarto trimestre de 2024 e adicionadas informações sobre dois novos parâmetros de entrada para os componentes Linux:

**STIG-Build-Linux-Low versão 2024.4.x**
+ STIG versão 3 lançamento 15 do RHEL 7
+ STIG versão 2 lançamento 1 do RHEL 8
+ STIG versão 2 lançamento 2 do RHEL 9
+ STIG versão 2 lançamento 15 do Ubuntu 18.04
+ STIG versão 2 lançamento 1 do Ubuntu 20.04
+ STIG versão 2 lançamento 2 do Ubuntu 22.04

**STIG-Build-Linux-Medium versão 2024.4.x**
+ STIG versão 3 lançamento 15 do RHEL 7
+ STIG versão 2 lançamento 1 do RHEL 8
+ STIG versão 2 lançamento 2 do RHEL 9
+ STIG versão 2 lançamento 15 do Ubuntu 18.04
+ STIG versão 2 lançamento 1 do Ubuntu 20.04
+ STIG versão 2 lançamento 2 do Ubuntu 22.04

**STIG-Build-Linux-High versão 2024.4.x**
+ STIG versão 3 lançamento 15 do RHEL 7
+ STIG versão 2 lançamento 1 do RHEL 8
+ STIG versão 2 lançamento 2 do RHEL 9
+ STIG versão 2 lançamento 15 do Ubuntu 18.04
+ STIG versão 2 lançamento 1 do Ubuntu 20.04
+ STIG versão 2 lançamento 2 do Ubuntu 22.04

### Alterações no terceiro trimestre de 2024 (04/10/2024) (nenhuma alteração):
<a name="2024-q3-linux"></a>

Não houve alterações de STIGS para componente Linux para o lançamento do terceiro trimestre de 2024.

### Alterações no segundo trimestre de 2024 (10/5/2024):
<a name="2024-q2-linux"></a>

Versões do STIG atualizadas e STIGS aplicados para o release do segundo trimestre de 2024. Compatibilidade com RHEL 9, CentOS Stream 9 e Ubuntu 22.04 adicionada, conforme a seguir:

**STIG-Build-Linux-Low versão 2024.2.x**
+ RHEL 7 STIG Versão 3 Release 14
+ RHEL 8 STIG Versão 1 Release 14
+ RHEL 9 STIG Versão 1 Release 3
+ Ubuntu 18.04 STIG Versão 2 Release 14
+ Ubuntu 20.04 STIG Versão 1 Release 12
+ Ubuntu 22.04 STIG Versão 1 Release 1

**STIG-Build-Linux-Medium versão 2024.2.x**
+ RHEL 7 STIG Versão 3 Release 14
+ RHEL 8 STIG Versão 1 Release 14
+ RHEL 9 STIG Versão 1 Release 3
+ Ubuntu 18.04 STIG Versão 2 Release 14
+ Ubuntu 20.04 STIG Versão 1 Release 12
+ Ubuntu 22.04 STIG Versão 1 Release 1

**STIG-Build-Linux-High versão 2024.2.x**
+ RHEL 7 STIG Versão 3 Release 14
+ RHEL 8 STIG Versão 1 Release 14
+ RHEL 9 STIG Versão 1 Release 3
+ Ubuntu 18.04 STIG Versão 2 Release 14
+ Ubuntu 20.04 STIG Versão 1 Release 12
+ Ubuntu 22.04 STIG Versão 1 Release 1

### Alterações no primeiro trimestre de 2024 (6/2/2024):
<a name="2024-q1-linux"></a>

Versões do STIG atualizadas e STIGS aplicados para o lançamento do primeiro trimestre de 2024 da seguinte forma:

**STIG-Build-Linux-Low versão 2024.1.x**
+ RHEL 7 STIG Versão 3 Release 14
+ RHEL 8 STIG Versão 1 Release 13
+ Ubuntu 18.04 STIG Versão 2 Release 13
+ Ubuntu 20.04 STIG Versão 1 Release 11

**STIG-Build-Linux-Medium versão 2024.1.x**
+ RHEL 7 STIG Versão 3 Release 14
+ RHEL 8 STIG Versão 1 Release 13
+ Ubuntu 18.04 STIG Versão 2 Release 13
+ Ubuntu 20.04 STIG Versão 1 Release 11

**STIG-Build-Linux-High versão 2024.1.x**
+ RHEL 7 STIG Versão 3 Release 14
+ RHEL 8 STIG Versão 1 Release 13
+ Ubuntu 18.04 STIG Versão 2 Release 13
+ Ubuntu 20.04 STIG Versão 1 Release 11

### Alterações no quarto trimestre de 2023 (7/12/2023):
<a name="2023-q4-linux"></a>

Versões do STIG atualizadas e STIGS aplicados para o release do quarto trimestre de 2023 da seguinte forma:

**STIG-Build-Linux-Low versão 2023.4.x**
+ RHEL 7 STIG Versão 3 Release 13
+ RHEL 8 STIG Versão 1 Release 12
+ Ubuntu 18.04 STIG Versão 2 Release 12
+ Ubuntu 20.04 STIG Versão 1 Release 10

**STIG-Build-Linux-Medium versão 2023.4.x**
+ RHEL 7 STIG Versão 3 Release 13
+ RHEL 8 STIG Versão 1 Release 12
+ Ubuntu 18.04 STIG Versão 2 Release 12
+ Ubuntu 20.04 STIG Versão 1 Release 10

**STIG-Build-Linux-High versão 2023.4.x**
+ RHEL 7 STIG Versão 3 Release 13
+ RHEL 8 STIG Versão 1 Release 12
+ Ubuntu 18.04 STIG Versão 2 Release 12
+ Ubuntu 20.04 STIG Versão 1 Release 10

### Alterações no terceiro trimestre de 2023 - 04/10/2023:
<a name="2023-q3-linux"></a>

Versões do STIG atualizadas e STIGS aplicados para o release do terceiro trimestre de 2023 da seguinte forma:

**STIG-Build-Linux-Low versão 2023.3.x**
+ RHEL 7 STIG Versão 3 Release 12
+ RHEL 8 STIG Versão 1 Release 11
+ Ubuntu 18.04 STIG Versão 2 Release 11
+ Ubuntu 20.04 STIG Versão 1 Release 9

**STIG-Build-Linux-Medium versão 2023.3.x**
+ RHEL 7 STIG Versão 3 Release 12
+ RHEL 8 STIG Versão 1 Release 11
+ Ubuntu 18.04 STIG Versão 2 Release 11
+ Ubuntu 20.04 STIG Versão 1 Release 9

**STIG-Build-Linux-High versão 2023.3.x**
+ RHEL 7 STIG Versão 3 Release 12
+ RHEL 8 STIG Versão 1 Release 11
+ Ubuntu 18.04 STIG Versão 2 Release 11
+ Ubuntu 20.04 STIG Versão 1 Release 9

### Alterações no segundo trimestre de 2023 - 03/05/2023:
<a name="2023-q2-linux"></a>

Versões do STIG atualizadas e STIGS aplicados para o release do segundo trimestre de 2023 da seguinte forma:

**STIG-Build-Linux-Low versão 2023.2.x**
+ RHEL 7 STIG Versão 3 Release 11
+ RHEL 8 STIG Versão 1 Release 10
+ Ubuntu 18.04 STIG Versão 2 Release 11
+ Ubuntu 20.04 STIG Versão 1 Release 8

**STIG-Build-Linux-Medium versão 2023.2.x**
+ RHEL 7 STIG Versão 3 Release 11
+ RHEL 8 STIG Versão 1 Release 10
+ Ubuntu 18.04 STIG Versão 2 Release 11
+ Ubuntu 20.04 STIG Versão 1 Release 8

**STIG-Build-Linux-High versão 2023.2.x**
+ RHEL 7 STIG Versão 3 Release 11
+ RHEL 8 STIG Versão 1 Release 10
+ Ubuntu 18.04 STIG Versão 2 Release 11
+ Ubuntu 20.04 STIG Versão 1 Release 8

### Alterações no primeiro trimestre de 2023 - 27/03/2023:
<a name="2023-q1-linux"></a>

Versões do STIG atualizadas e STIGS aplicados para o release do primeiro trimestre de 2023 da seguinte forma:

**STIG-Build-Linux-Low versão 2023.1.x**
+ RHEL 7 STIG Versão 3 Release 10
+ RHEL 8 STIG Versão 1 Release 9
+ Ubuntu 18.04 STIG Versão 2 Release 10
+ Ubuntu 20.04 STIG Versão 1 Release 7

**STIG-Build-Linux-Medium versão 2023.1.x**
+ RHEL 7 STIG Versão 3 Release 10
+ RHEL 8 STIG Versão 1 Release 9
+ Ubuntu 18.04 STIG Versão 2 Release 10
+ Ubuntu 20.04 STIG Versão 1 Release 7

**STIG-Build-Linux-High versão 2023.1.x**
+ RHEL 7 STIG Versão 3 Release 10
+ RHEL 8 STIG Versão 1 Release 9
+ Ubuntu 18.04 STIG Versão 2 Release 10
+ Ubuntu 20.04 STIG Versão 1 Release 7

### Alterações no quarto trimestre de 2022 - 01/02/2023:
<a name="2022-q4-linux"></a>

Versões do STIG atualizadas e STIGS aplicados para o release do quarto trimestre de 2022 da seguinte forma:

**STIG-Build-Linux-Low versão 2022.4.x**
+ RHEL 7 STIG Versão 3 Release 9
+ RHEL 8 STIG Versão 1 Release 8
+ Ubuntu 18.04 STIG Versão 2 Release 9
+ Ubuntu 20.04 STIG Versão 1 Release 6

**STIG-Build-Linux-Medium versão 2022.4.x**
+ RHEL 7 STIG Versão 3 Release 9
+ RHEL 8 STIG Versão 1 Release 8
+ Ubuntu 18.04 STIG Versão 2 Release 9
+ Ubuntu 20.04 STIG Versão 1 Release 6

**STIG-Build-Linux-High versão 2022.4.x**
+ RHEL 7 STIG Versão 3 Release 9
+ RHEL 8 STIG Versão 1 Release 8
+ Ubuntu 18.04 STIG Versão 2 Release 9
+ Ubuntu 20.04 STIG Versão 1 Release 6

### Alterações no terceiro trimestre de 2022 - 30/09/2022 (sem alterações):
<a name="2022-q3-linux"></a>

Não houve alterações no componente STIGS do Linux para o release do terceiro trimestre de 2022.

### Alterações no segundo trimestre de 2022 - 02/08/2022:
<a name="2022-q2-linux"></a>

Suporte do Ubuntu introduzido, versões do STIG atualizadas e STIGS aplicados para o release do segundo trimestre de 2022 da seguinte forma:

**STIG-Build-Linux-Low versão 2022.2.x**
+ RHEL 7 STIG Versão 3 Release 7
+ RHEL 8 STIG Versão 1 Release 6
+ Ubuntu 18.04 STIG Versão 2 Release 6 (novo)
+ Ubuntu 20.04 STIG Versão 1 Release 4 (novo)

**STIG-Build-Linux-Medium versão 2022.2.x**
+ RHEL 7 STIG Versão 3 Release 7
+ RHEL 8 STIG Versão 1 Release 6
+ Ubuntu 18.04 STIG Versão 2 Release 6 (novo)
+ Ubuntu 20.04 STIG Versão 1 Release 4 (novo)

**STIG-Build-Linux-High versão 2022.2.x**
+ RHEL 7 STIG Versão 3 Release 7
+ RHEL 8 STIG Versão 1 Release 6
+ Ubuntu 18.04 STIG Versão 2 Release 6 (novo)
+ Ubuntu 20.04 STIG Versão 1 Release 4 (novo)

### Alterações no primeiro trimestre de 2022 - 26/04/2022:
<a name="2022-q1-linux"></a>

Refatorado para incluir melhor suporte para contêineres. Combinou o AL2 script anterior com o RHEL 7. Versões do STIG atualizadas e STIGS aplicados para o release do primeiro trimestre de 2022 da seguinte forma:

**STIG-Build-Linux-Low versão 3.6.x**
+ RHEL 7 STIG Versão 3 Release 6
+ RHEL 8 STIG Versão 1 Release 5

**STIG-Build-Linux-Medium versão 3.6.x**
+ RHEL 7 STIG Versão 3 Release 6
+ RHEL 8 STIG Versão 1 Release 5

**STIG-Build-Linux-High versão 3.6.x**
+ RHEL 7 STIG Versão 3 Release 6
+ RHEL 8 STIG Versão 1 Release 5

### Alterações no quarto trimestre de 2021 - 20/12/2021:
<a name="2021-q4-linux"></a>

Versões do STIG atualizadas e STIGS aplicados para o release do quarto trimestre de 2021 da seguinte forma:

**STIG-Build-Linux-Low versão 3.5.x**
+ RHEL 7 STIG Versão 3 Release 5
+ RHEL 8 STIG Versão 1 Release 4

**STIG-Build-Linux-Medium versão 3.5.x**
+ RHEL 7 STIG Versão 3 Release 5
+ RHEL 8 STIG Versão 1 Release 4

**STIG-Build-Linux-High versão 3.5.x**
+ RHEL 7 STIG Versão 3 Release 5
+ RHEL 8 STIG Versão 1 Release 4

### Alterações no terceiro trimestre de 2021 - 30/09/2021:
<a name="2021-q3-linux"></a>

Versões do STIG atualizadas e STIGS aplicados para o release do terceiro trimestre de 2021 da seguinte forma:

**STIG-Build-Linux-Low versão 3.4.x**
+ RHEL 7 STIG Versão 3 Release 4
+ RHEL 8 STIG Versão 1 Release 3

**STIG-Build-Linux-Medium versão 3.4.x**
+ RHEL 7 STIG Versão 3 Release 4
+ RHEL 8 STIG Versão 1 Release 3

**STIG-Build-Linux-High versão 3.4.x**
+ RHEL 7 STIG Versão 3 Release 4
+ RHEL 8 STIG Versão 1 Release 3

## Componente validador de conformidade do SCAP
<a name="scap-compliance"></a>

O Protocolo de Automação de Conteúdo de Segurança (SCAP) é um conjunto de padrões que os profissionais de TI podem usar para identificar vulnerabilidades de segurança de aplicativos para fins de conformidade. O Verificador de Conformidade do SCAP (SCC) é uma ferramenta de verificação validada pelo SCAP e lançada pelo Naval Information Warfare Center (NIWC) Atlantic. Para obter mais informações, consulte [Verificador de conformidade (SCC) do Protocolo de Automação de Conteúdo de Segurança (SCAP)](https://www.niwcatlantic.navy.mil/Technology/SCAP/) no site da *NIWC Atlantic*.

Os `scap-compliance-checker-linux` componentes AWSTOE `scap-compliance-checker-windows` e baixam e instalam o scanner SCC nas instâncias de criação e teste do pipeline. Quando o scanner é executado, ele executa varreduras de configuração autenticadas usando os benchmarks DISA SCAP e fornece um relatório que inclui as seguintes informações. AWSTOE também grava as informações nos registros do seu aplicativo.
+ Configurações STIG que são aplicadas à instância.
+ Uma pontuação de conformidade geral para a instância.

Recomendamos que você execute a validação SCAP como etapa final do processo de compilação, para garantir que você relate resultados precisos da validação de conformidade.

**nota**  
Você pode revisar os relatórios com uma das [Ferramentas de Visualização do STIG](https://public.cyber.mil/stigs/srg-stig-tools/). Essas ferramentas estão disponíveis on-line por meio do DoD Cyber Exchange.

As seções a seguir descrevem os benchmarks incluídos nos componentes de validação SCAP.

### scap-compliance-checker-windows versão 2024.03.0
<a name="scap-component-windows"></a>

O `scap-compliance-checker-windows` componente é executado nas instâncias do EC2 que o Image Builder cria para criar e testar a imagem. AWSTOE registra o relatório e a pontuação que o aplicativo SCC produz.

O componente executa as seguintes etapas do fluxo de trabalho: 

1. Baixa e instala o aplicativo SCC.

1. Importa os benchmarks de conformidade.

1. Executa a validação usando o aplicativo SCC.

1. Salva o relatório de conformidade e a pontuação localmente no desktop da instância de compilação.

1. Registra a pontuação de conformidade do relatório local nos arquivos de log do AWSTOE aplicativo.

**nota**  
AWSTOE atualmente oferece suporte à validação de conformidade com SCAP para Windows Server 2012 R2 MS, 2016, 2019 e 2022.

O componente verificador de conformidade SCAP para Windows inclui os seguintes referenciais:

**Versão SCC: 5.10**  
Benchmarks do quarto trimestre de 2023:
+ u\$1MS\$1Defender\$1Antivirus\$1V2R5\$1STIG\$1SCAP\$11-2\$1Benchmark
+ U\$1MS\$1 DotNet \$1Framework\$14-0\$1V2R2\$1STIG\$1SCAP\$11-2\$1Benchmark
+ U\$1MS\$1 \$1V2R6\$1STIG\$1SCAP\$11-2\$1Referência IE11
+ U\$1MS\$1Windows\$12012\$1e\$12012\$1R2\$1DC\$1V3R5\$1STIG\$1SCAP\$11-2\$1Benchmark
+ U\$1MS\$1Windows\$12012\$1e\$12012\$1R2\$1MS\$1V3R5\$1STIG\$1SCAP\$11-2\$1Benchmark
+ u\$1MS\$1Windows\$1Defender\$1Firewall\$1V2R3\$1STIG\$1SCAP\$11-2\$1Benchmark
+ U\$1MS\$1Windows\$1Server\$12016\$1V2R7\$1STIG\$1SCAP\$11-2\$1Benchmark
+ U\$1MS\$1Windows\$1Server\$12019\$1V3R2\$1STIG\$1SCAP\$11-2\$1Benchmark
+ U\$1MS\$1Windows\$1Server\$12022\$1V2R2\$1STIG\$1SCAP\$11-2\$1Benchmark
+ U\$1CAN\$1Ubuntu\$120-04\$1LTS\$1V1R10\$1STIG\$1SCAP\$11-2\$1Benchmark
+ U\$1RHEL\$17\$1V3R15\$1STIG\$1SCAP\$11-3\$1Referência
+ U\$1RHEL\$18\$1V1R13\$1STIG\$1SCAP\$11-3\$1Referência
+ U\$1RHEL\$19\$1V2R1\$1STIG\$1SCAP\$11-3\$1Referência

### scap-compliance-checker-linux versão 2021.04.0
<a name="scap-component-linux"></a>

O `scap-compliance-checker-linux` componente é executado nas instâncias do EC2 que o Image Builder cria para criar e testar a imagem. AWSTOE registra o relatório e a pontuação que o aplicativo SCC produz.

O componente executa as seguintes etapas do fluxo de trabalho:

1. Baixa e instala o aplicativo SCC.

1. Importa os benchmarks de conformidade.

1. Executa a validação usando o aplicativo SCC.

1. Salva o relatório de conformidade e a pontuação localmente, no seguinte local na instância de compilação: `/opt/scc/SCCResults`.

1. Registra a pontuação de conformidade do relatório local nos arquivos de log do AWSTOE aplicativo.

**nota**  
AWSTOE atualmente suporta validação de conformidade SCAP para RHEL 7/8 e Ubuntu 18.04/20.04. Atualmente, o aplicativo SCC é compatível com a arquitetura para validação x86.

O componente verificador de conformidade SCAP para Linux inclui os seguintes referenciais:

**Versão SCC: 5.10**  
Benchmarks do quarto trimestre de 2023:
+ U\$1CAN\$1Ubuntu\$120-04\$1LTS\$1V1R10\$1STIG\$1SCAP\$11-2\$1Benchmark
+ U\$1RHEL\$17\$1V3R15\$1STIG\$1SCAP\$11-3\$1Referência
+ U\$1RHEL\$18\$1V1R13\$1STIG\$1SCAP\$11-3\$1Referência
+ U\$1RHEL\$19\$1V2R1\$1STIG\$1SCAP\$11-3\$1Referência
+ u\$1MS\$1Defender\$1Antivirus\$1V2R5\$1STIG\$1SCAP\$11-2\$1Benchmark
+ U\$1MS\$1 DotNet \$1Framework\$14-0\$1V2R2\$1STIG\$1SCAP\$11-2\$1Benchmark
+ U\$1MS\$1 \$1V2R6\$1STIG\$1SCAP\$11-2\$1Referência IE11
+ U\$1MS\$1Windows\$12012\$1e\$12012\$1R2\$1DC\$1V3R5\$1STIG\$1SCAP\$11-2\$1Benchmark
+ U\$1MS\$1Windows\$12012\$1e\$12012\$1R2\$1MS\$1V3R5\$1STIG\$1SCAP\$11-2\$1Benchmark
+ u\$1MS\$1Windows\$1Defender\$1Firewall\$1V2R3\$1STIG\$1SCAP\$11-2\$1Benchmark
+ U\$1MS\$1Windows\$1Server\$12016\$1V2R7\$1STIG\$1SCAP\$11-2\$1Benchmark
+ U\$1MS\$1Windows\$1Server\$12019\$1V3R2\$1STIG\$1SCAP\$11-2\$1Benchmark
+ U\$1MS\$1Windows\$1Server\$12022\$1V2R2\$1STIG\$1SCAP\$11-2\$1Benchmark

### Histórico de versões do SCAP
<a name="ib-scap-version-hist"></a>

A tabela a seguir descreve as alterações importantes feitas no ambiente e configurações SCAP descritos neste documento.


| Alteração | Descrição | Data | 
| --- | --- | --- | 
|  Atualizações do SCAP do primeiro trimestre de 2025  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/imagebuilder/latest/userguide/ib-stig.html)  | 11 de abril de 2025 | 
|  Atualizações do SCAP do quarto trimestre de 2023  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/imagebuilder/latest/userguide/ib-stig.html)  | 20 de dezembro de 2021 | 
|  Atualizações do SCAP do terceiro trimestre de 2023  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/imagebuilder/latest/userguide/ib-stig.html)  | 13 de novembro de 2023 | 
|  Componentes SCAP adicionados  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/imagebuilder/latest/userguide/ib-stig.html)  | 20 de dezembro de 2021 | 

# Desenvolver componentes personalizados para imagens do Image Builder
<a name="create-custom-components"></a>

Você pode criar componentes próprios para personalizar imagens do Image Builder de acordo com suas especificações exatas. Use as etapas a seguir para desenvolver componentes personalizados para sua imagem ou fórmulas de contêiner do Image Builder.

1. Se você quiser desenvolver seu documento de componente e validá-lo localmente, você pode instalar o aplicativo AWS Task Orchestrator and Executor (AWSTOE) e configurá-lo em sua máquina local. Para obter mais informações, consulte [Configuração manual para desenvolver componentes personalizados com AWSTOE](toe-get-started.md).

1. Crie um documento de componente que use a estrutura do documento de AWSTOE componente. Para obter mais informações sobre o framework de documentos, consulte [Use a estrutura de documentos de AWSTOE componentes para componentes personalizados](toe-use-documents.md).

1. Especifique o documento de componente ao criar um componente personalizado. Para obter mais informações, consulte [Criar um componente personalizado com o Image Builder](create-component.md).

**Topics**
+ [Criar um documento de componente YAML para componentes personalizados no Image Builder](create-component-yaml.md)
+ [Criar um componente personalizado com o Image Builder](create-component.md)

# Criar um documento de componente YAML para componentes personalizados no Image Builder
<a name="create-component-yaml"></a>

Para compilar um componente, você deve fornecer um documento de componente de aplicação YAML ou JSON. O documento contém o código executado durante as fases e etapas que você define para tornar sua imagem personalizada.

Alguns dos exemplos nesta seção criam um componente de construção que chama o módulo de `UpdateOS` ação no aplicativo de gerenciamento de AWSTOE componentes. O módulo atualiza o sistema operacional. Para obter mais informações sobre o módulo de ação `UpdateOS`, consulte [UpdateOS](toe-action-modules.md#action-modules-updateos).

O exemplo do sistema operacional macOS usa o módulo de ação `ExecuteBash` para instalar e verificar o utilitário `wget`. O módulo de ação `UpdateOS` não é compatível com o macOS. Para obter mais informações sobre o módulo de ação `ExecuteBash`, consulte [ExecuteBash](toe-action-modules.md#action-modules-executebash). Para obter mais informações sobre as fases, as etapas e a sintaxe dos documentos de componente da aplicação AWSTOE , consulte [Use documents in AWSTOE](https://docs.aws.amazon.com/imagebuilder/latest/userguide/toe-use-documents.html).

**nota**  
O Image Builder determina o tipo de componente com base nas fases definidas no documento do componente, conforme a seguir:  
**Compilação**: esse é o tipo de componente padrão. Qualquer coisa que não seja classificada como componente de teste é um componente de compilação. Esse tipo de componente é executado durante o *estágio de compilação* da imagem. Se esse componente de compilação tiver uma fase de `test` definida, essa fase será executada durante o *estágio de teste*.
**Teste**: para se qualificar como um componente de teste, o documento do componente deve incluir somente uma fase, denominada `test`. Para testes relacionados às configurações de componentes de compilação, recomendamos que você não use um componente de teste independente. Em vez disso, use a fase `test` no componente de compilação associado.
Para obter mais informações sobre como o Image Builder usa estágios e fases para gerenciar o fluxo de trabalho de componentes em seu processo de compilação, consulte [Usar componentes para personalizar sua imagem do Image Builder](manage-components.md).

Para criar um componente do aplicativo YAML para um aplicativo de amostra, siga as etapas que correspondem à sua plataforma de sistema operacional de imagem. 

------
#### [ Linux ]

**Criar um arquivo de componente YAML**  
Use uma ferramenta de edição de arquivos para criar o documento do componente. Os exemplos de documentação usam um arquivo chamado `update-linux-os.yaml`, com o seguinte conteúdo:

```
# Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: MIT-0
#
# Permission is hereby granted, free of charge, to any person obtaining a copy of this
# software and associated documentation files (the "Software"), to deal in the Software
# without restriction, including without limitation the rights to use, copy, modify,
# merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
# permit persons to whom the Software is furnished to do so.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
# INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
# PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
name: update-linux-os
description: Updates Linux with the latest security updates.
schemaVersion: 1
phases:
  - name: build
    steps:
    - name: UpdateOS
      action: UpdateOS
# Document End
```

**dica**  
Use uma ferramenta como esse [validador YAML](https://jsonformatter.org/yaml-validator) on-line ou uma extensão lint YAML em seu ambiente de código para verificar se seu YAML está bem formado.

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

**Criar um arquivo de componente YAML**  
Use uma ferramenta de edição de arquivos para criar o documento do componente. Os exemplos de documentação usam um arquivo chamado `update-windows-os.yaml`, com o seguinte conteúdo:

```
# Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: MIT-0
#
# Permission is hereby granted, free of charge, to any person obtaining a copy of this
# software and associated documentation files (the "Software"), to deal in the Software
# without restriction, including without limitation the rights to use, copy, modify,
# merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
# permit persons to whom the Software is furnished to do so.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
# INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
# PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
name: update-windows-os
description: Updates Windows with the latest security updates.
schemaVersion: 1.0
phases:
  - name: build
    steps:
      - name: UpdateOS
        action: UpdateOS
# Document End
```

**dica**  
Use uma ferramenta como esse [validador YAML](https://jsonformatter.org/yaml-validator) on-line ou uma extensão lint YAML em seu ambiente de código para verificar se seu YAML está bem formado.

------
#### [ macOS ]

**Criar um arquivo de componente YAML**  
Use uma ferramenta de edição de arquivos para criar o documento do componente. Os exemplos de documentação usam um arquivo chamado `wget-macos.yaml`, com o seguinte conteúdo:

```
name: WgetInstallDocument
description: This is wget installation document.
schemaVersion: 1.0

phases:
  - name: build
    steps:
      - name: WgetBuildStep
        action: ExecuteBash
        inputs:
          commands:
            - |
              PATH=/usr/local/bin:$PATH
              sudo -u ec2-user brew install wget


  - name: validate
    steps:
      - name: WgetValidateStep
        action: ExecuteBash
        inputs:
          commands:
            - |
              function error_exit {
                echo $1
                echo "{\"failureMessage\":\"$2\"}"
                exit 1
              }

              type wget
              if [ $? -ne 0 ]; then
                error_exit "$stderr" "Wget installation failed!"
              fi

  - name: test
    steps:
      - name: WgetTestStep
        action: ExecuteBash
        inputs:
          commands:
            - wget -h
```

**dica**  
Use uma ferramenta como esse [validador YAML](https://jsonformatter.org/yaml-validator) on-line ou uma extensão lint YAML em seu ambiente de código para verificar se seu YAML está bem formado.

------

# Criar um componente personalizado com o Image Builder
<a name="create-component"></a>

Depois de concluir o documento do componente, você pode usá-lo para criar um componente personalizado que suas fórmulas do Image Builder possam usar. Você pode criar um componente personalizado no console do Image Builder SDKs, na API ou na linha de comando. Para obter mais informações sobre como criar um componente personalizado com parâmetros de entrada e usá-lo em suas fórmulas, consulte [Tutorial: criar um componente personalizado com parâmetros de entrada](tutorial-component-parameters.md).

As seções a seguir mostram como criar componentes com o console ou a AWS CLI.

**Topics**
+ [Criar um componente personalizado com o console](#create-component-ib-console)
+ [Crie um componente personalizado a partir do AWS CLI](#create-component-ib-cli)
+ [Importe um script para criar um componente a partir do AWS CLI](#import-component-cli)
+ [Gerenciamento automático de versões de compilação](#auto-build-version-management)
+ [Usando referências de versão](#using-version-references)

## Criar um componente personalizado com o console
<a name="create-component-ib-console"></a>

Para criar um componente do AWSTOE aplicativo a partir do console do Image Builder, siga estas etapas:

1. Abra o console [https://console.aws.amazon.com/imagebuilder/](https://console.aws.amazon.com/imagebuilder/)do EC2 Image Builder em.

1. Selecione **Componentes** no painel de navegação. Em seguida, selecione **Criar componente**.

1. Na página **Criar componente**, em **Detalhes do componente**, insira o seguinte:

   1. **Sistema operacional da imagem (OS)**. Especifique o sistema operacional com o qual o componente é compatível.

   1. **Categoria de componente**. No menu suspenso, selecione o tipo de componente de compilação ou teste que você está criando.

   1. **Nome do componente**. Insira um nome para o componente.

   1. **Versão do componente**. Insira o número da versão do componente.

   1. **Descrição**. Fornece uma descrição opcional para ajudá-lo a identificar o componente.

   1. **Descrição da alteração**. Fornece uma descrição opcional para ajudá-lo a entender as alterações feitas nessa versão do componente.

1. Na seção **Documento de definição**, a opção padrão é **Definir conteúdo do documento**. O documento do componente define as ações que o Image Builder executa nas instâncias de construção e teste para criar sua imagem.

   Na caixa **Conteúdo**, insira o conteúdo do documento do componente YAML. Para começar com um exemplo do *Hello World* para Linux, escolha a opção **Usar exemplo**. Para saber mais sobre como criar um documento do componente YAML ou copiar e colar o exemplo do *UpdateOS* dessa página, consulte. [Criar um documento de componente YAML para componentes personalizados no Image Builder](create-component-yaml.md)

1. Depois de inserir os detalhes do componente, selecione **Criar componente**.
**nota**  
Para ver seu novo componente ao criar ou atualizar uma fórmula, aplique o filtro **De minha propriedade** à lista de componentes da compilação ou teste. O filtro está localizado na parte superior da lista de componentes, ao lado da caixa de pesquisa.

1. Para excluir um componente, a partir da página **Componentes**, marque a caixa de seleção ao lado do componente que você deseja excluir. No menu suspenso **Ações**, selecione **Excluir componente**.

**Atualizar um componente**  
Para criar uma nova versão do componente, siga estas etapas:

1. Dependendo de onde você começa:
   + Na página da lista de **Componentes**: marque a caixa de seleção ao lado do nome do componente e selecione **Criar nova versão** no menu **Ações**.
   + Na página de detalhes do componente: escolha o botão **Criar nova versão** no canto superior direito do cabeçalho.

1. As informações do componente já estão preenchidas com os valores atuais quando a página **Criar componente** é exibida. Siga as etapas de criação de um componente para atualizar o componente. Isso garante que você insira uma versão semântica exclusiva na **versão do Componente**. Para saber mais sobre o versionamento semântico dos recursos do Image Builder, consulte [Versionamento semântico no Image Builder](ibhow-semantic-versioning.md).

## Crie um componente personalizado a partir do AWS CLI
<a name="create-component-ib-cli"></a>

Nesta seção, você aprenderá a configurar e usar os comandos do Image Builder no AWS CLI para criar um componente de AWSTOE aplicativo, da seguinte forma.
+ Carregue o documento do componente do YAML em um bucket do S3 que você possa referenciar a partir da linha de comandos.
+ Crie o componente do AWSTOE aplicativo com o **create-component** comando.
+ Liste as versões do componente com o comando **list-components** e um filtro de nome para ver quais versões já existem. Você pode usar a saída para determinar qual deve ser a próxima versão para atualizações.

Para criar um componente de AWSTOE aplicativo a partir de um documento YAML de entrada, siga as etapas que correspondem à sua plataforma de sistema operacional de imagem.

------
#### [ Linux ]

**Armazene seu documento do componente do aplicativo no Amazon S3**

Você pode usar um bucket do S3 como repositório para o documento de origem do componente do AWSTOE aplicativo. Para armazenar seu documento do componente, siga estas etapas:
+ 

**Carregue o documento no Amazon S3**

  *Se seu documento for menor que 64 KB, você pode ignorar esta etapa.* Documentos com 64 KB ou mais devem ser armazenados no Amazon S3.

  ```
  aws s3 cp update-linux-os.yaml s3://amzn-s3-demo-destination-bucket/my-path/update-linux-os.yaml
  ```

**Crie um componente a partir do documento do YAML**

Para simplificar o **create-component** comando que você usa no AWS CLI, crie um arquivo JSON que contenha todos os parâmetros do componente que você deseja passar para o comando. Inclua a localização do documento `update-linux-os.yaml` que você criou anteriormente. O par de chave–valor `uri` contém a referência do arquivo.
**nota**  
A convenção de nomenclatura para os valores de dados no arquivo JSON segue o padrão especificado para os parâmetros de solicitação de operação da API Image Builder. Para revisar os parâmetros de solicitação de comando da API, consulte o comando [CreateComponent](https://docs.aws.amazon.com/imagebuilder/latest/APIReference/API_CreateComponent.html) na *Referência EC2 Image Builder API*.  
Para fornecer os valores dos dados como parâmetros da linha de comando, consulte os nomes dos parâmetros especificados na *AWS CLI Referência de comando*.

1. 

**Criar um arquivo JSON de entrada da CLI**

   Use uma ferramenta de edição de arquivos para criar um arquivo chamado `create-update-linux-os-component.json`. Inclua o seguinte conteúdo:

   ```
   {
   	"name": "update-linux-os",
   	"semanticVersion": "1.1.2",
   	"description": "An example component that updates the Linux operating system",
   	"changeDescription": "Initial version.",
   	"platform": "Linux",
   	"uri": "s3://amzn-s3-demo-destination-bucket/my-path/update-linux-os.yaml",
   	"kmsKeyId": "arn:aws:kms:us-west-2:123456789012:key/98765432-b123-456b-7f89-0123456f789c",
   	"tags": {
   		"MyTagKey-purpose": "security-updates"
   	}
   }
   ```

1. 

**Criar o componente**

   Use o comando a seguir para criar o componente, fazendo referência ao nome do arquivo JSON que você criou na etapa anterior:

   ```
   aws imagebuilder create-component --cli-input-json file://create-update-linux-os-component.json
   ```
**nota**  
É necessário incluir a notação `file://` no início do caminho do arquivo JSON.
O caminho para o arquivo JSON deve seguir a convenção apropriada para o sistema operacional de base no qual você está executando o comando. Por exemplo, o Windows usa a barra invertida (\$1) para se referir ao caminho do diretório, enquanto o Linux e o macOS usam a barra (/).

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

**Armazene seu documento do componente do aplicativo no Amazon S3**

Você pode usar um bucket do S3 como repositório para o documento de origem do componente do AWSTOE aplicativo. Para armazenar seu documento do componente, siga estas etapas:
+ 

**Carregue o documento no Amazon S3**

  *Se seu documento for menor que 64 KB, você pode ignorar esta etapa.* Documentos com 64 KB ou mais devem ser armazenados no Amazon S3.

  ```
  aws s3 cp update-windows-os.yaml s3://amzn-s3-demo-destination-bucket/my-path/update-windows-os.yaml
  ```

**Crie um componente a partir do documento do YAML**

Para simplificar o **create-component** comando que você usa no AWS CLI, crie um arquivo JSON que contenha todos os parâmetros do componente que você deseja passar para o comando. Inclua a localização do documento `update-windows-os.yaml` que você criou anteriormente. O par de chave–valor `uri` contém a referência do arquivo.
**nota**  
A convenção de nomenclatura para os valores de dados no arquivo JSON segue o padrão especificado para os parâmetros de solicitação de operação da API Image Builder. Para revisar os parâmetros de solicitação de comando da API, consulte o comando [CreateComponent](https://docs.aws.amazon.com/imagebuilder/latest/APIReference/API_CreateComponent.html) na *Referência EC2 Image Builder API*.  
Para fornecer os valores dos dados como parâmetros da linha de comando, consulte os nomes dos parâmetros especificados na *AWS CLI Referência de comando*..

1. 

**Criar um arquivo JSON de entrada da CLI**

   Use uma ferramenta de edição de arquivos para criar um arquivo chamado `create-update-windows-os-component.json`. Inclua o seguinte conteúdo:

   ```
   {
   	"name": "update-windows-os",
   	"semanticVersion": "1.1.2",
   	"description": "An example component that updates the Windows operating system.",
   	"changeDescription": "Initial version.",
   	"platform": "Windows",
   	"uri": "s3://amzn-s3-demo-destination-bucket/my-path/update-windows-os.yaml",
   	"kmsKeyId": "arn:aws:kms:us-west-2:123456789012:key/98765432-b123-456b-7f89-0123456f789c",
   	"tags": {
   		"MyTagKey-purpose": "security-updates"
   	}
   }
   ```
**nota**  
É necessário incluir a notação `file://` no início do caminho do arquivo JSON.
O caminho para o arquivo JSON deve seguir a convenção apropriada para o sistema operacional de base no qual você está executando o comando. Por exemplo, o Windows usa a barra invertida (\$1) para se referir ao caminho do diretório, enquanto o Linux e o macOS usam a barra (/).

1. 

**Criar o componente**

   Use o comando a seguir para criar o componente, fazendo referência ao nome do arquivo JSON que você criou na etapa anterior:

   ```
   aws imagebuilder create-component --cli-input-json file://create-update-windows-os-component.json
   ```
**nota**  
É necessário incluir a notação `file://` no início do caminho do arquivo JSON.
O caminho para o arquivo JSON deve seguir a convenção apropriada para o sistema operacional de base no qual você está executando o comando. Por exemplo, o Windows usa a barra invertida (\$1) para se referir ao caminho do diretório, enquanto o Linux e o macOS usam a barra (/).

------
#### [ macOS ]

**Armazene seu documento do componente do aplicativo no Amazon S3**

Você pode usar um bucket do S3 como repositório para o documento de origem do componente do AWSTOE aplicativo. Para armazenar seu documento do componente, siga estas etapas:
+ 

**Carregue o documento no Amazon S3**

  *Se seu documento for menor que 64 KB, você pode ignorar esta etapa.* Documentos com 64 KB ou mais devem ser armazenados no Amazon S3.

  ```
  aws s3 cp wget-macos.yaml s3://amzn-s3-demo-destination-bucket/my-path/wget-macos.yaml
  ```

**Crie um componente a partir do documento do YAML**

Para simplificar o **create-component** comando que você usa no AWS CLI, crie um arquivo JSON que contenha todos os parâmetros do componente que você deseja passar para o comando. Inclua a localização do documento `wget-macos.yaml` que você criou anteriormente. O par de chave–valor `uri` contém a referência do arquivo.
**nota**  
A convenção de nomenclatura para os valores de dados no arquivo JSON segue o padrão especificado para os parâmetros de solicitação de operação da API Image Builder. Para revisar os parâmetros de solicitação de comando da API, consulte o comando [CreateComponent](https://docs.aws.amazon.com/imagebuilder/latest/APIReference/API_CreateComponent.html) na *Referência EC2 Image Builder API*.  
Para fornecer os valores dos dados como parâmetros da linha de comando, consulte os nomes dos parâmetros especificados na *AWS CLI Referência de comando*.

1. 

**Criar um arquivo JSON de entrada da CLI**

   Use uma ferramenta de edição de arquivos para criar um arquivo chamado `install-wget-macos-component.json`. Inclua o seguinte conteúdo:

   ```
   {
   	"name": "install install-wget-macos-component",
   	"semanticVersion": "1.1.2",
   	"description": "An example component that installs and verifies the wget utility on macOS.",
   	"changeDescription": "Initial version.",
   	"platform": "macOS",
   	"uri": "s3://amzn-s3-demo-destination-bucket/my-path/wget-macos.yaml",
   	"kmsKeyId": "arn:aws:kms:us-west-2:123456789012:key/98765432-b123-456b-7f89-0123456f789c",
   	"tags": {
   		"MyTagKey-purpose": "install-software"
   	}
   }
   ```

1. 

**Criar o componente**

   Use o comando a seguir para criar o componente, fazendo referência ao nome do arquivo JSON que você criou na etapa anterior:

   ```
   aws imagebuilder create-component --cli-input-json file://install-wget-macos-component.json
   ```
**nota**  
É necessário incluir a notação `file://` no início do caminho do arquivo JSON.
O caminho para o arquivo JSON deve seguir a convenção apropriada para o sistema operacional de base no qual você está executando o comando. Por exemplo, o Windows usa a barra invertida (\$1) para se referir ao caminho do diretório, enquanto o Linux e o macOS usam a barra (/).

------

### AWSTOE controle de versão de componentes para atualizações do AWS CLI
<a name="component-update-cli"></a>

AWSTOE os nomes e versões dos componentes são incorporados no Amazon Resource Name (ARN) do componente, após o prefixo do componente. Cada nova versão de um componente tem seu próprio ARN exclusivo. As etapas para criar uma nova versão são exatamente iguais às etapas para criar um novo componente, desde que a versão semântica seja exclusiva para aquele nome de componente. Para saber mais sobre o versionamento semântico dos recursos do Image Builder, consulte ‭[Versionamento semântico no Image Builder](ibhow-semantic-versioning.md)‬.

Para garantir que você atribua a próxima versão lógica, primeiro obtenha uma lista das versões existentes do componente que você deseja alterar. Use o **list-components** comando com o AWS CLI, e filtre pelo nome.

Neste exemplo, você filtra pelo nome do componente que você criou nos exemplos anteriores do Linux. Para listar o componente que você criou, use o valor do parâmetro `name` do arquivo JSON que você usou no comando **create-component**.

```
aws imagebuilder list-components --filters name="name",values="update-linux-os"	
{
    "requestId": "123a4567-b890-123c-45d6-ef789ab0cd1e",
    "componentVersionList": [
        {
            "arn": "arn:aws:imagebuilder:us-west-2:1234560087789012:component/update-linux-os/1.0.0",
            "name": "update-linux-os",
            "version": "1.0.0",
            "platform": "Linux",
            "type": "BUILD",
            "owner": "123456789012",
            "dateCreated": "2020-09-24T16:58:24.444Z"
        },
        {
            "arn": "arn:aws:imagebuilder:us-west-2:1234560087789012:component/update-linux-os/1.0.1",
            "name": "update-linux-os",
            "version": "1.0.1",
            "platform": "Linux",
            "type": "BUILD",
            "owner": "123456789012",
            "dateCreated": "2021-07-10T03:38:46.091Z"
        }
    ]
}
```

Com base nos resultados, você pode determinar qual deve ser a próxima versão.

## Importe um script para criar um componente a partir do AWS CLI
<a name="import-component-cli"></a>

Em alguns cenários, talvez seja mais fácil começar com um script preexistente. Para este cenário, você pode usar o exemplo a seguir. 

Este exemplo pressupõe que você tem um arquivo chamado `import-component.json` (conforme mostrado). Observe que o arquivo faz referência direta a um PowerShell script chamado `AdminConfig.ps1` that já foi enviado para`amzn-s3-demo-source-bucket`. No momento, o `SHELL` é compatível com o componente `format`. 

```
{
"name": "MyImportedComponent",
"semanticVersion": "1.0.0",
"description": "An example of how to import a component",
"changeDescription": "First commit message.",
"format": "SHELL",
"platform": "Windows",
"type": "BUILD",
"uri": "s3://amzn-s3-demo-source-bucket/AdminConfig.ps1",
"kmsKeyId": "arn:aws:kms:us-west-2:123456789012:key/60763706-b131-418b-8f85-3420912f020c"
}
```

Para criar o componente usando um script importado, execute o comando a seguir.

```
aws imagebuilder import-component --cli-input-json file://import-component.json
```

## Gerenciamento automático de versões de compilação
<a name="auto-build-version-management"></a>

Quando você cria um componente com o mesmo nome e versão semântica de um componente existente, o Image Builder incrementa automaticamente a versão de compilação (por exemplo, de `/1` para `/2``/3`, para e assim por diante). Isso permite que você faça atualizações iterativas em seus componentes sem gerenciar manualmente os números de versão, o que é especialmente útil em CI/CD pipelines e infrastructure-as-code implantações. Se o conteúdo do componente for idêntico à versão de compilação anterior, o Image Builder retornará `ResourceAlreadyExistsException` para evitar que componentes duplicados consumam sua cota de serviço. 

## Usando referências de versão
<a name="using-version-references"></a>

Quando você cria ou recupera um componente, o Image Builder fornece automaticamente padrões de versão pré-construídos ARNs com caracteres curinga no objeto. latestVersionReferences Essas referências facilitam o uso das versões mais recentes de seus componentes em receitas e pipelines sem análise ARNs manual. 

**Escolhendo a referência de versão correta**
+ latestVersionArn (x.x.x) - Sempre use a versão mais recente absoluta do componente.
+ atestMajorVersionArn (1.x.x) - Use as versões secundárias e de patch mais recentes em uma versão principal.
+ latestMinorVersionArn (1.2.x) - Use somente a versão mais recente do patch.
+ latestPatchVersionArn (1.2.3) - Faça referência a uma versão semântica específica, mas obtenha a versão de compilação mais recente.

**nota**  
Para evitar cobranças inesperadas, certifique-se de limpar os recursos e pipelines que você criou com base nos exemplos deste guia. Para obter mais informações sobre exclusão de recursos no Image Builder, consulte [Excluir recursos desatualizados ou não utilizados do Image Builder](delete-resources.md).

# Como o Image Builder usa o AWS Task Orchestrator and Executor aplicativo para gerenciar componentes
<a name="toe-component-manager"></a>

EC2 O Image Builder usa o aplicativo AWS Task Orchestrator and Executor (AWSTOE) para orquestrar fluxos de trabalho complexos, modificar configurações do sistema e testar suas imagens sem a necessidade de scripts ou códigos adicionais de DevOps. Essa aplicação gerencia e executa componentes que implementam seu esquema de documento declarativo.

AWSTOE é um aplicativo independente que o Image Builder instala em suas instâncias de compilação e teste quando você cria uma imagem. Você também pode instalá-lo manualmente nas EC2 instâncias para criar seus próprios componentes personalizados. Ele não requer nenhuma configuração adicional e também pode ser executado no ambiente on-premises.

**Topics**
+ [AWSTOE downloads](#toe-downloads)
+ [Regiões do compatíveis](#toe-supported-regions)
+ [AWSTOE referência de comando](#toe-commands)
+ [Configuração manual para desenvolver componentes personalizados com AWSTOE](toe-get-started.md)
+ [Use a estrutura de documentos de AWSTOE componentes para componentes personalizados](toe-use-documents.md)
+ [Módulos de ação suportados pelo gerenciador de AWSTOE componentes](toe-action-modules.md)
+ [Configurar a entrada para o comando de AWSTOE execução](toe-run-config-input.md)

## AWSTOE downloads
<a name="toe-downloads"></a>

Para instalar AWSTOE, escolha o link de download para sua arquitetura e plataforma. Se você se conectar a um VPC endpoint para seu serviço (Image Builder, por exemplo), ele deverá ter uma política de endpoint personalizada anexada que inclua acesso ao bucket do S3 para downloads. AWSTOE Caso contrário, suas instâncias de compilação e teste não poderão baixar o script bootstrap (`bootstrap.sh`) e instalar o AWSTOE aplicativo. Para obter mais informações, consulte [Criar uma política de endpoint da VPC o Image Builder](vpc-interface-endpoints.md#vpc-endpoint-policy).

**Importante**  
AWS está eliminando gradualmente o suporte para as versões 1.0 e 1.1 do TLS. Para acessar o bucket do S3 para AWSTOE downloads, seu software cliente deve usar o TLS versão 1.2 ou posterior. Para obter mais informações, consulte esta [publicação do blog de Segurança da AWS](https://aws.amazon.com/blogs/security/tls-1-2-required-for-aws-endpoints/).


| Arquitetura | Plataforma | Link para fazer download | Exemplo | 
| --- | --- | --- | --- | 
| 386 |  AL 2 e 2023 RHEL 7, 8 e 9 Ubuntu 16.04, 18.04, 20.04, 22.04 e 24.04 CentOS 7 e 8 SUSE 12 e 15  | `https://awstoe-<region>.s3.<region>.amazonaws.com/latest/linux/386/awstoe`  | [https://awstoe-us-east-1.s3.us-east-1.amazonaws.com/latest/linux/386/awstoe](https://awstoe-us-east-1.s3.us-east-1.amazonaws.com/latest/linux/386/awstoe) | 
| AMD64 |  AL 2 e 2023 RHEL 7, 8 e 9 Ubuntu 16.04, 18.04, 20.04, 22.04 e 24.04 CentOS 7 e 8 CentOS Stream 8 SUSE 12 e 15  | https://awstoe-<region>.s3.<region>.amazonaws.com/latest/linux/amd64/awstoe | [https://awstoe-us-east-1.s3.us-east-1.amazonaws.com/latest/linux/amd64/awstoe](https://awstoe-us-east-1.s3.us-east-1.amazonaws.com/latest/linux/amd64/awstoe) | 
| AMD64 |  macOS 10.14.x (Mojave), 10.15.x (Catalina), 11.x (Big Sur), 12.x (Monterey)  | https://awstoe-region.s3.region.amazonaws.com/latest/darwin/amd64/awstoe | [https://awstoe-us-east-1.s3.us-east-1.amazonaws.com/latest/darwin/amd64/awstoe](https://awstoe-us-east-1.s3.us-east-1.amazonaws.com/latest/darwin/amd64/awstoe) | 
|  AMD64  |  Windows Server 2012 R2, 2016, 2019 e 2022  |   `https://awstoe-<region>.s3.<region>.amazonaws.com/latest/windows/amd64/awstoe.exe`  | [https://awstoe-us-east-1.s3.us-east-1.amazonaws.com/latest/windows/amd64/awstoe.exe](https://awstoe-us-east-1.s3.us-east-1.amazonaws.com/latest/windows/amd64/awstoe.exe) | 
| ARM64 |  AL 2 e 2023 RHEL 7, 8 e 9 Ubuntu 16.04, 18.04, 20.04, 22.04 e 24.04 CentOS 7 e 8 CentOS Stream 8 SUSE 12 e 15  | https://awstoe-<region>.s3.<region>.amazonaws.com/latest/linux/arm64/awstoe | [https://awstoe-us-east-1.s3.us-east-1.amazonaws.com/latest/linux/arm64/awstoe](https://awstoe-us-east-1.s3.us-east-1.amazonaws.com/latest/linux/arm64/awstoe) | 

## Regiões do compatíveis
<a name="toe-supported-regions"></a>

AWSTOE é suportado como um aplicativo independente nas seguintes regiões.


| Região da AWS nome | Região da AWS | 
| --- | --- | 
|  Leste dos EUA (Ohio)  |  us-east-2  | 
|  Leste dos EUA (Norte da Virgínia)  |  us-east-1  | 
|  AWS GovCloud (Leste dos EUA)  |  us-gov-east-1  | 
|  AWS GovCloud (Oeste dos EUA)  |  us-gov-west-1  | 
|  Oeste dos EUA (N. da Califórnia)  | us-west-1 | 
|  Oeste dos EUA (Oregon)  | us-west-2 | 
|  África (Cidade do Cabo)  | af-south-1 | 
|  Ásia-Pacífico (Hong Kong)  | ap-east-1 | 
|  Ásia-Pacífico (Osaka)  | ap-northeast-3 | 
|  Ásia-Pacífico (Seul)  | ap-northeast-2 | 
|  Ásia Pacífico (Mumbai)  | ap-south-1 | 
|  Ásia-Pacífico (Hyderabad)  | ap-south-2 | 
|  Ásia-Pacífico (Singapura)  | ap-southeast-1 | 
|  Ásia-Pacífico (Sydney)  | ap-southeast-2 | 
|  Ásia-Pacífico (Jacarta)  | ap-southeast-3 | 
|  Ásia-Pacífico (Tóquio)  | ap-northeast-1 | 
|  Canadá (Central)  | ca-central-1 | 
|  Europa (Frankfurt)  | eu-central-1 | 
|  Europa (Zurique)  | eu-central-2 | 
|  Europa (Estocolmo)  | eu-north-1 | 
|  Europa (Milão)  | eu-south-1 | 
|  Europa (Espanha)  | eu-south-2 | 
|  Europa (Irlanda)  | eu-west-1 | 
|  Europa (Londres)  | eu-west-2 | 
|  Europa (Paris)  | eu-west-3 | 
|  Israel (Tel Aviv)  | il-central-1 | 
|  Oriente Médio (Emirados Árabes Unidos)  | me-central-1 | 
|  Oriente Médio (Bahrein)  | me-south-1 | 
|  América do Sul (São Paulo)  | sa-east-1 | 
|  China (Pequim)  | cn-north-1 | 
|  China (Ningxia)  | cn-northwest-1 | 

## AWSTOE referência de comando
<a name="toe-commands"></a>

AWSTOE é um aplicativo de gerenciamento de componentes de linha de comando executado em EC2 instâncias da Amazon. Quando o Image Builder inicia uma instância de EC2 compilação ou teste, ele é instalado AWSTOE na instância. Em seguida, ele executa AWSTOE comandos no AWS CLI para instalar ou validar os componentes especificados na imagem ou na receita do contêiner.

**nota**  
Alguns módulos de AWSTOE ação exigem permissões elevadas para serem executados em um servidor Linux. Para usar permissões elevadas, prefixe a sintaxe do comando com **sudo** ou execute o comando **sudo su** uma vez ao fazer login antes de executar os comandos vinculados abaixo. Para obter mais informações sobre módulos de AWSTOE ação, consulte[Módulos de ação suportados pelo gerenciador de AWSTOE componentes](toe-action-modules.md).

***[run](#cmd-run)***  
Use o **run** comando para executar os scripts do documento YAML para um ou mais documentos componentes.

***[validar](#cmd-validate)***  
Use o **validate** comando para validar a sintaxe do documento YAML para um ou mais documentos componentes.

### comando awstoe run
<a name="cmd-run"></a>

Este comando executa os scripts do documento do componente YAML na ordem em que são incluídos no arquivo de configuração especificado pelo parâmetro `--config` ou na lista de documentos do componente especificada pelo parâmetro `--documents`.

**nota**  
Você deve especificar exatamente um dos seguintes parâmetros, nunca os dois:  
--config  
--documents

#### Sintaxe
<a name="run-syntax"></a>

```
awstoe run [--config <file path>] [--cw-ignore-failures <?>] 
      [--cw-log-group <?>] [--cw-log-region us-west-2] [--cw-log-stream <?>] 
      [--document-s3-bucket-owner <owner>] [--documents <file path,file path,...>] 
      [--execution-id <?>] [--log-directory <file path>] 
      [--log-s3-bucket-name <name>] [--log-s3-bucket-owner <owner>] 
      [--log-s3-key-prefix <?>] [--parameters name1=value1,name2=value2...] 
      [--phases <phase name>] [--state-directory <directory path>] [--version <?>] 
      [--help] [--trace]
```

#### Parâmetros e opções
<a name="run-parameters"></a>Parâmetros

**--config *`./config-example.json`***  
Forma abreviada: -c *`./config-example.json`*  
O arquivo de configuração *(condicional).* Esse parâmetro contém a localização do arquivo JSON que contém as definições de configuração dos componentes que esse comando está executando. Se você especificar as configurações de **run** comando em um arquivo de configuração, não deverá especificar o `--documents` parâmetro. Para obter mais informações sobre a configuração de entrada, consulte [Configurar a entrada para o comando de AWSTOE execução](toe-run-config-input.md).  
Localizações válidas incluem:  
+ Um caminho de arquivo local (*`./config-example.json`*)
+ Uma URI do S3 (`s3://bucket/key`)

**--cw-ignore-failures**  
Forma abreviada: N/A  
Ignore as falhas de CloudWatch registro dos registros.

**--cw-log-group**  
Forma abreviada: N/A  
O `LogGroup` nome dos CloudWatch Logs.

**--cw-log-region**  
Forma abreviada: N/A  
A AWS região que se aplica aos CloudWatch registros.

**--cw-log-stream**  
Forma abreviada: N/A  
O `LogStream` nome dos CloudWatch registros, que direciona para AWSTOE onde transmitir o `console.log` arquivo.

**--document-s3-proprietário do bucket**  
Forma abreviada: N/A  
O ID da conta do proprietário do bucket para documentos baseados em URI do S3.

**--documentos *`./doc-1.yaml`,`./doc-n.yaml`***  
Forma abreviada: -d *`./doc-1.yaml`*,*`./doc-n`*  
Os documentos do componente *(condicionais).* Esse parâmetro contém uma lista separada por vírgulas dos locais dos arquivos para execução dos documentos do componente YAML. Se você especificar documentos YAML para o **run** comando usando o `--documents` parâmetro, não deverá especificar o `--config` parâmetro.  
Localizações válidas incluem:  
+ caminhos de arquivo locais (*./component-doc-example.yaml*).
+ S3 URIs (`s3://bucket/key`).
+ Versão de compilação do componente Image Builder ARNs (arn:aws:imagebuilder:us-west-/ /2021.12.02/1). *2:123456789012* *my-example-component*
Não há espaços entre os itens na lista, somente vírgulas.

**--execution-id**  
Forma abreviada: -i  
Esse é o ID exclusivo que se aplica à execução do comando **run** atual. Este ID é incluído nos nomes dos arquivos de saída e log, para identificar esses arquivos de forma exclusiva e vinculá-los à execução atual do comando. Se essa configuração for omitida, AWSTOE gera um GUID.

**--log-directory**  
Forma abreviada: -l  
O diretório de destino onde AWSTOE armazena todos os arquivos de log da execução desse comando. Este arquivo está localizado no diretório a seguir, por padrão: `TOE_<DATETIME>_<EXECUTIONID>`. Se você não especificar o diretório de log, AWSTOE usa o diretório de trabalho atual (`.`).

**--log-s3-nome do bucket**  
Forma abreviada: -b  
Se os registros do componente estiverem armazenados no Amazon S3 (recomendado), AWSTOE carrega os registros do aplicativo do componente para o bucket do S3 nomeado nesse parâmetro.

**--log-s3-proprietário do bucket**  
Forma abreviada: N/A  
Se os registros do componente estiverem armazenados no Amazon S3 (recomendado), esse é o ID da conta do proprietário do bucket em que AWSTOE grava os arquivos de log.

**--log-s3-key-prefix**  
Forma abreviada: -k  
Se os registros do componente estiverem armazenados no Amazon S3 (recomendado), esse é o prefixo da chave de objeto do S3 para a localização do log no bucket.

**--parâmetros *name1* =*value1*, *name2* =*value2*...**  
Forma abreviada: N/A  
Os parâmetros são variáveis mutáveis definidas no documento do componente, com configurações que o aplicativo de chamada pode fornecer em tempo de execução.

**--phases**  
Forma abreviada: -p  
Uma lista separada por vírgulas que especifica quais fases devem ser executadas a partir dos documentos do componente YAML. Se um documento do componente incluir fases adicionais, elas não serão executadas.

**--diretório estadual**  
Forma abreviada: -s  
O caminho do arquivo em que os arquivos de rastreamento de estado são armazenados.

**--version**  
Forma abreviada: -v  
Especifica a versão do aplicativo do componente.Opções

**--help**  
Forma abreviada: -h  
Exibe um manual de ajuda para usar as opções do aplicativo de gerenciamento de componentes.

**--trace**  
Forma abreviada: -t  
Ativa o registro detalhado no console do.

### comando awstoe validate
<a name="cmd-validate"></a>

Ao executar esse comando, ele valida a sintaxe do documento YAML para cada um dos documentos de componente especificados pelo parâmetro `--documents`.

#### Sintaxe
<a name="validate-syntax"></a>

```
awstoe validate [--document-s3-bucket-owner <owner>] 
      --documents <file path,file path,...> [--help] [--trace]
```

#### Parâmetros e opções
<a name="validate-parameters"></a>Parâmetros

**--document-s3-proprietário do bucket**  
Forma abreviada: N/A  
ID da conta de origem dos documentos baseados em URI do S3 fornecidos.

**--documentos *`./doc-1.yaml`,`./doc-n.yaml`***  
Forma abreviada: -d *`./doc-1.yaml`*,*`./doc-n`*  
Os documentos do componente *(obrigatório)*. Esse parâmetro contém uma lista separada por vírgulas dos locais dos arquivos para execução dos documentos do componente YAML. Localizações válidas incluem:  
+ caminhos de arquivo locais (*./component-doc-example.yaml*)
+ S3 URIs () `s3://bucket/key`
+ Versão de compilação do componente Image Builder ARNs (arn:aws:imagebuilder:us-west-/ 2021.12.02/1) *2:123456789012* *my-example-component*
Não há espaços entre os itens na lista, somente vírgulas.Opções

**--help**  
Forma abreviada: -h  
Exibe um manual de ajuda para usar as opções do aplicativo de gerenciamento de componentes.

**--trace**  
Forma abreviada: -t  
Ativa o registro detalhado no console do.

# Configuração manual para desenvolver componentes personalizados com AWSTOE
<a name="toe-get-started"></a>

O aplicativo AWS Task Orchestrator and Executor (AWSTOE) é um aplicativo independente que cria, valida e executa comandos dentro de uma estrutura de definição de componentes. AWS os serviços podem ser usados AWSTOE para orquestrar fluxos de trabalho, instalar software, modificar configurações do sistema e testar compilações de imagens.

Siga estas etapas para instalar manualmente o AWSTOE aplicativo e usá-lo como um aplicativo independente para desenvolver componentes personalizados. O Image Builder cuida dessas etapas para você, se você usar o console ou os AWS CLI comandos do Image Builder para criar componentes personalizados. Para obter mais informações, consulte [Criar componentes personalizados com o Image Builder](create-component.md).

# Verifique a assinatura do download da AWSTOE instalação
<a name="awstoe-verify-sig"></a>

Esta seção descreve o processo recomendado para verificar a validade do download da instalação em sistemas operacionais baseados AWSTOE em Linux, macOS e Windows.

**Topics**
+ [Verifique a assinatura do download da AWSTOE instalação no Linux ou macOS](#awstoe-verify-sig-linux)
+ [Verifique a assinatura do download da AWSTOE instalação no Windows](#awstoe-verify-sig-win)

## Verifique a assinatura do download da AWSTOE instalação no Linux ou macOS
<a name="awstoe-verify-sig-linux"></a>

Este tópico descreve o processo recomendado para verificar a validade do download da instalação para sistemas operacionais baseados AWSTOE em Linux ou macOS.

Sempre que baixar um aplicativo da Internet, recomendamos que você autentique a identidade do publicador do software. Além disso, verifique se o aplicativo não foi alterado ou corrompido desde que foi publicado. Isso protege você contra a instalação de uma versão do aplicativo que contenha um vírus ou outro código mal-intencionado.

Se depois de executar as etapas neste tópico, você determinar que o software do aplicativo AWSTOE está alterado ou corrompido, não execute o arquivo de instalação. Em vez disso, entre em contato Suporte para obter mais informações sobre suas opções de suporte, consulte [Suporte](https://aws.amazon.com/premiumsupport/).

AWSTOE arquivos para sistemas operacionais baseados em Linux e macOS são assinados usando `GnuPG` uma implementação de código aberto do padrão Pretty Good Privacy (OpenPGP) para assinaturas digitais seguras. `GnuPG`(também conhecido como`GPG`) fornece verificação de autenticação e integridade por meio de uma assinatura digital. O Amazon EC2 publica uma chave pública e assinaturas que você pode usar para verificar as ferramentas da CLI do Amazon EC2 baixadas. Para obter mais informações sobre `PGP` e `GnuPG` (`GPG`), consulte [http://www.gnupg.org](https://www.gnupg.org/).

A primeira etapa é estabelecer confiança com o fornecedor do software. Faça download da chave pública do fornecedor do software, verifique se o proprietário da chave pública é quem afirma ser e, em seguida, adicione a chave pública ao seu *keyring*. O keyring é um conjunto de chaves públicas conhecidas. Após estabelecer a autenticidade da chave pública, você pode usá-la para verificar a assinatura do aplicativo.

**Topics**
+ [Como instalar as ferramentas do GPG](#awstoe-verify-signature-of-binary-download-install-tools)
+ [Como autenticar e importar a chave pública](#awstoe-verify-signature-of-binary-download-authenticate-import-public-key)
+ [Verificar a assinatura do pacote](#awstoe-verify-signature-of-binary-package)

### Como instalar as ferramentas do GPG
<a name="awstoe-verify-signature-of-binary-download-install-tools"></a>

Se o seu sistema operacional for Linux, Unix ou macOS, as ferramentas do GPG provavelmente já estarão instaladas. Para testar se as ferramentas estão instaladas no sistema, digite **gpg** em um prompt de comando. Se as ferramentas do GPG estiverem instaladas, um prompt de comando do GPG será exibido. Se as ferramentas do GPG não estiverem instaladas, uma mensagem de erro será exibida informando que o comando não pode ser encontrado. Você pode instalar o pacote GnuPG a partir de um repositório.

Para instalar as ferramentas do GPG, selecione o sistema operacional que corresponde à sua instância.

------
#### [ Debian-based Linux ]

Em um terminal, execute o comando a seguir:

```
apt-get install gnupg
```

------
#### [ Red Hat–based Linux ]

Em um terminal, execute o comando a seguir:

```
yum install gnupg
```

------
#### [ macOS ]

Em um terminal, execute o comando a seguir:

```
brew install gnupg
```

------

### Como autenticar e importar a chave pública
<a name="awstoe-verify-signature-of-binary-download-authenticate-import-public-key"></a>

A próxima etapa do processo é autenticar a chave AWSTOE pública e adicioná-la como uma chave confiável em seu `GPG` chaveiro.

**Para autenticar e importar a chave AWSTOE pública**

1. Obtenha uma cópia de nossa compilação de chave pública do `GPG` de uma das seguintes maneiras:
   + Baixe a chave em

      https://awstoe - **<region>** .s3. **<region>**.amazonaws. com/assets/awstoe.gpg. Por exemplo, .[https://awstoe-us-east-1.s3.us-east-1.amazonaws.com/latest/assets/awstoe.gpg](https://awstoe-us-east-1.s3.us-east-1.amazonaws.com/latest/assets/awstoe.gpg)
   + Copie a chave do texto abaixo e cole-a em um arquivo chamado `awstoe.gpg`. Certifique-se de incluir tudo o que está a seguir:

     ```
     -----BEGIN PGP PUBLIC KEY BLOCK-----
     Version: GnuPG v2
     
     mQENBF8UqwsBCACdiRF2bkZYaFSDPFC+LIkWLwFvtUCRwAHtD8KIwTJ6LVn3fHAU
     GhuK0ZH9mRrqRT2bq/xJjGsnF9VqTj2AJqndGJdDjz75YCZYM+ocZ+r5HSJaeW9i
     S5dykHj7Txti2zHe0G5+W0v7v5bPi2sPHsN7XWQ7+G2AMEPTz8PjxY//I0DvMQns
     Sle3l9hz6wCClz1l9LbBzTyHfSm5ucTXvNe88XX5Gmt37OCDM7vfli0Ctv8WFoLN
     6jbxuA/sV71yIkPm9IYp3+GvaKeT870+sn8/JOOKE/U4sJV1ppbqmuUzDfhrZUaw
     8eW8IN9A1FTIuWiZED/5L83UZuQs1S7s2PjlABEBAAG0GkFXU1RPRSA8YXdzdG9l
     QGFtYXpvbi5jb20+iQE5BBMBCAAjBQJfFKsLAhsDBwsJCAcDAgEGFQgCCQoLBBYC
     AwECHgECF4AACgkQ3r3BVvWuvFJGiwf9EVmrBR77+Qe/DUeXZJYoaFr7If/fVDZl
     6V3TC6p0J0Veme7uXleRUTFOjzbh+7e5sDX19HrnPquzCnzfMiqbp4lSoeUuNdOf
     FcpuTCQH+M+sIEIgPno4PLl0Uj2uE1o++mxmonBl/Krk+hly8hB2L/9n/vW3L7BN
     OMb1Ll9PmgGPbWipcT8KRdz4SUex9TXGYzjlWb3jU3uXetdaQY1M3kVKE1siRsRN
     YYDtpcjmwbhjpu4xm19aFqNoAHCDctEsXJA/mkU3erwIRocPyjAZE2dnlkL9ZkFZ
     z9DQkcIarbCnybDM5lemBbdhXJ6hezJE/b17VA0t1fY04MoEkn6oJg==
     =oyze
     -----END PGP PUBLIC KEY BLOCK-----
     ```

1. Em um prompt de comando no diretório em que você salvou **awstoe.gpg**, use o comando a seguir para importar a chave AWSTOE pública para o seu chaveiro.

   ```
   gpg --import awstoe.gpg
   ```

   O comando retorna resultados semelhantes a:

   ```
   gpg: key F5AEBC52: public key "AWSTOE <awstoe@amazon.com>" imported
   gpg: Total number processed: 1
   gpg:               imported: 1  (RSA: 1)
   ```

   Anote o valor da chave, ele será necessário na próxima etapa. No exemplo anterior, o valor da chave é `F5AEBC52`.

1. Verifique a impressão digital, executando o comando a seguir, substituindo *chave-valor* pelo valor da etapa anterior:

   ```
   gpg --fingerprint key-value
   ```

   Esse comando retorna resultados semelhantes a:

   ```
   pub   2048R/F5AEBC52 2020-07-19
         Key fingerprint = F6DD E01C 869F D639 15E5  5742 DEBD C156 F5AE BC52
   uid       [ unknown] AWSTOE <awstoe@amazon.com>
   ```

   Além disso, a cadeia de caracteres da impressão digital deve ser idêntica a `F6DD E01C 869F D639 15E5 5742 DEBD C156 F5AE BC52` mostrado acima no exemplo anterior. Compare a impressão digital da chave retornada à publicada nesta página. Elas devem corresponder. Se eles não corresponderem, não instale o script de AWSTOE instalação e entre em contato Suporte. 

### Verificar a assinatura do pacote
<a name="awstoe-verify-signature-of-binary-package"></a>

Depois de instalar as ferramentas `GPG`, autentique e importe a chave pública AWSTOE e verifique se a chave pública é confiável, você estará pronto para verificar a assinatura do script de instalação. 

**Para verificar a assinatura do script de instalação**

1. Em um prompt de comando, execute o comando a seguir para baixar o binário do aplicativo:

   ```
   curl -O https://awstoe-<region>.s3.<region>.amazonaws.com/latest/linux/<architecture>/awstoe
   ```

   Por exemplo:

   ```
   curl -O https://awstoe-us-east-1.s3.us-east-1.amazonaws.com/latest/linux/amd64/awstoe
   ```

   Os valores compatíveis para **architecture** podem ser `amd64`, `386` e `arm64`.

1. Em um prompt de comando, execute o comando a seguir para baixar o arquivo de assinatura para o binário do aplicativo correspondente a partir do mesmo caminho de prefixo de chave do S3:

   ```
   curl -O https://awstoe-<region>.s3.<region>.amazonaws.com/latest/linux/<architecture>/awstoe.sig
   ```

   Por exemplo:

   ```
   curl -O https://awstoe-us-east-1.s3.us-east-1.amazonaws.com/latest/linux/amd64/awstoe.sig
   ```

   Os valores compatíveis para **architecture** podem ser `amd64`, `386` e `arm64`.

1. Verifique a assinatura executando o comando a seguir em um prompt de comando no diretório em que você salvou `awstoe.sig` e no arquivo AWSTOE de instalação. Ambos os arquivos devem estar presentes.

   ```
   gpg --verify ./awstoe.sig ~/awstoe
   ```

   A saída deve parecer com algo semelhante ao seguinte:

   ```
   gpg: Signature made Mon 20 Jul 2020 08:54:55 AM IST using RSA key ID F5AEBC52
   gpg: Good signature from "AWSTOE awstoe@amazon.com" [unknown]
   gpg: WARNING: This key is not certified with a trusted signature!
   gpg:          There is no indication that the signature belongs to the owner.
   Primary key fingerprint: F6DD E01C 869F D639 15E5 5742 DEBD C156 F5AE BC52
   ```

   Se a saída contém a frase `Good signature from "AWSTOE <awstoe@amazon.com>"`, isso significa que a assinatura foi confirmada com êxito e você pode dar continuidade à execução do script de instalação do AWSTOE .

   Se a saída inclui a frase `BAD signature`, verifique se você executou o procedimento corretamente. Se você continuar a receber essa resposta, não execute o arquivo de instalação que baixou anteriormente e entre em contato com o Suporte.

Veja a seguir os detalhes sobre as advertências que talvez sejam exibidas: 
+ **AVISO: esta chave não está certificada com uma assinatura confiável\$1 Não há indicação de que a assinatura pertença ao proprietário.** Idealmente, você visitaria um AWS escritório e receberia a chave pessoalmente. No entanto, é mais provável você baixá-la de um site. Nesse caso, o site é um AWS site. 
+ **gpg: em última análise, nenhuma chave confiável encontrada.** Isso significa que a chave específica não é "essencialmente confiável" por você ou por outras pessoas que você confia.

Para obter mais informações, consulte [http://www.gnupg.org](http://www.gnupg.org).

## Verifique a assinatura do download da AWSTOE instalação no Windows
<a name="awstoe-verify-sig-win"></a>

Este tópico descreve o processo recomendado para verificar a validade do arquivo de instalação do AWS Task Orchestrator and Executor aplicativo em sistemas operacionais baseados em Windows. 

Sempre que baixar um aplicativo da Internet, recomendamos que você autentique a identidade do fornecedor do software e verifique se o aplicativo não foi alterado ou corrompido desde que foi publicado. Isso protege você contra a instalação de uma versão do aplicativo que contenha um vírus ou outro código mal-intencionado.

Se depois de executar as etapas neste tópico, você determinar que o software do aplicativo AWSTOE está alterado ou corrompido, não execute o arquivo de instalação. Em vez disso, entre em contato Suporte.

Para verificar a validade do binário awstoe baixado em sistemas operacionais Windows, você deve certificar-se de que o thumbprint do certificado do assinante do Amazon Services LLC seja igual a este valor:

**9D CA 72 17 DA FF B8 2F E4 C4 67 77 36 2F A4 AA C9 08 82 15**

**nota**  
Durante a janela de lançamento de um novo binário, seu certificado de signatário pode não corresponder à nova impressão digital. Se seu certificado de signatário não corresponder à nova impressão digital, verifique se o valor da impressão digital é:   
**BA 81 25 EE AC 64 2E A9 F3 C5 93 CA 6D 3E B7 93 7D 68 75 74**

Para verificar esse valor, execute o procedimento a seguir: 

1. Clique com o botão direito do mouse no `awstoe.exe` baixado e abra a janela **Propriedades**.

1. Escolha a guia **Assinaturas digitais**.

1. Em **Lista de assinaturas**, escolha **Amazon Web Services LLC** e selecione **Detalhes**.

1. Escolha a guia **Geral**, se ainda não estiver selecionada, e escolha **Visualizar certificado**.

1. Selecione a guia **Detalhes** e **Todos** na lista suspensa **Exibir**, se ela ainda não estiver selecionada.

1. Role para baixo até ver o campo **Impressão digital** e, em seguida, escolha **Impressão digital**. Isso exibe todo o valor da impressão digital na janela inferior.
   + Se o valor da impressão digital na janela inferior for idêntico a este valor:

     **9D CA 72 17 DA FF B8 2F E4 C4 67 77 36 2F A4 AA C9 08 82 15**

     então seu AWSTOE binário baixado é autêntico e pode ser instalado com segurança.
   + Se o valor da impressão digital na janela de detalhes inferior não for idêntico ao valor anterior, não execute `awstoe.exe`.

**Topics**
+ [Verifique a assinatura do download da AWSTOE instalação](awstoe-verify-sig.md)
+ [Etapa 1: instalar AWSTOE](#toe-start-install)
+ [Etapa 2: definir AWS credenciais](#toe-start-credentials)
+ [Etapa 3: Desenvolver documentos de componentes localmente](#toe-start-develop)
+ [Etapa 4: Validar componentes AWSTOE](#toe-start-validate)
+ [Etapa 5: Executar AWSTOE componentes](#toe-start-run)

## Etapa 1: instalar AWSTOE
<a name="toe-start-install"></a>

Para desenvolver componentes localmente, baixe e instale o AWSTOE aplicativo.

1. 

**Baixe o AWSTOE aplicativo**

   Para instalar AWSTOE, escolha o link de download apropriado para sua arquitetura e plataforma. Para obter a lista completa de links para download de aplicativos, consulte [AWSTOE downloads](toe-component-manager.md#toe-downloads)
**Importante**  
AWS está eliminando gradualmente o suporte para as versões 1.0 e 1.1 do TLS. Para acessar o bucket do S3 para AWSTOE downloads, seu software cliente deve usar o TLS versão 1.2 ou posterior. Para obter mais informações, consulte esta [AWS publicação do blog de Segurança](https://aws.amazon.com/blogs/security/tls-1-2-required-for-aws-endpoints/).

1. 

**Verifique a assinatura**

   As etapas para verificar seu download dependem da plataforma do servidor em que você executa o AWSTOE aplicativo depois de instalá-lo. Para verificar seu download em um servidor Linux, consulte[Verificar a assinatura no Linux ou no macOS](awstoe-verify-sig.md#awstoe-verify-sig-linux). Para verificar seu download em um servidor Windows, consulte[Verifique a assinatura no Windows](awstoe-verify-sig.md#awstoe-verify-sig-win).

**nota**  
AWSTOE é invocado diretamente de seu local de download. Não há necessidade de uma etapa de instalação separada. Isso também significa que AWSTOE pode fazer alterações no ambiente local.  
Para garantir que você isole as alterações durante o desenvolvimento do componente, recomendamos que você use uma EC2 instância para desenvolver e testar AWSTOE componentes.

## Etapa 2: definir AWS credenciais
<a name="toe-start-credentials"></a>

 AWSTOE requer AWS credenciais para se conectar a outros Serviços da AWS, como Amazon S3 e CloudWatch Amazon, ao executar tarefas, como: 
+ Baixar AWSTOE documentos de um caminho do Amazon S3 fornecido pelo usuário.
+ Módulos de execução `S3Download` ou ação `S3Upload`.
+ Streaming de registros para CloudWatch, quando ativado.

Se você estiver executando AWSTOE em uma EC2 instância, a execução AWSTOE usa as mesmas permissões da função do IAM anexada à EC2 instância.

Para obter mais informações sobre as funções do IAM para EC2, consulte [Funções do IAM para a Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html).

Os exemplos a seguir mostram como definir AWS credenciais usando as variáveis de `AWS_SECRET_ACCESS_KEY` ambiente `AWS_ACCESS_KEY_ID` e. 

Para definir essas variáveis no Linux, macOS ou Unix, use `export`.

```
export AWS_ACCESS_KEY_ID=your_access_key_id
```

```
export AWS_SECRET_ACCESS_KEY=your_secret_access_key
```

Para definir essas variáveis no Windows usando PowerShell, use`$env`.

```
$env:AWS_ACCESS_KEY_ID=your_access_key_id
```

```
$env:AWS_SECRET_ACCESS_KEY=your_secret_access_key
```

Para definir essas variáveis no Windows o prompt de comando, use `set`.

```
set AWS_ACCESS_KEY_ID=your_access_key_id
```

```
set AWS_SECRET_ACCESS_KEY=your_secret_access_key
```

## Etapa 3: Desenvolver documentos de componentes localmente
<a name="toe-start-develop"></a>

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

Veja a seguir exemplos de documento de componente *Hello World* para ajudar você a começar.

------
#### [ Linux ]

Alguns dos exemplos de componente do Linux neste guia se referem a um arquivo de documento de componente chamado `hello-world-linux.yml`. Você pode usar o documento a seguir para começar a usar esses exemplos.

```
name: Hello World
description: This is hello world testing document for Linux.
schemaVersion: 1.0
phases:
  - name: build
    steps:
      - name: HelloWorldStep
        action: ExecuteBash
        inputs:
          commands:
            - echo 'Hello World from the build phase.'
  - name: validate
    steps:
      - name: HelloWorldStep
        action: ExecuteBash
        inputs:
          commands:
            - echo 'Hello World from the validate phase.'
  - name: test
    steps:
      - name: HelloWorldStep
        action: ExecuteBash
        inputs:
          commands:
            - echo 'Hello World from the test phase.'
```

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

Alguns dos exemplos de componente do Windows neste guia se referem a um arquivo de documento de componente chamado `hello-world-windows.yml`. Você pode usar o documento a seguir para começar a usar esses exemplos.

```
name: Hello World
description: This is Hello World testing document for Windows.
schemaVersion: 1.0
phases:
  - name: build
    steps:
      - name: HelloWorldStep
        action: ExecutePowerShell
        inputs:
          commands:
            - Write-Host 'Hello World from the build phase.'
  - name: validate
    steps:
      - name: HelloWorldStep
        action: ExecutePowerShell
        inputs:
          commands:
            - Write-Host 'Hello World from the validate phase.'
  - name: test
    steps:
      - name: HelloWorldStep
        action: ExecutePowerShell
        inputs:
          commands:
            - Write-Host 'Hello World from the test phase.'
```

------
#### [ macOS ]

Alguns dos exemplos de componente do macOS neste guia se referem a um arquivo de documento de componente chamado `hello-world-macos.yml`. Você pode usar o documento a seguir para começar a usar esses exemplos.

```
name: Hello World
description: This is hello world testing document for macOS.
schemaVersion: 1.0
phases:
  - name: build
    steps:
      - name: HelloWorldStep
        action: ExecuteBash
        inputs:
          commands:
            - echo 'Hello World from the build phase.'
  - name: validate
    steps:
      - name: HelloWorldStep
        action: ExecuteBash
        inputs:
          commands:
            - echo 'Hello World from the validate phase.'
  - name: test
    steps:
      - name: HelloWorldStep
        action: ExecuteBash
        inputs:
          commands:
            - echo 'Hello World from the test phase.'
```

------

## Etapa 4: Validar componentes AWSTOE
<a name="toe-start-validate"></a>

Você pode validar a sintaxe dos AWSTOE componentes localmente com o AWSTOE aplicativo. Os exemplos a seguir mostram o `validate` comando do AWSTOE aplicativo para validar a sintaxe de um componente sem executá-lo.

**nota**  
O AWSTOE aplicativo pode validar somente a sintaxe do componente para o sistema operacional atual. Por exemplo, ao executar `awstoe.exe` no Windows, você não pode validar a sintaxe de um documento Linux que usa o módulo de ação `ExecuteBash`.

Linux ou macOS

```
awstoe validate --documents /home/user/hello-world.yml
```

Windows

```
awstoe.exe validate --documents C:\Users\user\Documents\hello-world.yml
```

## Etapa 5: Executar AWSTOE componentes
<a name="toe-start-run"></a>

O AWSTOE aplicativo pode executar uma ou mais fases de documentos especificados usando o argumento da linha de `--phases` comando. Os valores compatíveis para `--phases` são `build`, `validate` e `test`. Vários valores de fase podem ser inseridos como valores separados por vírgula.

Quando você fornece uma lista de fases, o AWSTOE aplicativo executa sequencialmente as fases especificadas de cada documento. Por exemplo, AWSTOE executa `validate` as fases `build` e de`document1.yaml`, seguidas pelas `validate` fases `build` e de`document2.yaml`.

Para garantir que seus logs sejam armazenados com segurança e retidos para solução de problemas, recomendamos configurar o armazenamento de logs no Amazon S3. No Image Builder, a localização do Amazon S3 para publicação de logs é especificada na configuração da infraestrutura. Para obter mais informações sobre configuração de infraestrutura, consulte [Gerenciar a configuração da infraestrutura do Image Builder](manage-infra-config.md)

Se uma lista de fases não for fornecida, o AWSTOE aplicativo executará todas as fases na ordem listada no documento YAML.

Para executar fases específicas em um ou vários documentos, use os comandos a seguir.

Fase única

```
awstoe run --documents hello-world.yml --phases build
```

Várias fases

```
awstoe run --documents hello-world.yml --phases build,test
```

**Execução de documentos**  
Executar todas as fases em um único documento

```
awstoe run --documents documentName.yaml
```

Executar todas as fases em vários documentos

```
awstoe run --documents documentName1.yaml,documentName2.yaml
```

Insira as informações do Amazon S3 para fazer upload de AWSTOE registros de um caminho local definido pelo usuário (recomendado)

```
awstoe run --documents documentName.yaml --log-s3-bucket-name amzn-s3-demo-destination-bucket --log-s3-key-prefix S3KeyPrefix --log-s3-bucket-owner S3BucketOwner --log-directory local_path
```

Executar todas as fases em um único documento e exibir todos os logs no console

```
awstoe run --documents documentName.yaml --trace
```

Exemplo de comando

```
awstoe run --documents s3://bucket/key/doc.yaml --phases build,validate
```

Executar documento com ID exclusivo

```
awstoe run --documents documentName.yaml --execution-id user-provided-id --phases build,test
```

Obtenha ajuda com AWSTOE

```
awstoe --help
```

# Use a estrutura de documentos de AWSTOE componentes para componentes personalizados
<a name="toe-use-documents"></a>

Para criar um componente usando a estrutura de componentes AWS Task Orchestrator and Executor (AWSTOE), você deve fornecer um documento baseado em YAML que represente as fases e etapas que se aplicam ao componente criado. Serviços da AWS use seu componente ao criar uma nova Amazon Machine Image (AMI) ou imagem de contêiner.

**Topics**
+ [Fluxo de trabalho do documento de componente](#component-doc-workflow)
+ [Registro em log do componente](#component-logging)
+ [Encadeamento de entrada e saída](#document-chaining)
+ [Esquema e definições do documento](#document-schema)
+ [Documentos de exemplo](#document-example)
+ [Usar variáveis em seu documento de componente personalizado](toe-user-defined-variables.md)
+ [Use construções condicionais em AWSTOE](toe-conditional-constructs.md)
+ [Use operadores de comparação em documentos de AWSTOE componentes](toe-comparison-operators.md)
+ [Use operadores lógicos em documentos de AWSTOE componentes](toe-logical-operators.md)
+ [Use construções em loop em AWSTOE](toe-looping-constructs.md)

## Fluxo de trabalho do documento de componente
<a name="component-doc-workflow"></a>

O documento do AWSTOE componente usa fases e etapas para agrupar tarefas relacionadas e organizar essas tarefas em um fluxo de trabalho lógico para o componente.

**dica**  
O serviço que usa seu componente para criar uma imagem pode implementar regras sobre quais fases usar no processo de criação e quando essas fases podem ser executadas. É importante considerar isso ao projetar seu componente.

**Fases**  
As fases representam a progressão do seu fluxo de trabalho por meio do processo de compilação da imagem. Por exemplo, o serviço Image Builder usa as fases `build` e `validate` durante seu *estágio de compilação* para as imagens que ele produz. Ele usa as fases `test` e `container-host-test` durante o *estágio de teste* para garantir que o snapshot da imagem ou a imagem do contêiner produza os resultados esperados antes de criar a AMI final ou distribuir a imagem do contêiner.

Quando o componente é executado, os comandos associados a cada fase são aplicados na ordem em que aparecem no documento do componente.

**Regras para as fases**
+ Cada nome de fase deve ser exclusivo dentro de um documento.
+ Você pode definir várias fases em seu documento.
+ Você deve incluir pelo menos uma das fases a seguir em seu documento:
  + **compilação**: para o Image Builder, essa fase geralmente é usada durante o *estágio de compilação*.
  + **validação**: para o Image Builder, essa fase geralmente é usada durante o *estágio de compilação*.
  + **teste**: para o Image Builder, essa fase geralmente é usada durante o *estágio de teste*.
+ As fases sempre são executadas na ordem em que são definidas no documento. A ordem na qual eles são especificados para AWSTOE os comandos no não AWS CLI tem efeito.

**Etapas**  
As etapas são unidades individuais de trabalho que definem o fluxo de trabalho em cada fase. As etapas são executadas em ordem sequencial. No entanto, a entrada ou saída de uma etapa também pode alimentar uma etapa subsequente como entrada. Isso é chamado de “encadeamento”.

**Regras para as etapas**
+ O nome da etapa deve ser exclusivo para a fase.
+ A etapa deve usar uma ação compatível (módulo de ação) que retorne um código de saída.

  Para obter uma lista completa dos módulos de ação compatíveis, como eles funcionam, input/output valores e exemplos, consulte[Módulos de ação suportados pelo gerenciador de AWSTOE componentes](toe-action-modules.md).

## Registro em log do componente
<a name="component-logging"></a>

AWSTOE cria uma nova pasta de log nas instâncias do EC2 que é usada para criar e testar uma nova imagem sempre que seu componente é executado. Para imagens de contêiner, a pasta de log é armazenada no contêiner.

Para ajudar na solução de problemas se algo der errado durante o processo de criação da imagem, o documento de entrada e todos os arquivos de saída AWSTOE criados durante a execução do componente são armazenados na pasta de registro.

O nome da pasta de log é composto pelas seguintes partes:

1. **Diretório de log** — quando um serviço executa um AWSTOE componente, ele passa para o diretório de log, junto com outras configurações do comando. Nos exemplos a seguir, mostramos o formato de arquivo de log usado pelo Image Builder.
   + **Linux e macOS**: `/var/lib/amazon/toe/`
   + **Windows**: `$env:ProgramFiles\Amazon\TaskOrchestratorAndExecutor\`

1. **Prefixo do arquivo**: esse é um prefixo padrão usado para todos os componentes: “`TOE_`”.

1. **Tempo de execução** — Este é um timestamp no formato YYYY-MM-DD \$1HH-MM-SS\$1UTC-0.

1. **ID de execução** — Esse é o GUID atribuído ao AWSTOE executar um ou mais componentes.

Exemplo: `/var/lib/amazon/toe/TOE_2021-07-01_12-34-56_UTC-0_a1bcd2e3-45f6-789a-bcde-0fa1b2c3def4`

AWSTOE armazena os seguintes arquivos principais na pasta de log:

**Arquivos de entrada**
+ **document.yaml**: o documento usado como entrada para o comando. Depois que o componente é executado, esse arquivo é armazenado como um artefato.

**Arquivos de saída**
+ **application.log**: O log do aplicativo contém informações de nível de depuração com o timestamp do AWSTOE sobre o que está acontecendo enquanto o componente está sendo executado.
+ **detailedoutput.json**: esse arquivo JSON tem informações detalhadas sobre o status de execução, entradas, saídas e falhas de todos os documentos, fases e etapas que se aplicam ao componente enquanto ele é executado.
+ **console.log** — O log do console contém todas as informações de saída padrão (stdout) e erro padrão (stderr) que são AWSTOE gravadas no console enquanto o componente está em execução.
+ **chaining.json — Esse arquivo JSON** representa otimizações aplicadas para resolver expressões de encadeamento. AWSTOE 

**nota**  
A pasta de log também pode conter outros arquivos temporários que não são abordados aqui.

## Encadeamento de entrada e saída
<a name="document-chaining"></a>

O aplicativo de gerenciamento de AWSTOE configuração fornece um recurso para encadear entradas e saídas escrevendo referências nos seguintes formatos:

`{{ phase_name.step_name.inputs/outputs.variable }}`

or

`{{ phase_name.step_name.inputs/outputs[index].variable }}`

O atributo de encadeamento permite que você recicle o código e melhore a capacidade de manutenção do documento.

**Regras para o encadeamento**
+ Expressões de encadeamento só podem ser usadas na seção de entradas de cada etapa.
+ Instruções com expressões encadeadas devem estar entre aspas. Por exemplo:
  + **Expressão inválida**: `echo {{ phase.step.inputs.variable }}`
  + **Expressão válida**: `"echo {{ phase.step.inputs.variable }}"`
  + **Expressão válida**: `'echo {{ phase.step.inputs.variable }}'`
+ Expressões de encadeamento podem referenciar variáveis de outras etapas e fases no mesmo documento. No entanto, o serviço de chamada pode ter regras que exijam que as expressões de encadeamento operem somente no contexto de um único estágio. Por exemplo, o Image Builder não é compatível com o encadeamento do *estágio de compilação* até o *estágio de teste*, pois ele executa cada estágio de forma independente.
+ Os índices em expressões de encadeamento seguem a indexação com base em zero. O índice começa com zero (0) para referenciar o primeiro elemento.

**Exemplos**

Para se referir à variável de origem na segunda entrada da etapa de exemplo a seguir, o padrão de encadeamento é `{{ build.SampleS3Download.inputs[1].source }}`.

```
phases:
  - name: 'build'
    steps:
      - name: SampleS3Download
        action: S3Download
        timeoutSeconds: 60
        onFailure: Abort
        maxAttempts: 3
        inputs:
          - source: 's3://sample-bucket/sample1.ps1'
            destination: 'C:\sample1.ps1'
          - source: 's3://sample-bucket/sample2.ps1'
            destination: 'C:\sample2.ps1'
```

Para se referir à variável de saída (igual a "Hello") da etapa de exemplo a seguir, o padrão de encadeamento é `{{ build.SamplePowerShellStep.outputs.stdout }}`.

```
phases:
  - name: 'build'
    steps:
      - name: SamplePowerShellStep
        action: ExecutePowerShell
        timeoutSeconds: 120
        onFailure: Abort
        maxAttempts: 3
        inputs:
          commands:
            - 'Write-Host "Hello"'
```

## Esquema e definições do documento
<a name="document-schema"></a>

Veja a seguir o esquema YAML para um documento.

```
name: (optional)
description: (optional)
schemaVersion: "string"

phases:
  - name: "string"
    steps:
      - name: "string"
        action: "string"
        timeoutSeconds: integer
        onFailure: "Abort|Continue|Ignore"
        maxAttempts: integer
        inputs:
```

As definições de esquema para um documento são as seguintes.


| Campo | Description | Tipo | Obrigatório | 
| --- | --- | --- | --- | 
| name | O nome do documento. | String | Não | 
| descrição | Descrição do documento. | String |  Não  | 
| schemaVersion | Versão do esquema do documento, atualmente 1.0. | String |  Sim  | 
| phases | Uma lista de fases com suas etapas. |  Lista  |  Sim  | 

As definições de esquema para uma fase são as seguintes.


| Campo | Description | Tipo | Obrigatório | 
| --- | --- | --- | --- | 
| name | Nome da fase. | String | Sim | 
| steps | Lista das etapas da fase. | Lista  |  Sim  | 

As definições de esquema para uma etapa são as seguintes.


| Campo | Description | Tipo | Obrigatório | Valor padrão  | 
| --- | --- | --- | --- | --- | 
| name | Nome definido pelo usuário para a etapa. | String |  |  | 
| ação | Palavra-chave referente ao módulo que executa a etapa. | String |  |  | 
| timeoutSeconds |  Número de segundos em que a etapa é executada antes de falhar ou tentar novamente.  Além disso, suporta o valor -1, que indica um tempo limite infinito. 0 e outros valores negativos não são permitidos.  | Inteiro |  Não  | 7.200 segundos (120 minutos) | 
| onFailure |  Especifica o que a etapa deve fazer em caso de falha. Os valores válidos são os seguintes:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/imagebuilder/latest/userguide/toe-use-documents.html)  |  String  |  Não  | Anular | 
| maxAttempts | Número máximo de tentativas permitidas antes de falhar na etapa. | Inteiro |  Não  | 1 | 
| inputs | Contém os parâmetros exigidos pelo módulo de ação para executar a etapa. | Dict |  Sim  |  | 

## Documentos de exemplo
<a name="document-example"></a>

Os exemplos a seguir mostram documentos de AWSTOE componentes que executam tarefas para o sistema operacional de destino.

------
#### [ Linux ]

**Exemplo 1: executar um arquivo binário personalizado**  
Veja a seguir um exemplo de documento para baixar e executar um arquivo binário personalizado em uma instância do Linux.

```
name: LinuxBin
description: Download and run a custom Linux binary file.
schemaVersion: 1.0
phases:
  - name: build
    steps:
      - name: Download
        action: S3Download
        inputs:
          - source: s3://<replaceable>amzn-s3-demo-source-bucket</replaceable>/<replaceable>myapplication</replaceable>
            destination: /tmp/<replaceable>myapplication</replaceable>
      - name: Enable
        action: ExecuteBash
        onFailure: Continue
        inputs:
          commands:
            - 'chmod u+x {{ build.Download.inputs[0].destination }}'
      - name: Install
        action: ExecuteBinary
        onFailure: Continue
        inputs:
          path: '{{ build.Download.inputs[0].destination }}'
          arguments:
            - '--install'
      - name: Delete
        action: DeleteFile
        inputs:
          - path: '{{ build.Download.inputs[0].destination }}'
```

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

**Exemplo 1: instalar atualizações do Windows**  
Veja a seguir um exemplo de documento para instalar todas as atualizações disponíveis do Windows, executar um script de configuração, validar as alterações antes da criação da AMI e testar as alterações após a criação da AMI.

```
name: RunConfig_UpdateWindows
description: 'This document will install all available Windows updates and run a config script. It will then validate the changes before an AMI is created. Then after AMI creation, it will test all the changes.'
schemaVersion: 1.0
phases:
  - name: build
    steps:
      - name: DownloadConfigScript
        action: S3Download
        timeoutSeconds: 60
        onFailure: Abort
        maxAttempts: 3
        inputs:
          - source: 's3://customer-bucket/config.ps1'
            destination: 'C:\config.ps1'

      - name: RunConfigScript
        action: ExecutePowerShell
        timeoutSeconds: 120
        onFailure: Abort
        maxAttempts: 3
        inputs:
          file: '{{build.DownloadConfigScript.inputs[0].destination}}'

      - name: Cleanup
        action: DeleteFile
        onFailure: Abort
        maxAttempts: 3
        inputs:
          - path: '{{build.DownloadConfigScript.inputs[0].destination}}'

      - name: RebootAfterConfigApplied
        action: Reboot
        inputs:
          delaySeconds: 60

      - name: InstallWindowsUpdates
        action: UpdateOS

  - name: validate
    steps:
      - name: DownloadTestConfigScript
        action: S3Download
        timeoutSeconds: 60
        onFailure: Abort
        maxAttempts: 3
        inputs:
          - source: 's3://customer-bucket/testConfig.ps1'
            destination: 'C:\testConfig.ps1'

      - name: ValidateConfigScript
        action: ExecutePowerShell
        timeoutSeconds: 120
        onFailure: Abort
        maxAttempts: 3
        inputs:
          file: '{{validate.DownloadTestConfigScript.inputs[0].destination}}'

      - name: Cleanup
        action: DeleteFile
        onFailure: Abort
        maxAttempts: 3
        inputs:
          - path: '{{validate.DownloadTestConfigScript.inputs[0].destination}}'

  - name: test
    steps:
      - name: DownloadTestConfigScript
        action: S3Download
        timeoutSeconds: 60
        onFailure: Abort
        maxAttempts: 3
        inputs:
          - source: 's3://customer-bucket/testConfig.ps1'
            destination: 'C:\testConfig.ps1'

      - name: ValidateConfigScript
        action: ExecutePowerShell
        timeoutSeconds: 120
        onFailure: Abort
        maxAttempts: 3
        inputs:
          file: '{{test.DownloadTestConfigScript.inputs[0].destination}}'
```

**Exemplo 2: instalar o AWS CLI em uma instância do Windows**  
Veja a seguir um exemplo de documento que instala o AWS CLI em uma instância do Windows, usando o arquivo de configuração.

```
name: InstallCLISetUp
description: Install &CLI; using the setup file
schemaVersion: 1.0
phases:
  - name: build
    steps:
      - name: Download
        action: S3Download
        inputs:
          - source: s3://aws-cli/AWSCLISetup.exe
            destination: C:\Windows\temp\AWSCLISetup.exe
      - name: Install
        action: ExecuteBinary
        onFailure: Continue
        inputs:
          path: '{{ build.Download.inputs[0].destination }}'
          arguments:
            - '/install'
            - '/quiet'
            - '/norestart'
      - name: Delete
        action: DeleteFile
        inputs:
          - path: '{{ build.Download.inputs[0].destination }}'
```

**Exemplo 3: Instale o AWS CLI com o instalador MSI**  
A seguir está um exemplo de documento que instala o AWS CLI com o instalador MSI.

```
name: InstallCLIMSI
description: Install &CLI; using the MSI installer
schemaVersion: 1.0
phases:
  - name: build
    steps:
      - name: Download
        action: S3Download
        inputs:
          - source: s3://aws-cli/AWSCLI64PY3.msi
            destination: C:\Windows\temp\AWSCLI64PY3.msi
      - name: Install
        action: ExecuteBinary
        onFailure: Continue
        inputs:
          path: 'C:\Windows\System32\msiexec.exe'
          arguments:
            - '/i'
            - '{{ build.Download.inputs[0].destination }}'
            - '/quiet'
            - '/norestart'
      - name: Delete
        action: DeleteFile
        inputs:
          - path: '{{ build.Download.inputs[0].destination }}'
```

------
#### [ macOS ]

**Exemplo 1: executar um arquivo binário personalizado no macOS**  
Veja a seguir um exemplo de documento para baixar e executar um arquivo binário personalizado em uma instância do macOS.

```
name: macOSBin
description: Download and run a binary file on macOS.
schemaVersion: 1.0
phases:
  - name: build
    steps:
      - name: Download
        action: S3Download
        inputs:
          - source: s3://<replaceable>amzn-s3-demo-source-bucket</replaceable>/<replaceable>myapplication</replaceable>
            destination: /tmp/<replaceable>myapplication</replaceable>
      - name: Enable
        action: ExecuteBash
        onFailure: Continue
        inputs:
          commands:
            - 'chmod u+x {{ build.Download.inputs[0].destination }}'
      - name: Install
        action: ExecuteBinary
        onFailure: Continue
        inputs:
          path: '{{ build.Download.inputs[0].destination }}'
          arguments:
            - '--install'
      - name: Delete
        action: DeleteFile
        inputs:
          - path: '{{ build.Download.inputs[0].destination }}'
```

------

# Usar variáveis em seu documento de componente personalizado
<a name="toe-user-defined-variables"></a>

As variáveis oferecem uma forma de rotular dados com nomes significativos que podem ser usados em todo o aplicativo. Você pode definir variáveis personalizadas com formatos simples e legíveis para fluxos de trabalho complexos e referenciá-las no documento do componente do aplicativo YAML para um componente. AWSTOE 

Esta seção fornece informações para ajudá-lo a definir variáveis para seu AWSTOE componente no documento do componente do aplicativo YAML, incluindo sintaxe, restrições de nome e exemplos.

## Constantes
<a name="user-defined-vars-constants"></a>

Constantes são variáveis imutáveis que não podem ser modificadas ou substituídas depois de definidas. As constantes podem ser definidas usando valores na `constants` seção de um AWSTOE documento.

**Regras para denominação de constantes**
+ O nome deve ter entre 3 e 128 caracteres.
+ O nome pode conter somente os caracteres alfanuméricos (A-Z, a-z, 0-9), hífens (-) ou sublinhados (\$1).
+ O nome deve ser exclusivo dentro do documento.
+ O nome deve ser especificado como uma cadeia YAML.

**Sintaxe**

```
constants:
  - <name>:
      type: <constant type>
      value: <constant value>
```


| Nome da chave | Obrigatório | Descrição | 
| --- | --- | --- | 
|  `name`  |  Sim  | Nome da constante. Deve ser exclusivo para o documento (não deve ser igual a nenhum outro nome de parâmetro ou constante). | 
| `value` | Sim | Valor da constante. | 
| `type` | Sim | Tipo da constante. O tipo compatível é string. | 

**Valores de constante de referência em um documento**  
Você pode referenciar constantes em informações de etapa ou loop dentro do seu documento YAML, da seguinte maneira:
+ As referências da constante diferenciam letras maiúsculas de minúsculas e o nome deve corresponder exatamente.
+ O nome deve estar entre colchetes duplos. `{{` *MyConstant* `}}`
+ Dentro dos parêntesis, os espaços são permitidos e são cortados automaticamente. Por exemplo, todas as referências a seguir são válidas:

  `{{ MyConstant }}`, `{{ MyConstant}}`, `{{MyConstant }}`, `{{MyConstant}}`
+ A referência no documento YAML deve ser especificada como uma string (entre aspas simples ou duplas).

  Por exemplo: `- {{ MyConstant }}` não é válido, pois não é identificado como uma string.

  No entanto, as seguintes referências são válidas: `- '{{ MyConstant }}'` e `- "{{ MyConstant }}"`.

**Exemplos**  
Constante referenciada nas informações da etapa

```
name: Download AWS CLI version 2
schemaVersion: 1.0
constants:
  - Source:
      type: string
      value: https://awscli.amazonaws.com/AWSCLIV2.msi
phases:
  - name: build
    steps:
      - name: Download
        action: WebDownload
        inputs:
          - source: '{{ Source }}'
            destination: 'C:\Windows\Temp\AWSCLIV2.msi'
```

Constante referenciada nas informações de loop

```
name: PingHosts
schemaVersion: 1.0
constants:
  - Hosts:
      type: string
      value: 127.0.0.1,amazon.com
phases:
  - name: build
    steps:
      - name: Ping
        action: ExecuteBash
        loop:
          forEach:
            list: '{{ Hosts }}'
            delimiter: ','
        inputs:
          commands:
            - ping -c 4 {{ loop.value }}
```

## Parâmetros
<a name="user-defined-vars-parameters"></a>

Os parâmetros são variáveis mutáveis, com configurações que o aplicativo de chamada pode fornecer no runtime. Você pode definir parâmetros na seção `Parameters` do documento YAML.

**Regras para denominação de parâmetro**
+ O nome deve ter entre 3 e 128 caracteres.
+ O nome pode conter somente os caracteres alfanuméricos (A-Z, a-z, 0-9), hífens (-) ou sublinhados (\$1).
+ O nome deve ser exclusivo dentro do documento.
+ O nome deve ser especificado como uma cadeia YAML.

### Sintaxe
<a name="vars-parameters-syntax"></a>

```
parameters:
  - <name>:
      type: <parameter type>
      default: <parameter value>
      description: <parameter description>
```


| Nome da chave | Obrigatório | Descrição | 
| --- | --- | --- | 
| `name` | Sim | O nome do parâmetro. Deve ser exclusivo para o documento (não deve ser igual a nenhum outro nome de parâmetro ou constante). | 
| `type` | Sim | O tipo de dado válido do parâmetro. Os tipos compatíveis incluem: `string`. | 
| `default` | Não | O valor padrão do parâmetro. | 
| `description` | Não | Descreve o parâmetro. | 

### Valores de parâmetros de referência em um documento
<a name="vars-parameters-referencing"></a>

Você pode referenciar parâmetros em etapa ou loop dentro do seu documento YAML, da seguinte maneira:
+ As referências de parâmetro diferenciam letras maiúsculas de minúsculas e o nome deve corresponder exatamente.
+ O nome deve estar entre colchetes duplos. `{{` *MyParameter* `}}`
+ Dentro dos parêntesis, os espaços são permitidos e são cortados automaticamente. Por exemplo, todas as referências a seguir são válidas:

  `{{ MyParameter }}`, `{{ MyParameter}}`, `{{MyParameter }}`, `{{MyParameter}}`
+ A referência no documento YAML deve ser especificada como uma string (entre aspas simples ou duplas).

  Por exemplo: `- {{ MyParameter }}` não é válido, pois não é identificado como uma string.

  No entanto, as seguintes referências são válidas: `- '{{ MyParameter }}'` e `- "{{ MyParameter }}"`.

**Exemplos**  
Os exemplos a seguir mostram como usar parâmetros no seu documento YAML:
+ Consulte um parâmetro nas informações da etapa:

  ```
  name: Download AWS CLI version 2
  schemaVersion: 1.0
  parameters:
    - Source:
        type: string
        default: 'https://awscli.amazonaws.com/AWSCLIV2.msi'
        description: The AWS CLI installer source URL.
  phases:
    - name: build
      steps:
        - name: Download
          action: WebDownload
          inputs:
            - source: '{{ Source }}'
              destination: 'C:\Windows\Temp\AWSCLIV2.msi'
  ```
+ Consulte um parâmetro nas informações de loop:

  ```
  name: PingHosts
  schemaVersion: 1.0
  parameters:
    - Hosts:
        type: string
        default: 127.0.0.1,amazon.com
        description: A comma separated list of hosts to ping.
  phases:
    - name: build
      steps:
        - name: Ping
          action: ExecuteBash
          loop:
            forEach:
              list: '{{ Hosts }}'
              delimiter: ','
          inputs:
            commands:
              - ping -c 4 {{ loop.value }}
  ```

### Substituir parâmetros no runtime
<a name="vars-parameters-set-at-runtime"></a>

Você pode usar a `--parameters` opção AWS CLI com um par de valores-chave para definir um valor de parâmetro em tempo de execução.
+ Especifique o par chave-valor do parâmetro como nome e valor, separados por um sinal de igual (<name>=<value>).
+ Vários parâmetros devem ser separados por uma vírgula.
+ Os nomes dos parâmetros que não são encontrados no documento do componente YAML são ignorados.
+ O nome e o valor do parâmetro são obrigatórios.

**Importante**  
Os parâmetros do componente são valores de texto simples e estão logados em AWS CloudTrail. Recomendamos que você use AWS Secrets Manager ou o AWS Systems Manager Parameter Store para armazenar seus segredos. Para obter mais informações sobre o Secrets Manager, consulte ‭[O que é o Secrets Manager?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)‭‬ no *AWS Secrets Manager Guia do usuário‭*. Para obter mais informações sobre o ‭ AWS Systems Manager Parameter Store, consulte [AWS Systems Manager ‬ Parameter Store‭‬](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) no *AWS Systems Manager ‬ Guia do usuário‭*.

#### Sintaxe
<a name="vars-runtime-parameters-syntax"></a>

```
--parameters name1=value1,name2=value2...
```


| Opção da CLI: | Obrigatório | Description | 
| --- | --- | --- | 
| --parâmetros *name* =*value*,... | Não | Essa opção usa uma lista de pares chave-valor, com o nome do parâmetro como chave. | 

**Exemplos**  
Os exemplos a seguir mostram como usar parâmetros no seu documento YAML:
+ O par valor-chave do parâmetro especificado nessa opção do `--parameter` não é válido:

  ```
  --parameters ntp-server=
  ```
+ Defina um par valor-chave de parâmetro com a opção do `--parameter` no AWS CLI:

  ```
  --parameters ntp-server=ntp-server-windows-qe.us-east1.amazon.com
  ```
+ Defina vários pares valor-chave de parâmetros com a opção `--parameter` no AWS CLI:

  ```
  --parameters ntp-server=ntp-server.amazon.com,http-url=https://internal-us-east1.amazon.com
  ```

## Use os parâmetros do Systems Manager Parameter Store
<a name="toe-ssm-parameters"></a>

Você pode referenciar os parâmetros do AWS Systems Manager Parameter Store (parâmetros SSM) em seus documentos de componentes prefixando variáveis com. `aws:ssm` Por exemplo, 

`{{ aws:ssm:/my/param }}`resolve o valor do parâmetro SSM. `/my/param`

Esse recurso oferece suporte aos seguintes tipos de parâmetros SSM:
+ String — Mapeia para o tipo de AWSTOE string.
+ StringList — Mapas para o AWSTOE `stringList` tipo.
+ SecureString — Mapeia para o tipo de AWSTOE string.

Para obter mais informações sobre o Parameter Store, consulte [AWS Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) no *Guia AWS Systems Manager do usuário*.

Você também pode referenciar AWS Secrets Manager segredos usando um parâmetro `SecureString` SSM. Por exemplo: `{{ aws:ssm:/aws/reference/secretsmanager/test/test-secret }}`. Para obter mais informações, consulte Como [referenciar AWS Secrets Manager segredos dos parâmetros do Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/integration-ps-secretsmanager.html).

**Importante**  
O Image Builder exclui a resolução de `SecureString` parâmetros de seus registros. No entanto, você também é responsável por garantir que informações confidenciais não sejam registradas por meio de comandos emitidos no documento do componente. Por exemplo, se você usar o `echo` comando com uma string segura, o comando grava um valor em texto simples no log.

### Permissões obrigatórias do IAM
<a name="toe-ssm-parameters-permissions"></a>

Para usar os parâmetros do Systems Manager em seus componentes, sua função de instância deve ter a `ssm:GetParameter` permissão para o recurso de parâmetros ARN. Por exemplo:

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

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": "ssm:GetParameter",
			"Resource": "arn:aws:ssm:*:111122223333:parameter/ImageBuilder-*"
		}
	]
}
```

------

Para acessar valores criptografados, você também precisará das seguintes permissões:
+ Adicione `kms:Decrypt` `SecureString` parâmetros ou AWS Secrets Manager valores que são criptografados com um cliente gerenciado AWS KMS key.
+ Adicione `secretsmanager:GetSecretValue` se você fizer referência a um segredo do Secrets Manager.

### Fazer referência a um parâmetro SSM em um documento componente
<a name="toe-ssm-parameters-example"></a>

O exemplo a seguir mostra como referenciar um parâmetro do Systems Manager Parameter Store dos parâmetros do Systems Manager em um componente:

```
name: UseSSMParameterVariable
description: This is a sample component document that prints out the value of an SSM Parameter. Never do this for a SecureString parameter.
schemaVersion: 1.0

phases:
  - name: verify
    steps:
      - name: EchoParameterValue
        action: ExecuteBash
        inputs:
          commands:
            - echo "Log SSM parameter name: /my/test/param, value {{ aws:ssm:/my/test/param }}."
```

### Resolução variável de tempo de execução dinâmico para parâmetros SSM
<a name="toe-dynamic-vars"></a>

AWSTOE fornece a seguinte função integrada que você pode usar em referências de variáveis para manipular ou transformar valores em tempo de execução.

#### função de resolução
<a name="toe-function-resolve"></a>

A `resolve` função resolve uma referência de variável dentro de outra referência de variável, permitindo a referência dinâmica de nomes de variáveis. Isso é útil ao trabalhar com parâmetros SSM em que parte do caminho do parâmetro pode ser variável e transmitida como um parâmetro do documento.

A `resolve` função suporta somente a resolução dinâmica da parte do nome de um parâmetro SSM.

##### Sintaxe
<a name="toe-function-resolve-syntax"></a>

O `dynamic_variable` exemplo a seguir representa o nome de um parâmetro SSM e deve ser um dos seguintes:
+ Uma referência de parâmetro SSM (por exemplo,`aws:ssm:/my/param`)
+ Uma referência de parâmetro do documento do componente (por exemplo,`parameter-name`)

```
{{ aws:ssm:resolve(dynamic_variable) }}
```

##### Exemplo: Resolver um parâmetro SSM em tempo de execução
<a name="toe-function-resolve-examples"></a>

O exemplo a seguir mostra como usar a `resolve` função em um documento do componente YAML:

```
name: SsmParameterTest
description: This component verifies an SSM parameter variable reference with the echo command.
schemaVersion: 1.0

parameters:
  - parameter-name:
      type: string
      description: "test"

phases:
  - name: validate
    steps:
      - name: PrintDynamicVariable
        action: ExecuteBash
        inputs:
          commands:
            - echo "{{ aws:ssm:resolve(parameter-name) }}"
```

# Use construções condicionais em AWSTOE
<a name="toe-conditional-constructs"></a>

Os constructos condicionais realizam diferentes ações no documento do componente dependendo de a expressão condicional especificada ser avaliada como `true` ou `false`. Você pode usar o constructo `if` para controlar o fluxo de execução no documento do componente.

## Constructo “if”
<a name="toe-conditional-if"></a>

Você pode usar o constructo `if` para avaliar se uma etapa deve ser executada ou não. Por padrão, quando a expressão condicional `if` é avaliada como `true`, o AWSTOE executa a etapa e, quando a condição é avaliada como `false`, o AWSTOE pula a etapa. Se uma etapa for ignorada, ela poderá ser tratada como bem-sucedida quando o AWSTOE avaliar se a fase e o documento foram executados com êxito.

**nota**  
Uma instrução `if` só é avaliada uma vez, mesmo que a etapa acione uma reinicialização. Se uma etapa for reiniciada, ela reconhecerá que a instrução `if` já foi avaliada e continuará de onde parou.

### Sintaxe
<a name="toe-conditional-if-syntax"></a>

```
if:
  - <conditional expression>:
      [then: <step action>]
      [else: <step action>]
```


| Nome da chave | Obrigatório | Description | 
| --- | --- | --- | 
| Expressão condicional | Sim |  A expressão condicional pode conter exatamente um dos seguintes tipos de operador no nível superior. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/imagebuilder/latest/userguide/toe-conditional-constructs.html) Se sua expressão precisar satisfazer várias condições, use um operador lógico para especificar suas condições.  | 
| then | Não |  Define a ação a ser executada se a expressão condicional for avaliada como `true`.  | 
| else | Não |  Define a ação a ser executada se a expressão condicional for avaliada como `false`.  | 
| ações de etapa | Condicional |  Ao usar `then` ou `else`, você deve especificar uma das seguintes ações de etapa: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/imagebuilder/latest/userguide/toe-conditional-constructs.html)  | 

**Exemplo 1: instalar um pacote**  
As etapas de exemplo a seguir de um documento de AWSTOE componente usam operadores lógicos para testar um valor de parâmetro e executar os comandos apropriados do gerenciador de pacotes para instalar um aplicativo se o pacote for descompactado.

```
    - name: InstallUnzipAptGet
      action: ExecuteBash
      if:
        and:
            - binaryExists: 'apt-get'
            - not:
                binaryExists: 'unzip'
      inputs:
        commands:
            - sudo apt-get update
            - sudo apt-get install -y unzip

    - name: InstallUnzipYum
      action: ExecuteBash
      if:
        and:
            - binaryExists: 'yum'
            - not:
                binaryExists: 'unzip'
      inputs:
        commands:
            - sudo yum install -y unzip

    - name: InstallUnzipZypper
      action: ExecuteBash
      if:
        and:
            - binaryExists: 'zypper'
            - not:
                binaryExists: 'unzip'
      inputs:
        commands:
            - sudo zypper refresh
            - sudo zypper install -y unzip
```

**Exemplo 2: ignorar uma etapa**  
O exemplo a seguir mostra duas maneiras de pular uma etapa. Uma usa um operador lógico e a outra usa um operador de comparação com a ação de etapa `Skip`.

```
# Creates a file if it does not exist using not
- name: CreateMyConfigFile-1
  action: ExecuteBash
  if:
    not:
      fileExists: '/etc/my_config'
  inputs:
    commands:
      - echo "Hello world" > '/etc/my_config'

# Creates a file if it does not exist using then and else
- name: CreateMyConfigFile-2
  action: ExecuteBash
  if:
    fileExists: '/etc/my_config'
    then: Skip
    else: Execute
  inputs:
    commands:
      - echo "Hello world" > '/etc/my_config'
```

# Use operadores de comparação em documentos de AWSTOE componentes
<a name="toe-comparison-operators"></a>

Você pode usar os operadores de comparação a seguir com o módulo de ação **[Assert](toe-action-modules.md#action-modules-assertion)** e com expressões condicionais que usam o [Constructo “if”Sintaxe](toe-conditional-constructs.md#toe-conditional-if). Um operador de comparação pode operar em um único valor (por exemplo, `stringIsEmpty`) ou comparar um valor de referência com um segundo valor (valor variável) para determinar se a expressão condicional é avaliada como `true` ou `false`.

Se a comparação operar em dois valores, o segundo valor poderá ser uma variável de encadeamento.

Ao comparar valores de um tipo diferente, as seguintes conversões de valor podem ocorrer antes da comparação:
+ Para comparações numéricas, se o valor da variável for uma string, AWSTOE converte a string em um número antes da avaliação. Se a conversão não for possível, a comparação responderá com `false`. Por exemplo, se o valor da variável for `"1.0"`, a conversão funcionará, mas, se o valor da variável for `"a10"`, a conversão falhará.
+ Para comparações de strings, se o valor da variável for um número, AWSTOE converte-o em uma string antes da avaliação.

## Comparar strings
<a name="toe-compare-strings"></a>

Os operadores de comparação a seguir funcionam com strings de caracteres para comparar valores, testar espaços ou uma string vazia ou comparar um valor de entrada com um padrão regex. As comparações de strings não diferenciam maiúsculas de minúsculas e não removem os espaços do início ou do final das entradas de string.

**Operadores de comparação de strings**
+ [stringIsEmpty](#stringIsEmpty)
+ [stringIsWhitespace](#stringIsWhitespace)
+ [stringEquals](#stringEquals)
+ [stringLessThan](#stringLessThan)
+ [stringLessThanEquals](#stringLessThanEquals)
+ [stringGreaterThan](#stringGreaterThan)
+ [stringGreaterThanEquals](#stringGreaterThanEquals)
+ [patternMatches](#patternMatches)

**stringIsEmpty**  
O operador `stringIsEmpty` responderá com `true` se a string especificada não contiver nenhum caractere. Por exemplo:  

```
# Evaluates to true
stringIsEmpty: ""

# Evaluates to false
stringIsEmpty: " "
				
# Evaluates to false
stringIsEmpty: "Hello."
```

**stringIsWhitespace**  
Testa se a string especificada para `stringIsWhitespace` contém somente espaços. Por exemplo:  

```
# Evaluates to true
stringIsWhitespace: "   "

# Evaluates to false
stringIsWhitespace: ""
				
# Evaluates to false
stringIsWhitespace: " Hello?"
```

**stringEquals**  
Testa se a string especificada para `stringEquals` é uma correspondência exata para a string especificada no parâmetro `value`. Por exemplo:  

```
# Evaluates to true
stringEquals: 'Testing, testing...'
value: 'Testing, testing...'

# Evaluates to false
stringEquals: 'Testing, testing...'
value: 'Hello again.'

# Evaluates to false
stringEquals: 'Testing, testing...'
value: 'TESTING, TESTING....'

# Evaluates to false
stringEquals: 'Testing, testing...'
value: '   Testing, testing...'
				
# Evaluates to false
stringEquals: 'Testing, testing...'
value: 'Testing, testing...   '
```

**stringLessThan**  
Testa se a string especificada para `stringLessThan` é menor do que a string especificada no parâmetro `value`. Por exemplo:  

```
# Evaluates to true
# This comparison operator isn't case sensitive
stringlessThan: 'A'
value: 'a'

# Evaluates to true - 'a' is less than 'b'
stringlessThan: 'b'
value: 'a'

# Evaluates to true
# Numeric strings compare as less than alphabetic strings
stringlessThan: 'a'
value: '0'

# Evaluates to false
stringlessThan: '0'
value: 'a'
```

**stringLessThanIgual**  
Testa se a string especificada para `stringLessThanEquals` é menor ou igual à string especificada no parâmetro `value`. Por exemplo:  

```
# Evaluates to true - 'a' is equal to 'a'
stringLessThanEquals: 'a'
value: 'a'

# Evaluates to true - since the comparison isn't case sensitive, 'a' is equal to 'A'
stringLessThanEquals: 'A'
value: 'a'

# Evaluates to true - 'a' is less than 'b'
stringLessThanEquals: 'b'
value: 'a'

# Evaluates to true - '0' is less than 'a'
stringLessThanEquals: 'a'
value: '0'

# Evaluates to false - 'a' is greater than '0'
stringLessThanEquals: '0'
value: 'a'
```

**stringGreaterThan**  
Testa se a string especificada para `stringGreaterThan` é maior do que a string especificada no parâmetro `value`. Por exemplo:  

```
# Evaluates to false - since the comparison isn't case sensitive, 'A' is equal to 'a'
stringGreaterThan: 'a'
value: 'A'

# Evaluates to true - 'b' is greater than 'a'
stringGreaterThan: 'a'
value: 'b'

# Evaluates to true - 'a' is greater than '0'
stringGreaterThan: '0'
value: 'a'

# Evaluates to false - '0' is less than 'a'
stringGreaterThan: 'a'
value: '0'
```

**stringGreaterThanIgual**  
Testa se a string especificada para `stringGreaterThanEquals` é maior ou igual à string especificada no parâmetro `value`. Por exemplo:  

```
# Evaluates to true - 'a' is equal to 'A'
stringGreaterThanEquals: 'A'
value: 'a'

# Evaluates to true - 'b' is greater than 'a'
stringGreaterThanEquals: 'a'
value: 'b'

# Evaluates to true - 'a' is greater than '0'
stringGreaterThanEquals: '0'
value: 'a'

# Evaluates to false - '0' is less than 'a'
stringGreaterThanEquals: 'a'
value: '0'
```

**patternMatches**  
Testa se a string especificada para `value` corresponde ao padrão regex especificado para `patternMatches`. A comparação usa o [pacote Golang regexp](https://pkg.go.dev/regexp), que está em conformidade com a sintaxe. RE2 Para obter mais informações sobre RE2 regras, consulte o repositório [google/ re2](https://github.com/google/re2/wiki/Syntax) em. *GitHub*  
O exemplo a seguir mostra uma correspondência de padrões que responde com `true`:  

```
patternMatches: '^[a-z]+$'
value: 'ThisIsValue'
```

## Comparar números
<a name="toe-compare-numbers"></a>

Os operadores de comparação a seguir funcionam com números. Os valores fornecidos para esses operadores devem ser de um dos tipos a seguir, de acordo com a especificação YAML. O suporte a comparações numéricas usa o operador de comparação do pacote Golang Big, por exemplo: [func (\$1Float) Cmp](https://pkg.go.dev/math/big#Float.Cmp).
+ Inteiro
+ Float (com base no float64, compatível com números de -1.7e\$1308 a \$11.7e\$1308)
+ Uma string que corresponde ao seguinte padrão de regex: `^[-+]?([0-9]+[.])?[0-9]+$`

**Operadores de comparação de números**
+ [numberEquals](#numberEquals)
+ [numberLessThan](#numberLessThan)
+ [numberLessThanEquals](#numberLessThanEquals)
+ [numberGreaterThan](#numberGreaterThan)
+ [numberGreaterThanEquals](#numberGreaterThanEquals)

**numberEquals**  
Testa se o número especificado para `numberEquals` é igual ao número especificado no parâmetro `value`. Todos os seguintes exemplos de comparação respondem com `true`:  

```
# Values provided as a positive number
numberEquals: 1
value: 1

# Comparison value provided as a string
numberEquals: '1'
value: 1

# Value provided as a string
numberEquals: 1
value: '1'

# Values provided as floats
numberEquals: 5.0
value: 5.0

# Values provided as a negative number
numberEquals: -1
value: -1
```

**numberLessThan**  
Testa se o número especificado para `numberLessThan` é menor do que o número especificado no parâmetro `value`. Por exemplo:  

```
# Evaluates to true
numberLessThan: 2
value: 1

# Evaluates to true
numberLessThan: 2
value: 1.9

# Evaluates to false
numberLessThan: 2
value: '2'
```

**numberLessThanIgual**  
Testa se o número especificado para `numberLessThanEquals` é menor ou igual ao número especificado no parâmetro `value`. Por exemplo:  

```
# Evaluates to true
numberLessThanEquals: 2
value: 1

# Evaluates to true
numberLessThanEquals: 2
value: 1.9

# Evaluates to true
numberLessThanEquals: 2
value: '2'

# Evaluates to false
numberLessThanEquals: 2
value: 2.1
```

**numberGreaterThan**  
Testa se o número especificado para `numberGreaterThan` é maior do que o número especificado no parâmetro `value`. Por exemplo:  

```
# Evaluates to true
numberGreaterThan: 1
value: 2

# Evaluates to true
numberGreaterThan: 1
value: 1.1

# Evaluates to false
numberGreaterThan: 1
value: '1'
```

**numberGreaterThanIgual**  
Testa se o número especificado para `numberGreaterThanEquals` é maior ou igual ao número especificado no parâmetro `value`. Por exemplo:  

```
# Evaluates to true
numberGreaterThanEquals: 1
value: 2

# Evaluates to true
numberGreaterThanEquals: 1
value: 1.1

# Evaluates to true
numberGreaterThanEquals: 1
value: '1'

# Evaluates to false
numberGreaterThanEquals: 1
value: 0.8
```

## Verificar arquivos
<a name="toe-check-files"></a>

Os operadores de comparação a seguir verificam o hash do arquivo ou se um arquivo ou pasta existe.

**Operadores de arquivos e pastas**
+ [binaryExists](#binaryExists)
+ [fileExists](#fileExists)
+ [folderExists](#folderExists)
+ [fileMD5Equals](#fileMD5Equals)
+ [fileSHA1Equals](#fileSHA1Equals)
+ [fileSHA256Equals](#fileSHA256Equals)
+ [fileSHA512Equals](#fileSHA512Equals)

**binaryExists**  
Testa se uma aplicação está disponível no caminho atual. Por exemplo:  

```
binaryExists: 'foo'
```
Em sistemas Linux e macOS, para um aplicativo chamado*foo*, isso funciona da mesma forma que o seguinte comando bash:**type *foo* >/dev/null 2>&1**, onde **\$1? == 0** indica uma comparação bem-sucedida.  
Em sistemas Windows, para um aplicativo chamado*foo*, isso funciona da mesma forma que o PowerShell comando **& C:\$1Windows\$1System32\$1where.exe /Q *foo*** que **\$1LASTEXITCODE = 0** indica uma comparação bem-sucedida.

**fileExists**  
Testa se um arquivo existe no caminho especificado. Você pode fornecer um caminho absoluto ou relativo. Se o local especificado existir e for um arquivo, a comparação será avaliada como `true`. Por exemplo:  

```
fileExists: '/path/to/file'
```
Nos sistemas Linux e macOS, isso funciona da mesma forma que o seguinte comando bash: **-d */path/to/file***, em que **\$1? == 0** indica uma comparação bem-sucedida.  
Nos sistemas Windows, isso funciona da mesma forma que o PowerShell comando**Test-Path -Path '*C:\$1path\$1to\$1file*' -PathType 'Leaf'**.

**folderExists**  
Testa se uma pasta existe no caminho especificado. Você pode fornecer um caminho absoluto ou relativo. Se o local especificado existir e for uma pasta, a comparação será avaliada como `true`. Por exemplo:  

```
folderExists: '/path/to/folder'
```
Nos sistemas Linux e macOS, isso funciona da mesma forma que o seguinte comando bash: **-d */path/to/folder***, em que **\$1? == 0** indica uma comparação bem-sucedida.  
Nos sistemas Windows, isso funciona da mesma forma que o PowerShell comando**Test-Path -Path '*C:\$1path\$1to\$1folder*' -PathType 'Container'**.

**arquivo é igual MD5 a**  
Testa se o MD5 hash de um arquivo é igual a um valor especificado. Por exemplo:  

```
fileMD5Equals: '<MD5Hash>'
path: '/path/to/file'
```

**arquivo é igual SHA1 a**  
Testa se o SHA1 hash de um arquivo é igual a um valor especificado. Por exemplo:  

```
fileSHA1Equals: '<SHA1Hash>'
path: '/path/to/file'
```

**arquivo é igual SHA256 a**  
Testa se o SHA256 hash de um arquivo é igual a um valor especificado. Por exemplo:  

```
fileSHA256Equals: '<SHA256Hash>'
path: '/path/to/file'
```

**arquivo é igual SHA512 a**  
Testa se o SHA512 hash de um arquivo é igual a um valor especificado. Por exemplo:  

```
fileSHA512Equals: '<SHA512Hash>'
path: '/path/to/file'
```

# Use operadores lógicos em documentos de AWSTOE componentes
<a name="toe-logical-operators"></a>

Você pode usar os operadores lógicos a seguir para adicionar ou modificar expressões condicionais no documento do componente. AWSTOE avalia expressões condicionais na ordem em que as condições são especificadas. Para obter mais informações sobre operadores de comparação para documentos de componente, consulte [Use operadores de comparação em documentos de AWSTOE componentes](toe-comparison-operators.md).

**and**  
Com o operador `and`, você pode avaliar duas ou mais comparações como uma única expressão. A expressão é avaliada como `true` quando todas as condições na lista são verdadeiras. Caso contrário, a expressão será avaliada como `false`.  
**Exemplos:**  
O exemplo a seguir faz duas comparações: uma string e um número. Ambas as comparações são verdadeiras, então a expressão é avaliada como verdadeira.

```
and:
  - stringEquals: 'test_string'
    value: 'test_string'
  - numberEquals: 1
    value: 1
```
O exemplo a seguir também realiza duas comparações. A primeira comparação é falsa e, em dado momento, a avaliação é interrompida e a segunda comparação é ignorada. A expressão é avaliada como `false`.  

```
and:
  - stringEquals: 'test_string'
    value: 'Hello world!'
  - numberEquals: 1
    value: 1
```

**or**  
Com o operador `or`, você pode avaliar duas ou mais comparações como uma única expressão. A expressão é avaliada como `true` quando uma das comparações especificadas é verdadeira. Se nenhuma das comparações especificadas for avaliada como `true`, a expressão será avaliada como `false`.  
**Exemplos:**  
O exemplo a seguir faz duas comparações: uma string e um número. A primeira comparação é verdadeira, então a expressão é avaliada como `true` e a segunda comparação é ignorada.

```
or:
  - stringEquals: 'test_string'
    value: 'test_string'
  - numberEquals: 1
    value: 3
```
O exemplo a seguir também realiza duas comparações. A primeira comparação é falsa e a avaliação continua. A segunda comparação é verdadeira, então a expressão é avaliada como `true`.  

```
or:
  - stringEquals: 'test_string'
    value: 'Hello world!'
  - numberEquals: 1
    value: 1
```
No exemplo final, ambas as comparações são falsas, então a expressão é avaliada como `false`.  

```
or:
  - stringEquals: 'test_string'
    value: 'Hello world!'
  - numberEquals: 1
    value: 3
```

**not**  
Com o operador `not`, você pode negar uma única comparação. A expressão é avaliada como `true` se a comparação for falsa. Se a comparação for verdadeira, a expressão será avaliada como `false`.  
**Exemplos:**  
O exemplo a seguir executa uma comparação de strings. A comparação é falsa, então a expressão é avaliada como `true`.

```
not:
  - stringEquals: 'test_string'
    value: 'Hello world!'
```
O exemplo a seguir também executa uma comparação de strings. A comparação é verdadeira, então a expressão é avaliada como `false`.  

```
not:
  - stringEquals: 'test_string'
    value: 'test_string'
```

# Use construções em loop em AWSTOE
<a name="toe-looping-constructs"></a>

Esta seção fornece informações para ajudar você a criar estruturas em loop no AWSTOE. Estruturas em loop definem uma sequência repetida de instruções. Você pode usar os seguintes tipos de estruturas em loop no AWSTOE:
+ `for` estruturas: itere sobre uma sequência limitada de inteiros.
+ `forEach` estruturas
  + `forEach` loop com lista de entrada: itera sobre uma coleção finita de strings. 
  + `forEach` loop com lista delimitada: itera sobre uma coleção finita de strings unidas por um delimitador.

**nota**  
As estruturas em loop suportam somente tipos de dados de string.

**Topics**
+ [Variáveis de iteração de referência](#toe-loop-iteration-variables)
+ [Tipos de estruturas em loop](#toe-loop-types)
+ [Campos de etapa](#toe-loop-step-fields)
+ [Saídas de etapa e iteração](#toe-loop-step-output)

## Variáveis de iteração de referência
<a name="toe-loop-iteration-variables"></a>

Para se referir ao índice e ao valor da variável de iteração atual, a expressão de referência `{{ loop.* }}` deve ser usada no corpo de entrada de uma etapa que contém uma estrutura em loop. Essa expressão não pode ser usada para se referir às variáveis de iteração da estrutura em loop de outra etapa.

A expressão de referência consiste nos seguintes membros:
+ `{{ loop.index }}`: a posição ordinal da iteração atual, indexada em `0`. 
+ `{{ loop.value }}`: o valor associado à variável de iteração atual. 

### Nomes de loop
<a name="toe-loop-iteration-variables-names"></a>

 Todas as estruturas em loop têm um campo de nome opcional para identificação. Se um nome de loop for fornecido, ele poderá ser usado para se referir às variáveis de iteração no corpo de entrada da etapa. Para se referir aos índices e valores de iteração de um loop nomeado, use `{{ <loop_name>.* }}` com `{{ loop.* }}` no corpo de entrada da etapa. Essa expressão não pode ser usada para se referir à estrutura em loop nomeada de outra etapa. 

A expressão de referência consiste nos seguintes membros:
+ `{{ <loop_name>.index }}`: a posição ordinal da iteração atual do loop nomeado, indexada em `0`.
+ `{{ <loop_name>.value }}`: o valor associado à variável de iteração atual do loop nomeado.

### Resolver expressões de referência
<a name="toe-loop-iteration-variables-expressions"></a>

 AWSTOE Resolve as expressões de referência da seguinte forma: 
+ `{{ <loop_name>.* }}`— AWSTOE resolve essa expressão usando a seguinte lógica:
  + Se o loop da etapa em execução no momento corresponder ao valor do `<loop_name>`, a expressão de referência será resolvida para a estrutura em loop da etapa em execução no momento.
  + `<loop_name>` resolve para a estrutura em loop nomeada se ela aparecer na etapa em execução no momento.
+ `{{ loop.* }}`— AWSTOE resolve a expressão usando a construção de loop definida na etapa atualmente em execução.

Se expressões de referência forem usadas em uma etapa que não contém um loop, elas AWSTOE não resolverão as expressões e elas aparecerão na etapa sem substituição. 

**nota**  
As expressões de referência devem estar entre aspas duplas para serem interpretadas corretamente pelo compilador YAML.

## Tipos de estruturas em loop
<a name="toe-loop-types"></a>

Esta seção fornece informações e exemplos sobre os tipos de estrutura em loop que podem ser usados no AWSTOE.

**Topics**
+ [loop `for`](#toe-loop-types-for)
+ [loop `forEach` com lista de entrada](#toe-loop-types-foreach)
+ [loop `forEach` com lista delimitada](#toe-loop-types-foreach-delimited)

### loop `for`
<a name="toe-loop-types-for"></a>

O loop `for` itera em um intervalo de inteiros especificado dentro de um limite delineado pelo início e pelo fim das variáveis. Os valores de iteração estão no conjunto `[start, end]` e incluem valores limite.

AWSTOE verifica os `updateBy` valores `start``end`, e para garantir que a combinação não resulte em um loop infinito.

esquema de loop `for`

```
  - name: "StepName"
    action: "ActionModule"
    loop:
      name: "string"
      for:
        start: int
        end: int
        updateBy: int
inputs:
  ...
```


**entrada de loop `for`**  

| Campo | Description | Tipo | Obrigatório | Padrão | 
| --- | --- | --- | --- | --- | 
|  `name`  | Nome exclusivo do loop. Ele deve ser exclusivo em comparação com outros nomes de loop na mesma fase. |  String  |  Não  |  ""  | 
|  `start`  | Valor inicial da iteração. Não aceita expressões de encadeamento.  |  Inteiro  |  Sim  |  n/a  | 
| `end` | Valor final da iteração. Não aceita expressões de encadeamento.  | Inteiro | Sim | n/a | 
| `updateBy` | Diferença pela qual um valor iterativo é atualizado por meio da adição. Deve ser um valor negativo ou positivo diferente de zero. Não aceita expressões de encadeamento.  | Inteiro | Sim | n/a | 

exemplo de entrada de loop `for`

```
  - name: "CalculateFileUploadLatencies"
    action: "ExecutePowerShell"
    loop:
      for:
        start: 100000
        end: 1000000
        updateBy: 100000
    inputs:
      commands:
        - |
          $f = new-object System.IO.FileStream c:\temp\test{{ loop.index }}.txt, Create, ReadWrite
          $f.SetLength({{ loop.value }}MB)
          $f.Close()
        - c:\users\administrator\downloads\latencyTest.exe --file c:\temp\test{{ loop.index }}.txt
        - AWS s3 cp c:\users\administrator\downloads\latencyMetrics.json s3://bucket/latencyMetrics.json
        - |
          Remove-Item -Path c:\temp\test{{ loop.index }}.txt
          Remove-Item -Path c:\users\administrator\downloads\latencyMetrics.json
```

### loop `forEach` com lista de entrada
<a name="toe-loop-types-foreach"></a>

O loop `forEach` itera em uma lista explícita de valores, que podem ser cadeias de caracteres e expressões encadeadas. 

loop `forEach` com esquema de lista de entrada

```
  - name: "StepName"
    action: "ActionModule"
    loop:
      name: "string"
      forEach:
        - "string"
    inputs:
  ...
```


**loop `forEach` com entrada de lista de entrada**  

| Campo | Description | Tipo | Obrigatório | Padrão | 
| --- | --- | --- | --- | --- | 
|  `name`  | Nome exclusivo do loop. Ele deve ser exclusivo em comparação com outros nomes de loop na mesma fase. |  String  |  Não  |  ""  | 
|  Lista de string de loop `forEach`  |  Lista de strings para iteração. Aceita expressões encadeadas como cadeias de strings na lista. As expressões encadeadas devem estar entre aspas duplas para serem interpretadas corretamente pelo compilador YAML.  |  Lista de strings  |  Sim  |  n/a  | 

loop `forEach` com lista de entrada (exemplo 1)

```
  - name: "ExecuteCustomScripts"
    action: "ExecuteBash"
    loop:
      name: BatchExecLoop
      forEach:
        - /tmp/script1.sh
        - /tmp/script2.sh
        - /tmp/script3.sh
    inputs:
      commands:
        - echo "Count {{ BatchExecLoop.index }}"
        - sh "{{ loop.value }}"
        - |
          retVal=$?
          if [ $retVal -ne 0 ]; then
            echo "Failed"
          else
            echo "Passed"
         fi
```

loop `forEach` com lista de entrada (exemplo 2)

```
  - name: "RunMSIWithDifferentArgs"
    action: "ExecuteBinary"
    loop:
      name: MultiArgLoop
      forEach:
        - "ARG1=C:\Users ARG2=1"
        - "ARG1=C:\Users"
        - "ARG1=C:\Users ARG3=C:\Users\Administrator\Documents\f1.txt"
    inputs:
      commands:
        path: "c:\users\administrator\downloads\runner.exe"
        args:
          - "{{ MultiArgLoop.value }}"
```

loop `forEach` com lista de entrada (exemplo 3)

```
  - name: "DownloadAllBinaries"
    action: "S3Download"
    loop:
      name: MultiArgLoop
      forEach:
        - "bin1.exe"
        - "bin10.exe"
        - "bin5.exe"
    inputs:
      - source: "s3://bucket/{{ loop.value }}"
        destination: "c:\temp\{{ loop.value }}"
```

### loop `forEach` com lista delimitada
<a name="toe-loop-types-foreach-delimited"></a>

O loop itera sobre uma string contendo valores separados por um delimitador. Para iterar sobre os constituintes da string, AWSTOE usa o delimitador para dividir a string em uma matriz adequada para iteração. 

loop `forEach` com esquema de lista delimitada

```
  - name: "StepName"
    action: "ActionModule"
    loop:
      name: "string"
      forEach:
        list: "string"
        delimiter: ".,;:\n\t -_"
    inputs:
  ...
```


**loop `forEach` com entrada de lista delimitada**  

| Campo | Description | Tipo | Obrigatório | Padrão | 
| --- | --- | --- | --- | --- | 
|  `name`  | Nome exclusivo dado ao loop. Deve ser exclusivo quando comparado com outros nomes de loop na mesma fase. |  String  |  Não  |  ""  | 
|  `list`  | Uma string composta por strings constituintes unidas por um caractere delimitador comum. Também aceita expressões encadeadas. No caso de expressões encadeadas, certifique-se de que elas estejam entre aspas duplas para uma interpretação correta pelo compilador YAML. | String |  Sim  |  n/a  | 
| `delimiter` | Caractere usado para separar as strings dentro de um bloco. O padrão é o caractere de vírgula. Somente um caractere delimitador é permitido na lista fornecida: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/imagebuilder/latest/userguide/toe-looping-constructs.html) Expressões encadeadas não podem ser usadas. | String | Não | Vírgula: "," | 

**nota**  
O valor de `list` é tratado como uma string imutável. Se a fonte de `list` for alterada durante o runtime, ela não será refletida durante a execução.

loop `forEach` com lista delimitada (exemplo 1)

Este exemplo usa o seguinte padrão de expressão de encadeamento para se referir à saída de outra etapa: `<phase_name>.<step_name>.[inputs | outputs].<var_name>`.

```
  - name: "RunMSIs"
    action: "ExecuteBinary"
    loop:
      forEach:
        list: "{{ build.GetAllMSIPathsForInstallation.outputs.stdout }}"
        delimiter: "\n"
    inputs:
      commands:
        path: "{{ loop.value }}"
```

loop `forEach` com lista delimitada (exemplo 2)

```
  - name: "UploadMetricFiles"
    action: "S3Upload"
    loop:
      forEach:
        list: "/tmp/m1.txt,/tmp/m2.txt,/tmp/m3.txt,..."
    inputs:
      commands:
        - source: "{{ loop.value }}"
          destination: "s3://bucket/key/{{ loop.value }}"
```

## Campos de etapa
<a name="toe-loop-step-fields"></a>

Os loops fazem parte de uma etapa. Qualquer campo relacionado à execução de uma etapa não é aplicado a iterações individuais. Os campos de etapa se aplicam somente no nível da etapa, da seguinte forma:
+ *TimeoutSeconds*: todas as iterações do loop devem ser executadas dentro do período especificado por esse campo. Se a execução do loop atingir o tempo limite, AWSTOE execute a política de repetição da etapa e redefina o parâmetro de tempo limite para cada nova tentativa. Se a execução do loop exceder o valor do tempo limite após atingir o número máximo de novas tentativas, a mensagem de falha da etapa indicará que a execução do loop atingiu o tempo limite. 
+ *onFailure*: o tratamento de falhas é aplicado à etapa da seguinte forma:
  + Se *OnFailure* estiver definido como`Abort`, AWSTOE sai do loop e repete a etapa de acordo com a política de repetição. Após o número máximo de tentativas de repetição, AWSTOE marca a etapa atual como falhada e interrompe a execução do processo.

    AWSTOE define o código de status da fase principal e do documento como`Failed`.
**nota**  
Nenhuma outra etapa é executada após a etapa malsucedida.
  + Se *onFailure* estiver definido como `Continue`, AWSTOE sai do loop e repete a etapa de acordo com a política de repetição. Após o número máximo de tentativas de repetição, AWSTOE marca a etapa atual como falhada e continua executando a próxima etapa.

    AWSTOE define o código de status da fase principal e do documento como`Failed`.
  + Se *onFailure* estiver definido como `Ignore`, AWSTOE sai do loop e repete a etapa de acordo com a política de repetição. Após o número máximo de tentativas de repetição, AWSTOE marca a etapa atual como `IgnoredFailure` e continua executando a próxima etapa.

    AWSTOE define o código de status da fase principal e do documento como`SuccessWithIgnoredFailure`.
**nota**  
Isso ainda é considerado uma execução bem-sucedida, mas inclui informações para que você saiba que uma ou mais etapas falharam e foram ignoradas.
+ *maxAttempts*: para cada nova tentativa, toda a etapa e todas as iterações são executadas desde o início.
+ *status*: o status geral da execução de uma etapa. `status` não representa o status de iterações individuais. O status de uma etapa com loops é determinado da seguinte forma:
  + Se uma única iteração falhar na execução, o status de uma etapa aponta para uma falha.
  + Se todas as iterações forem bem-sucedidas, o status de uma etapa indicará um sucesso.
+ *startTime*: a hora geral de início da execução de uma etapa. Não representa a hora de início das iterações individuais.
+ *endTime*: a hora geral de término da execução de uma etapa. Não representa a hora de término das iterações individuais.
+ *failureMessage*: inclui os índices de iteração que falharam em caso de erros sem tempo limite. Em caso de erros de tempo limite, a mensagem indica que a execução do loop falhou. Mensagens de erro individuais para cada iteração não são fornecidas para minimizar o tamanho das mensagens de falha.

## Saídas de etapa e iteração
<a name="toe-loop-step-output"></a>

Cada iteração contém uma saída. No final de uma execução de loop, AWSTOE consolida todas as saídas de iteração bem-sucedidas em. `detailedOutput.json` As saídas consolidadas são um agrupamento de valores que pertencem às chaves de saída correspondentes, conforme definido no esquema de saída do módulo de ação. O exemplo a seguir mostra como as saídas são consolidadas:

**Saída de `ExecuteBash` para a Iteração 1**

```
{
	"stdout":"Hello"
}
```

**Saída de `ExecuteBash` para a Iteração 2**

```
{
	"stdout":"World"
}
```

**Saída de `ExecuteBash` para a Etapa**

```
{
	"stdout":"Hello\nWorld"
}
```

Por exemplo, `ExecuteBash`, `ExecutePowerShell` e `ExecuteBinary` são módulos de ação que retornam `STDOUT` como saída do módulo de ação. As mensagens `STDOUT` são unidas ao novo caractere de linha para produzir a saída geral da etapa em `detailedOutput.json`.

AWSTOE não consolidará os resultados de iterações malsucedidas.

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

# Configurar a entrada para o comando de AWSTOE execução
<a name="toe-run-config-input"></a>

Para simplificar a entrada da linha de comando para seu AWSTOE **run** comando, você pode incluir configurações para parâmetros e opções de comando em um arquivo de configuração de entrada no formato JSON com uma extensão de `.json` arquivo. AWSTOE pode ler seu arquivo em um dos seguintes locais:
+ Um caminho de arquivo local (*./config.json*).
+ Um bucket S3 (*s3://<bucket-path>/<bucket-name>/config.json*).

Ao inserir o comando **run**, você pode especificar o arquivo de configuração de entrada usando o parâmetro **--config**. Por exemplo:

```
awstoe run --config <file-path>/config.json
```

**Um arquivo de configuração de entrada**  
O arquivo JSON de configuração de entrada inclui pares de valores-chave para todas as configurações que você pode fornecer diretamente por meio de parâmetros e opções de comando **run**. Se você especificar uma configuração no arquivo de configuração de entrada e no comando **run**, como parâmetro ou opção, as seguintes regras de precedência se aplicam:

**Regras de precedência**

1. Uma configuração fornecida diretamente ao **run** comando no AWS CLI, por meio de um parâmetro ou opção, substitui qualquer valor definido no arquivo de configuração de entrada para a mesma configuração.

1. Uma configuração no arquivo de configuração de entrada substitui o valor padrão de um componente.

1. Se nenhuma outra configuração for passada para o documento do componente, ele poderá aplicar um valor padrão, se houver.

Há duas exceções a essa regra: documentos e parâmetros. Estas configurações funcionam de forma diferente na configuração de entrada e como parâmetros de comando. Se você usar o arquivo de configuração de entrada, não deverá especificar esses parâmetros diretamente no comando **run**. Fazer isso gerará um erro.

**Configurações do componente**  
O arquivo de configuração de entrada contém as seguintes configurações. Para simplificar seu arquivo, você pode omitir as configurações opcionais que não são necessárias. Todas as configurações são opcionais, salvo indicação em contrário.
+ **cwIgnoreFailures**(Boolean) — Ignore as falhas de registro dos CloudWatch registros.
+ **cwLogGroup**(String) — O `LogGroup` nome dos CloudWatch registros.
+ **cwLogRegion**(String) — A AWS região que se aplica aos CloudWatch registros.
+ **cwLogStream**(String) — O `LogStream` nome dos CloudWatch registros, que direciona para AWSTOE onde transmitir o `console.log` arquivo.
+ **DocumentS3 BucketOwner** (String) — O ID da conta do proprietário do bucket para documentos baseados em URI do S3.
+ **documents** (matriz de objetos, obrigatório) — Uma matriz de objetos JSON representando os documentos do componente YAML que o AWSTOE **run** comando está executando. Pelo menos um documento de componente deve ser especificado.

  Cada objeto consiste dos seguinte campos:
  + **path** (String, obrigatório): o local do arquivo do documento do componente YAML. Este valor deve ser um dos seguintes:
    + Um caminho de arquivo local (*./component-doc-example.yaml*).
    + Um URI do S3 (`s3://bucket/key`).
    + Uma versão ARN de compilação do componente Image Builder (arn:aws:imagebuilder:us-west-/ /2021.12.02/1). *2:123456789012* *my-example-component*
  + **parâmetros** (matriz de objetos): uma matriz de objetos de pares de valores-chave, cada um representando um parâmetro específico do componente que o comando **run**transmite ao executar o documento do componente. Os parâmetros são opcionais para componentes. O documento do componente pode ou não ter parâmetros definidos.

    Cada objeto consiste dos seguinte campos:
    + **nome** (string, obrigatório): o nome do parâmetro de componente.
    + **valor** (String, obrigatório): o valor a ser passado para o documento do componente para o parâmetro nomeado.

    Para saber mais sobre os parâmetros do componente, consulte a seção **Parâmetros** na página [Usar variáveis em seu documento de componente personalizado](toe-user-defined-variables.md).
+ **ExecutonId** (String): esse é o ID exclusivo que se aplica à execução do comando atual **run**. Este ID é incluído nos nomes dos arquivos de saída e log, para identificar esses arquivos de forma exclusiva e vinculá-los à execução atual do comando. Se essa configuração for omitida, AWSTOE gera um GUID.
+ **LogDirectory** (String) — O diretório de destino em que AWSTOE armazena todos os arquivos de log da execução desse comando. Este arquivo está localizado no diretório a seguir, por padrão: `TOE_<DATETIME>_<EXECUTIONID>`. Se você não especificar o diretório de log, AWSTOE usa o diretório de trabalho atual (`.`).
+ **LogS3 BucketName** (String) — Se os registros do componente estiverem armazenados no Amazon S3 (recomendado) AWSTOE , carrega os registros do aplicativo do componente no bucket do S3 nomeado nesse parâmetro.
+ **LogS3 BucketOwner** (String) — Se os logs do componente estiverem armazenados no Amazon S3 (recomendado), esse é o ID da conta do proprietário do bucket em AWSTOE que grava os arquivos de log.
+ **LogS3 KeyPrefix** (String) — Se os logs do componente estiverem armazenados no Amazon S3 (recomendado), esse é o prefixo da chave de objeto do S3 para a localização do log no bucket.
+ **parameters** (matriz de objetos): uma matriz de objetos de pares de valores-chave que representam parâmetros que se aplicam globalmente a todos os componentes incluídos na execução atual do comando **run**.
  + **nome** (string, obrigatório): o nome do parâmetro global.
  + **valor** (String, obrigatório): o valor a ser passado para todos os documentos do componente do parâmetro nomeado.
+ **fases** (String): uma lista separada por vírgulas que especifica quais fases devem ser executadas a partir dos documentos do componente YAML. Se um documento do componente incluir fases adicionais, elas não serão executadas.
+ **StateDirectory** (String): o caminho do arquivo em que os arquivos de rastreamento de estado são armazenados.
+ **traço** (Boolean): habilita o log detalhado no console.

**Exemplos**  
O exemplo a seguir mostra um arquivo de configuração de entrada que executa as fases `build` e `test` para dois documentos de componentes: `sampledoc.yaml` e `conversation-intro.yaml`. Cada documento de componente tem um parâmetro que se aplica somente a si mesmo, e ambos usam um parâmetro compartilhado. O parâmetro `project` se aplica aos dois documentos de componentes.

```
{
   "documents": [
     {
       "path": "<file path>/awstoe/sampledoc.yaml>",
       "parameters": [
         {
           "name": "dayofweek",
           "value": "Monday"
         }
       ]
     },
     {
       "path": "<file path>/awstoe/conversation-intro.yaml>",
       "parameters": [
         {
           "name": "greeting",
           "value": "Hello, HAL."
         }
       ]
     }
   ],
   "phases": "build,test",
   "parameters": [
     {
       "name": "project",
       "value": "examples"
     }
   ],
   "cwLogGroup": "<log_group_name>",
   "cwLogStream": "<log_stream_name>",
   "documentS3BucketOwner": "<owner_aws_account_number>",
   "executionId": "<id_number>",
   "logDirectory": "<local_directory_path>",
   "logS3BucketName": "<bucket_name_for_log_files>",
   "logS3KeyPrefix": "<key_prefix_for_log_files>",
   "logS3BucketOwner": "<owner_aws_account_number>"
 }
```