EC2 Image Builder でカスタムコンポーネントを作成する - EC2 Image Builder

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

EC2 Image Builder でカスタムコンポーネントを作成する

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

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

Image Builder コンソールからカスタムコンポーネントを作成する

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

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

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

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

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

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

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

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

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

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

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

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

  5. コンポーネントの詳細を入力したら、「コンポーネントを作成」を選択します。

    注記

    レシピを作成または更新するときに新しいコンポーネントを表示するには、ビルドまたはテスト用のコンポーネントリストに Owned by me フィルタを適用します。フィルタは、コンポーネントリストの上部にある、検索ボックスの横にあります。

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

コンポーネントを更新する

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

  1. どこから始めるかによって:

    • コンポーネントリストページから — コンポーネント名の横にあるチェックボックスを選択し、「アクション」メニューから「新規バージョンを作成」を選択します。

    • コンポーネントの詳細ページから — 見出しの右上隅にある 新規バージョンを作成 ボタンをクリックします。

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

からカスタムコンポーネントを作成する AWS CLI

このセクションでは、次のように、 で 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://my-s3-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「 コマンド」を参照してください。

データ値をコマンドラインパラメータとして指定するには、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://my-s3-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" } }
    注記
    • JSON ファイルパスの先頭に file:// 表記を含める必要があります。

    • JSON ファイルのパスは、コマンドを実行するベースオペレーティングシステムに適した規則に従う必要があります。例えば、Windows ではディレクトリパスを参照するためにバックスプラッシュ (|) が使用され、Linux ではフォーワードスラッシュ (/) が使用されます。

  2. コンポーネントを作成する

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

    aws imagebuilder create-component --cli-input-json file://create-update-linux-os-component.json
    注記
    • JSON ファイルパスの先頭に file:// 表記を含める必要があります。

    • JSON ファイルのパスは、コマンドを実行するベースオペレーティングシステムに適した規則に従う必要があります。例えば、Windows ではディレクトリパスを参照するためにバックスプラッシュ (|) が使用され、Linux ではフォーワードスラッシュ (/) が使用されます。

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

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

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

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

    aws s3 cp update-windows-os.yaml s3://my-s3-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「 コマンド」を参照してください。

データ値をコマンドラインパラメータとして指定するには、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://my-s3-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 ではディレクトリパスを参照するためにバックスプラッシュ (|) が使用され、Linux ではフォーワードスラッシュ (/) が使用されます。

  2. コンポーネントを作成する

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

    aws imagebuilder create-component --cli-input-json file://create-update-windows-os-component.json
    注記
    • JSON ファイルパスの先頭に file:// 表記を含める必要があります。

    • JSON ファイルのパスは、コマンドを実行するベースオペレーティングシステムに適した規則に従う必要があります。例えば、Windows ではディレクトリパスを参照するためにバックスプラッシュ (|) が使用され、Linux ではフォーワードスラッシュ (/) が使用されます。

AWSTOE からの更新のコンポーネントバージョニング AWS CLI

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

次の論理的なバージョンを割り当てるために、まず変更したいコンポーネントの既存のバージョンのリストを取得してください。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

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

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