

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Image Builder でのカスタムコンポーネント用 YAML コンポーネントドキュメントの作成
<a name="create-component-yaml"></a>

コンポーネントをビルドするには、YAML または JSON アプリケーションコンポーネントドキュメントを提供する必要があります。このドキュメントには、フェーズとステップの間に実行される、イメージをカスタマイズするために定義したコードが含まれています。

このセクションの例の一部は、コンポーネント管理アプリケーションの`UpdateOS`アクションモジュールを呼び出すビルド AWSTOE コンポーネントを作成します。モジュールでは、オペレーティングシステムを更新します。`UpdateOS` アクションの使用方法の詳細については、[UpdateOS](toe-action-modules.md#action-modules-updateos)を参照してください。

macOS オペレーティングシステムの例では、`ExecuteBash` アクションモジュールを使用して、`wget` ユーティリティをインストールして検証します。`UpdateOS` アクションモジュールは macOS をサポートしていません。`ExecuteBash` アクションの使用方法の詳細については、[ExecuteBash](toe-action-modules.md#action-modules-executebash)を参照してください。 AWSTOE アプリケーションコンポーネントドキュメントのフェーズ、ステップ、構文の詳細については、「[AWSTOEでのドキュメントの使用](https://docs.aws.amazon.com/imagebuilder/latest/userguide/toe-use-documents.html)」を参照してください。

**注記**  
Image Builder は、コンポーネントドキュメントで定義されているフェーズから、次のようにコンポーネントタイプを決定します。  
**ビルド** — これはデフォルトのコンポーネントタイプです。テストコンポーネントとして分類されないものはすべてビルドコンポーネントです。このタイプのコンポーネントは*ビルドステージ*で実行されます。このビルドコンポーネントに`test`フェーズが定義されている場合、そのフェーズはテストステージ中に実行されます。
**テスト** — テストコンポーネントとして認定されるには、コンポーネントドキュメントに`test`という名前のフェーズが 1 つだけ含まれている必要があります。ビルドコンポーネントの設定に関連するテストでは、スタンドアロンのテストコンポーネントを使用しないことをお勧めします。むしろ、関連するビルドコンポーネントの`test`フェーズを使用してください。
Image Builder がステージとフェーズを使用してビルドプロセスのコンポーネントワークフローを管理する方法の詳細については、[コンポーネントを使用した Image Builder イメージのカスタマイズ](manage-components.md)を参照してください。

サンプルアプリケーション用の YAML アプリケーションコンポーネントドキュメントを作成するには、使用しているイメージオペレーティングシステムに対応するタブの手順に従ってください。

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

**YAML コンポーネントファイルを作成する**  
ファイル編集ツールを使用して、コンポーネントドキュメントを作成します。ドキュメントの例では、次のコンテンツを含む `update-linux-os.yaml` という名前のファイルを使用します。

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

**ヒント**  
このオンライン [YAML Validator](https://jsonformatter.org/yaml-validator) のようなツールを使用するか、コード環境の YAML lint 拡張機能を使用して、YAML が正しい形式であることを確認してください。

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

**YAML コンポーネントファイルを作成する**  
ファイル編集ツールを使用して、コンポーネントドキュメントを作成します。ドキュメントの例では、次のコンテンツを含む `update-windows-os.yaml` という名前のファイルを使用します。

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

**ヒント**  
このオンライン [YAML Validator](https://jsonformatter.org/yaml-validator) のようなツールを使用するか、コード環境の YAML lint 拡張機能を使用して、YAML が正しい形式であることを確認してください。

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

**YAML コンポーネントファイルを作成する**  
ファイル編集ツールを使用して、コンポーネントドキュメントを作成します。ドキュメントの例では、次のコンテンツを含む `wget-macos.yaml` という名前のファイルを使用します。

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

**ヒント**  
このオンライン [YAML Validator](https://jsonformatter.org/yaml-validator) のようなツールを使用するか、コード環境の YAML lint 拡張機能を使用して、YAML が正しい形式であることを確認してください。

------