

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

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

------