

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

# Image Builder イメージ用のカスタムコンポーネントの開発
<a name="create-custom-components"></a>

独自のコンポーネントを作成すると、独自の仕様に正確に従って Image Builder イメージをカスタマイズできます。Image Builder イメージまたはコンテナレシピ用のカスタムコンポーネントを開発するには、次の手順に従います。

1. コンポーネントドキュメントを開発してローカルで検証する場合は、 AWS Task Orchestrator and Executor (AWSTOE) アプリケーションをインストールしてローカルマシンにセットアップできます。詳細については、「[を使用してカスタムコンポーネントを開発するための手動セットアップ AWSTOE](toe-get-started.md)」を参照してください。

1. コンポーネントドキュメントフレームワークを使用する AWSTOE コンポーネントドキュメントを作成します。ドキュメントフレームワークの詳細については、「[カスタム AWSTOE コンポーネントのコンポーネントドキュメントフレームワークを使用する](toe-use-documents.md)」のドキュメントを参照してください。

1. カスタムコンポーネントの作成時には、コンポーネントドキュメントを指定します。詳細については、「[Image Builder を使用したカスタムコンポーネントの作成](create-component.md)」を参照してください。

**Topics**
+ [Image Builder でのカスタムコンポーネント用 YAML コンポーネントドキュメントの作成](create-component-yaml.md)
+ [Image Builder を使用したカスタムコンポーネントの作成](create-component.md)

# 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 が正しい形式であることを確認してください。

------

# Image Builder を使用したカスタムコンポーネントの作成
<a name="create-component"></a>

コンポーネントドキュメントが完成したら、それを使用して、Image Builder レシピで使用できるカスタムコンポーネントを作成できます。カスタムコンポーネントは、Image Builder コンソール、API か SDK、またはコマンドラインから作成できます。入力パラメータを持つカスタムコンポーネントを作成してレシピで使用する方法の詳細については、「[チュートリアル: 入力パラメータを持つカスタムコンポーネントを作成する](tutorial-component-parameters.md)」を参照してください。

以下のセクションでは、コンソールまたは AWS CLIからコンポーネントを作成する方法を示します。

**Topics**
+ [コンソールでのカスタムモデルコンポーネントの作成](#create-component-ib-console)
+ [からカスタムコンポーネントを作成する AWS CLI](#create-component-ib-cli)
+ [スクリプトをインポートして からコンポーネントを作成する AWS CLI](#import-component-cli)
+ [自動ビルドバージョン管理](#auto-build-version-management)
+ [バージョンリファレンスの使用](#using-version-references)

## コンソールでのカスタムモデルコンポーネントの作成
<a name="create-component-ib-console"></a>

Image Builder コンソールから AWSTOE アプリケーションコンポーネントを作成するには、次の手順に従います。

1. [https://console.aws.amazon.com/imagebuilder/](https://console.aws.amazon.com/imagebuilder/) で、EC2 Image Builder コンソールを開きます。

1. ナビゲーションペインから **コンポーネント** を選択します。次に **コンポーネントを作成** を選択します。

1. 「**コンポーネントの作成**」ページの「**コンポーネントの詳細**」で、次のように入力します。

   1. **イメージオペレーティングシステム (OS)**。コンポーネントと互換性のあるオペレーティングシステムを指定します。

   1. **コンポーネントカテゴリ**。ドロップダウンから、作成するビルドコンポーネントまたはテストコンポーネントのタイプを選択します。

   1. **コンポーネント名**。コンポーネントの名前を入力します。

   1. **コンポーネントのバージョン**。コンポーネントのバージョン番号を入力します。

   1. **説明**。ジョブの説明を追加して、ジョブを識別することも可能です。

   1. **説明の変更**。このバージョンのコンポーネントに加えられた変更点を理解しやすいように、オプションで説明を入力します。

1. 「**定義文書**」セクションのデフォルトオプションは「**文書コンテンツの定義**」です。コンポーネントドキュメントは、イメージを作成するために Image Builder がビルドインスタンスとテストインスタンスで実行するアクションを定義します。

   「**コンテンツ**」ボックスに、YAML コンポーネントドキュメントの内容を入力します。Linux 用の Hello World サンプルから始めるには、「**サンプルを使用する**」オプションを選択します。YAML コンポーネントドキュメントの作成方法や、そのページから UpdateOS サンプルをコピーして貼り付ける方法について詳しくは、[Image Builder でのカスタムコンポーネント用 YAML コンポーネントドキュメントの作成](create-component-yaml.md)を参照してください。

1. コンポーネントの詳細を入力したら、「**コンポーネントを作成**」を選択します。
**注記**  
レシピを作成または更新するときに新しいコンポーネントを表示するには、ビルドまたはテスト用のコンポーネントリストに **Owned by me** フィルタを適用します。フィルタは、コンポーネントリストの上部にある、検索ボックスの横にあります。

1. コンポーネントを削除するには、**コンポーネント** ページで、削除するコンポーネントの横にあるチェックボックスをオンにします。** Actions ** （アクション）ドロップダウンから** Deploy API **( デプロイAPI ）を選択します。

**コンポーネントの更新**  
新しいコンポーネントバージョンを作成するには、次の手順に従います。

1. どこから始めるかによって:
   + **コンポーネント**リストページから — コンポーネント名の横にあるチェックボックスを選択し、「**アクション**」メニューから「**新規バージョンを作成**」を選択します。
   + コンポーネントの詳細ページから — 見出しの右上隅にある **新規バージョンを作成** ボタンをクリックします。

1. 「**Create Component**」ページが表示されると、コンポーネント情報には現在の値が既に入力されています。「コンポーネントを作成」の手順に従って、コンポーネントを更新します。これにより、**コンポーネントバージョン**には固有のセマンティックバージョンを確実に入力できます。Image Builder リソースのセマンティックバージョニングの詳細については、[Image Builder でのセマンティックバージョニング](ibhow-semantic-versioning.md)を参照してください。

## からカスタムコンポーネントを作成する AWS CLI
<a name="create-component-ib-cli"></a>

このセクションでは、次のように、 で Image Builder コマンドをセットアップして使用 AWS CLI して AWSTOE アプリケーションコンポーネントを作成する方法について説明します。
+ YAML コンポーネントドキュメントを S3 バケットにアップロードし、コマンドラインから参照できるようにします。
+ **create-component** コマンドを使用して AWSTOE アプリケーションコンポーネントを作成します。
+ **list-components**コマンドと名前フィルタを使用してコンポーネントのバージョンを一覧表示し、既に存在するバージョンを確認します。この出力を使用して、更新に必要な次のバージョンを決定できます。

入力 YAML ドキュメントから AWSTOE アプリケーションコンポーネントを作成するには、イメージオペレーティングシステムプラットフォームに一致するステップに従います。

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

**アプリケーションコンポーネントドキュメントを Amazon S3 に保存する**

S3 バケットは、 AWSTOE アプリケーションコンポーネントのソースドキュメントのリポジトリとして使用できます。コンポーネントドキュメントを保存するには、次の手順に従います。
+ 

**ドキュメントを Amazon S3 にアップロードする**

  ドキュメントが 64 KB 未満の場合は、このステップをスキップできます。64 KB とその以上のサイズのドキュメントは Amazon S3 に保存する必要があります。

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

**YAML ドキュメントからコンポーネントを作成する**

で使用する**create-component**コマンドを効率化するには AWS CLI、コマンドに渡すすべてのコンポーネントパラメータを含む JSON ファイルを作成します。前の手順で作成した `update-linux-os.yaml` ドキュメントの場所を含めてください。`uri`キー値のペアには、ファイル参照が含まれます。
**注記**  
JSON ファイル内のデータ値の命名規則は、Image Builder API オペレーションリクエストパラメータに指定されているパターンに従います。API コマンドリクエストパラメータを確認するには、EC2 Image Builder API リファレンスの [CreateComponent](https://docs.aws.amazon.com/imagebuilder/latest/APIReference/API_CreateComponent.html) コマンドを参照してください。  
データ値をコマンドラインパラメータとして指定するには、AWS CLI コマンドリファレンスで指定されているパラメータ名を参照してください。

1. 

**CLI 入力 JSON ファイルの作成**

   ファイル編集ツールを使用して、`create-update-linux-os-component.json` という名前のファイルを作成します。次の内容を含めます:

   ```
   {
   	"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. 

**コンポーネントを作成する**

   以下のコマンドを使用して、前のステップで作成した JSON ファイルのファイル名を参照してコンポーネントを作成します。

   ```
   aws imagebuilder create-component --cli-input-json file://create-update-linux-os-component.json
   ```
**注記**  
JSON ファイルパスの先頭に `file://` 表記を含める必要があります。
JSON ファイルのパスは、コマンドを実行するベースオペレーティングシステムに適した規則に従う必要があります。例えば、Windows ではディレクトリパスを表すためにバックスプラッシュ (\$1) が使用され、Linux と macOS ではフォーワードスラッシュ (/) が使用されます。

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

**アプリケーションコンポーネントドキュメントを Amazon S3 に保存する**

S3 バケットは、 AWSTOE アプリケーションコンポーネントのソースドキュメントのリポジトリとして使用できます。コンポーネントドキュメントを保存するには、次の手順に従います。
+ 

**ドキュメントを Amazon S3 にアップロードする**

  ドキュメントが 64 KB 未満の場合は、このステップをスキップできます。64 KB とその以上のサイズのドキュメントは Amazon S3 に保存する必要があります。

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

**YAML ドキュメントからコンポーネントを作成する**

で使用する**create-component**コマンドを効率化するには AWS CLI、コマンドに渡すすべてのコンポーネントパラメータを含む JSON ファイルを作成します。前の手順で作成した `update-windows-os.yaml` ドキュメントの場所を含めてください。`uri`キー値のペアには、ファイル参照が含まれます。
**注記**  
JSON ファイル内のデータ値の命名規則は、Image Builder API オペレーションリクエストパラメータに指定されているパターンに従います。API コマンドリクエストパラメータを確認するには、EC2 Image Builder API リファレンスの [CreateComponent](https://docs.aws.amazon.com/imagebuilder/latest/APIReference/API_CreateComponent.html) コマンドを参照してください。  
データ値をコマンドラインパラメータとして指定するには、AWS CLI コマンドリファレンスで指定されているパラメータ名を参照してください。

1. 

**CLI 入力 JSON ファイルの作成**

   ファイル編集ツールを使用して、`create-update-windows-os-component.json` という名前のファイルを作成します。次の内容を含めます:

   ```
   {
   	"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"
   	}
   }
   ```
**注記**  
JSON ファイルパスの先頭に `file://` 表記を含める必要があります。
JSON ファイルのパスは、コマンドを実行するベースオペレーティングシステムに適した規則に従う必要があります。例えば、Windows ではディレクトリパスを表すためにバックスプラッシュ (\$1) が使用され、Linux と macOS ではフォーワードスラッシュ (/) が使用されます。

1. 

**コンポーネントを作成する**

   以下のコマンドを使用して、前のステップで作成した JSON ファイルのファイル名を参照してコンポーネントを作成します。

   ```
   aws imagebuilder create-component --cli-input-json file://create-update-windows-os-component.json
   ```
**注記**  
JSON ファイルパスの先頭に `file://` 表記を含める必要があります。
JSON ファイルのパスは、コマンドを実行するベースオペレーティングシステムに適した規則に従う必要があります。例えば、Windows ではディレクトリパスを表すためにバックスプラッシュ (\$1) が使用され、Linux と macOS ではフォーワードスラッシュ (/) が使用されます。

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

**アプリケーションコンポーネントドキュメントを Amazon S3 に保存する**

S3 バケットは、 AWSTOE アプリケーションコンポーネントのソースドキュメントのリポジトリとして使用できます。コンポーネントドキュメントを保存するには、次の手順に従います。
+ 

**ドキュメントを Amazon S3 にアップロードする**

  ドキュメントが 64 KB 未満の場合は、このステップをスキップできます。64 KB とその以上のサイズのドキュメントは Amazon S3 に保存する必要があります。

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

**YAML ドキュメントからコンポーネントを作成する**

で使用する**create-component**コマンドを効率化するには AWS CLI、コマンドに渡すすべてのコンポーネントパラメータを含む JSON ファイルを作成します。前の手順で作成した `wget-macos.yaml` ドキュメントの場所を含めてください。`uri`キー値のペアには、ファイル参照が含まれます。
**注記**  
JSON ファイル内のデータ値の命名規則は、Image Builder API オペレーションリクエストパラメータに指定されているパターンに従います。API コマンドリクエストパラメータを確認するには、EC2 Image Builder API リファレンスの [CreateComponent](https://docs.aws.amazon.com/imagebuilder/latest/APIReference/API_CreateComponent.html) コマンドを参照してください。  
データ値をコマンドラインパラメータとして指定するには、AWS CLI コマンドリファレンスで指定されているパラメータ名を参照してください。

1. 

**CLI 入力 JSON ファイルの作成**

   ファイル編集ツールを使用して、`install-wget-macos-component.json` という名前のファイルを作成します。次の内容を含めます:

   ```
   {
   	"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. 

**コンポーネントを作成する**

   以下のコマンドを使用して、前のステップで作成した JSON ファイルのファイル名を参照してコンポーネントを作成します。

   ```
   aws imagebuilder create-component --cli-input-json file://install-wget-macos-component.json
   ```
**注記**  
JSON ファイルパスの先頭に `file://` 表記を含める必要があります。
JSON ファイルのパスは、コマンドを実行するベースオペレーティングシステムに適した規則に従う必要があります。例えば、Windows ではディレクトリパスを表すためにバックスプラッシュ (\$1) が使用され、Linux と macOS ではフォーワードスラッシュ (/) が使用されます。

------

### AWSTOE からの更新のコンポーネントバージョニング AWS CLI
<a name="component-update-cli"></a>

AWSTOE コンポーネント名とバージョンは、コンポーネントのプレフィックスの後にコンポーネントの Amazon リソースネーム (ARN) に埋め込まれます。コンポーネントの新しいバージョンにはそれぞれ固有の ARN があります。新しいバージョンを作成する手順は、そのコンポーネント名に対してセマンティックバージョンが一意である限り、新しいコンポーネントを作成する手順と完全に同じです。Image Builder リソースのセマンティックバージョニングの詳細については、[Image Builder でのセマンティックバージョニング](ibhow-semantic-versioning.md)を参照してください。

次の論理的なバージョンを割り当てるために、まず変更したいコンポーネントの既存のバージョンのリストを取得してください。で **list-components** コマンドを使用し AWS CLI、名前をフィルタリングします。

この例では、以前の Linux の例で作成したコンポーネントの名前をフィルタします。作成したコンポーネントをリストアップするには、**create-component**コマンドで使用した JSON ファイルの`name`パラメータの値を使用する。

```
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"
        }
    ]
}
```

結果に基づいて、次のバージョンを決定できます。

## スクリプトをインポートして からコンポーネントを作成する AWS CLI
<a name="import-component-cli"></a>

シナリオによっては、既存のスクリプトから始める方が簡単な場合もあります。このシナリオでは、以下の例を使うことができます。

この例では、`import-component.json` (図のように) というファイルがあることを前提としています。このファイルは、既に `amzn-s3-demo-source-bucket` にアップロードされている `AdminConfig.ps1` というPowerShell スクリプトを直接に参照していることを注意してください。現在、コンポーネント`SHELL`がサポートされている`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"
}
```

インポートされたスクリプトからコンポーネントを作成するには、次のコマンドを実行します。

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

## 自動ビルドバージョン管理
<a name="auto-build-version-management"></a>

既存のコンポーネントと同じ名前とセマンティックバージョンを持つコンポーネントを作成すると、Image Builder は自動的にビルドバージョンをインクリメントします (たとえば、 `/1` から `/2`、 から `/3`など）。これにより、バージョン番号を手動で管理しなくてもコンポーネントを反復更新できます。これは、CI/CD パイプラインやinfrastructure-as-codeのデプロイで特に役立ちます。コンポーネントのコンテンツが以前のビルドバージョンと同じ場合、Image Builder は を返し`ResourceAlreadyExistsException`、重複するコンポーネントがサービスクォータを消費しないようにします。

## バージョンリファレンスの使用
<a name="using-version-references"></a>

コンポーネントを作成または取得すると、Image Builder は latestVersionReferences オブジェクトにワイルドカードバージョンパターンを持つ構築済みの ARNs を自動的に提供します。これらのリファレンスにより、ARNs を手動で解析することなく、レシピやパイプラインでコンポーネントの最新バージョンを簡単に使用できます。

**適切なバージョンリファレンスの選択**
+ latestVersionArn (x.x.x) - 常に最新のコンポーネントバージョンを使用してください。
+ atestMajorVersionArn (1.x.x) - メジャーバージョン内で最新のマイナーバージョンとパッチバージョンを使用します。
+ latestMinorVersionArn (1.2.x) - 最新のパッチバージョンのみを使用します。
+ latestPatchVersionArn (1.2.3) - 特定のセマンティックバージョンを参照しますが、最新のビルドバージョンを取得します。

**注記**  
予期しない料金が発生しないように、このガイドの例で作成したリソースとパイプラインは必ずクリーンアップしてください。Image Builder でのリソースの削除については、「[未使用または古くなった Image Builder リソースの削除](delete-resources.md)」を参照してください。