

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

# チュートリアル: 入力パラメータを持つカスタムコンポーネントを作成する
<a name="tutorial-component-parameters"></a>

コンポーネントパラメータの作成と設定を含む Image Builder コンポーネントは、EC2 Image Builder コンソールから直接、 から、 AWS CLIまたは Image Builder API または SDKs から管理できます。このセクションでは、コンポーネントでのパラメータの作成と使用、および実行時の Image Builder コンソールと AWS CLI コマンドを使用したコンポーネントパラメータの設定について説明します。

**重要**  
コンポーネントパラメータはプレーンテキストの値で、 AWS CloudTrailに記録されます。シークレットを保存するには、 AWS Secrets Manager または AWS Systems Manager Parameter Store を使用することをお勧めします。Secrets Manager の詳細については、AWS Secrets Manager ユーザーガイドの [Secrets Manager とは](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)を参照してください。 AWS Systems Manager パラメータストアについては、AWS Systems Manager ユーザーガイドの[AWS Systems Manager パラメータストア](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html)を参照。

## YAML コンポーネントドキュメントでのパラメータの使用
<a name="component-params-yaml"></a>

コンポーネントをビルドするには、YAML または JSON アプリケーションコンポーネントドキュメントを提供する必要があります。このドキュメントには、フェーズとステップの間に実行される、イメージをカスタマイズするために定義したコードが含まれています。コンポーネントを参照するレシピでは、ランタイムにパラメータを設定して値をカスタマイズできます。デフォルト値は、パラメータが特定の値に設定されていない場合に有効になります。

**入力パラメータを使用してコンポーネントドキュメントを作成する**  
このセクションでは、YAML コンポーネントドキュメントで入力パラメータを定義し使用する方法を示します。

Image Builder のビルドインスタンスまたはテストインスタンスでパラメータを使用してコマンドを実行する YAML アプリケーションコンポーネントドキュメントを作成するには、ご使用のイメージオペレーティングシステムに対応する手順に従ってください。

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

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

```
# Document Start
# 
name: "HelloWorldTestingDocument-Linux"
description: "Hello world document to demonstrate parameters."
schemaVersion: 1.0
parameters:
  - MyInputParameter:
      type: string
      default: "It's me!"
      description: This is an input parameter.
phases:
  - name: build
    steps:
      - name: HelloWorldStep
        action: ExecuteBash
        inputs:
          commands:
            - echo "Hello World! Build phase. My input parameter value is {{ MyInputParameter }}"

  - name: validate
    steps:
      - name: HelloWorldStep
        action: ExecuteBash
        inputs:
          commands:
            - echo "Hello World! Validate phase. My input parameter value is {{ MyInputParameter }}"

  - name: test
    steps:
      - name: HelloWorldStep
        action: ExecuteBash
        inputs:
          commands:
            - echo "Hello World! Test phase. My input parameter value is {{ MyInputParameter }}"
# Document End
```

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

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

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

```
# Document Start
# 
name: "HelloWorldTestingDocument-Windows"
description: "Hello world document to demonstrate parameters."
schemaVersion: 1.0
parameters:
  - MyInputParameter:
      type: string
      default: "It's me!"
      description: This is an input parameter.
phases:
  - name: build
    steps:
      - name: HelloWorldStep
        action: ExecutePowerShell
        inputs:
          commands:
            - Write-Host "Hello World! Build phase. My input parameter value is {{ MyInputParameter }}"

  - name: validate
    steps:
      - name: HelloWorldStep
        action: ExecutePowerShell
        inputs:
          commands:
            - Write-Host "Hello World! Validate phase. My input parameter value is {{ MyInputParameter }}"

  - name: test
    steps:
      - name: HelloWorldStep
        action: ExecutePowerShell
        inputs:
          commands:
            - Write-Host "Hello World! Test phase. My input parameter value is {{ MyInputParameter }}"
# Document End
```

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

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

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

```
# Document Start
# 
name: "HelloWorldTestingDocument-macOS"
description: "Hello world document to demonstrate parameters."
schemaVersion: 1.0
parameters:
  - MyInputParameter:
      type: string
      default: "It's me!"
      description: This is an input parameter.
phases:
  - name: build
    steps:
      - name: HelloWorldStep
        action: ExecuteBash
        inputs:
          commands:
            - echo "Hello World! Build phase. My input parameter value is {{ MyInputParameter }}"

  - name: validate
    steps:
      - name: HelloWorldStep
        action: ExecuteBash
        inputs:
          commands:
            - echo "Hello World! Validate phase. My input parameter value is {{ MyInputParameter }}"

  - name: test
    steps:
      - name: HelloWorldStep
        action: ExecuteBash
        inputs:
          commands:
            - echo "Hello World! Test phase. My input parameter value is {{ MyInputParameter }}"
# Document End
```

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

------

 AWSTOE アプリケーションコンポーネントドキュメントのフェーズ、ステップ、構文の詳細については、「[AWSTOEでのドキュメントの使用](https://docs.aws.amazon.com/imagebuilder/latest/userguide/toe-use-documents.html)」を参照してください。パラメータとその要件についての詳細は、**変数の定義と参照 AWSTOE**ページの[パラメータ](toe-user-defined-variables.md#user-defined-vars-parameters)セクションを参照のこと。

**YAML コンポーネントドキュメントからコンポーネントを作成する**  
 AWSTOE コンポーネントの作成に使用する方法にかかわらず、YAML アプリケーションコンポーネントドキュメントは常にベースラインとして必要です。
+ Image Builder コンソールを使用して YAML ドキュメントから直接コンポーネントを作成するには、「[コンソールでのカスタムモデルコンポーネントの作成](create-component.md#create-component-ib-console)」を参照してください。
+ コマンドラインから Image Builder の **create-component** コマンドを使用してコンポーネントを作成するには、「[からカスタムコンポーネントを作成する AWS CLI](create-component.md#create-component-ib-cli)」を参照してください。これらの例の YAML ドキュメント名を Hello World YAML ドキュメントの名前 (`hello-world-test.yaml`) に置き換えてください。

## コンソールでの Image Builder レシピのコンポーネントパラメータの設定
<a name="recipe-set-component-params"></a>

コンポーネントパラメータの設定は、イメージレシピでもコンテナレシピでも同じように機能します。新しいレシピ、またはレシピの新しいバージョンを作成するときは、[**ビルドコンポーネント]**リストと[**テストコンポーネント**]リストから、どのコンポーネントを含めるかを選択します。コンポーネントリストには、イメージ用に選択したベースオペレーティングシステムに該当するコンポーネントが含まれています。

コンポーネントを選択すると、そのコンポーネントはコンポーネントリストのすぐ下の [**選択したコンポーネント**] セクションに表示されます。選択した各コンポーネントの設定オプションが表示されます。コンポーネントに入力パラメータが定義されている場合、**[入力パラメータ]**という展開可能なセクションとして表示されます。

コンポーネントに定義されている各パラメータには、以下のパラメータ設定が表示されます。
+ **パラメータ名** (編集不可) - パラメータの名前。
+ **説明** (編集不可) - パラメータの説明
+ **型** (編集不可) - パラメータ値のデータ型。
+ **値** – パラメータの値。このレシピでこのコンポーネントを初めて使用する場合、入力パラメータにデフォルト値が定義されていると、そのデフォルト値が **[値]** ボックスにグレーアウトされたテキストで表示されます。他の値を入力しない場合、Image Builder はデフォルト値を使用します。