イメージレシピの新しいバージョンを作成する - EC2 Image Builder

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

イメージレシピの新しいバージョンを作成する

このセクションでは、イメージレシピの新しいバージョンを作成する方法について説明します。

コンソールからの新しいイメージレシピバージョンの作成

新しいレシピバージョンを作成することは、新しいレシピを作成することと実質的に同じです。違いは、ほとんどの場合、基本レシピに合わせて特定の詳細が事前に選択されていることです。以下のリストは、新しいレシピを作成することと、既存のレシピの新しいバージョンを作成することの違いを説明しています。

新しいバージョンの基本レシピの詳細
  • 名前 - 編集不可。

  • バージョン – 必須。この基本情報には、現在のバージョンやシーケンスがあらかじめ入力されていません。作成したいバージョン番号を<major>.<minor>.<patch>の形式で入力する。そのバージョンが既に存在している場合は、エラーが発生します。

  • イメージを選択 オプション — 事前に選択されていますが、編集できます。ベースイメージのソースの選択を変更すると、選択した元のオプションに依存するその他の詳細が失われる可能性があります。

    基本イメージの選択に関連する詳細を表示するには、選択内容と一致するタブを選択してください。

    Managed image
    • イメージオペレーティングシステム(OS) - 編集不可。

    • イメージ名 — 既存のレシピで選択した基本イメージの組み合わせに基づいて事前に選択されています。ただし、イメージを選択 オプションを変更すると、事前に選択した イメージ名 は失われます。

    • 自動バージョンアップオプション - 基本レシピと一致しません。このイメージオプションのデフォルトは選択した OS バージョンを使用です。

      重要

      セマンティックバージョニングを使用してパイプラインのビルドを開始する場合は、この値を利用可能な最新の OS バージョンを使用するに変更してください。Image Builder リソースのセマンティックバージョニングの詳細については、Image Builder でのセマンティックバージョニングを参照してください。

    AWS Marketplace image
    • サブスクリプション – このタブは開いていて、 のサブスクライブされたイメージは、基本レシピに合わせて事前に選択 AWS Marketplace されている必要があります。レシピがベースイメージとして使用するイメージを変更すると、選択した元のイメージに依存するその他の詳細が失われる可能性があります。

    AWS Marketplace 製品の詳細については、「 AWS Marketplace 購入者ガイド」の「製品の購入」を参照してください。

    Custom AMI
    • AMI ID – 必須。ただし、この設定には元のエントリがあらかじめ入力されていません。ベースイメージの AMI ID を入力する必要があります。

  • インスタンスの設定 — 設定は事前に選択されていますが、編集できます。

    • システムマネージャーエージェント — このチェックボックスをオンまたはオフにして、新しいイメージへのシステムマネージャーエージェントのインストールを制御できます。システムマネージャーエージェントを新しいイメージに含めるには、このチェックボックスはデフォルトでオフになっています。最終イメージから Systems Manager エージェントを削除するには、チェックボックスをオンにして、エージェントが に含まれないようにしますAMI。

    • ユーザーデータ – 構築インスタンスを起動するときにこのエリアを使用して、コマンドまたはコマンドスクリプトを提供で実行します。ただし、この値は、Systems Manager が確実にインストールされるようにするために Image Builder が追加されたコマンドを置き換えます。これらのコマンドには、新しいイメージを作成する前に Image Builder が Linux イメージに対して通常実行するクリーンアップスクリプトが含まれます。

      注記
      • ユーザーデータを入力する場合は、システムマネージャーエージェントをベースイメージにあらかじめインストールするか、ユーザーデータにインストールを含めるようにしてください。

      • Linux イメージの場合は、perform_cleanupユーザーデータスクリプトで指定された空のファイルを作成するコマンドを含めて、クリーンアップ手順を実行するようにしてください。Image Builder はこのファイルを検出し、新しいイメージを作成する前にクリーンアップスクリプトを実行します。詳細とスクリプトのサンプルは「Image Builder でのセキュリティのベストプラクティス」を参照してください。

  • 作業ディレクトリ — 事前に選択されていますが、編集できます。

  • コンポーネント — レシピに既に含まれているコンポーネントは、各コンポーネントリスト (ビルドとテスト) の最後にある 選択されたコンポーネント セクションに表示されます。ニーズに合わせられるように、選択したコンポーネントを削除または並べ替えることができます。

    CIS 強化コンポーネントは、Image Builder レシピの標準コンポーネントの順序付けルールに従っていません。ベンチマークテストが出力イメージに対して実行されるように、CIS強化コンポーネントは常に最後に実行されます。

    注記

    ビルドコンポーネントリストとテストコンポーネントリストには、コンポーネント所有者のタイプに基づいて使用可能なコンポーネントが表示されます。コンポーネントを追加するには、ビルドコンポーネントを追加を選択し、適用する所有権フィルターを選択します。たとえば、 AWS Marketplace 製品に関連付けられているビルドコンポーネントを追加するには、 を選択しますAWS Marketplace。これにより、コンソールインターフェイスの右側に、コンポーネントを一覧表示 AWS Marketplace する選択パネルが開きます。

    CIS コンポーネントで、 を選択しますThird party managed

    選択されたコンポーネントについては、次の設定を指定できます。

    • バージョニングオプション — 事前に選択されていますが、変更できます。イメージビルドで常に最新バージョンのコンポーネントが使用されるように、使用可能な最新のコンポーネントバージョンを使用するオプションを選択することをお勧めします。レシピで特定のコンポーネントバージョンを使用する必要がある場合は、コンポーネントバージョンを指定 を選択し、表示される コンポーネントバージョン ボックスにバージョンを入力できます。

    • 入力パラメータ — コンポーネントが受け付ける入力パラメータを表示します。 には、以前のバージョンのレシピの値があらかじめ入力されています。このレシピでこのコンポーネントを初めて使用する場合、入力パラメータにデフォルト値が定義されていると、そのデフォルト値が [値] ボックスにグレーアウトされたテキストで表示されます。他の値を入力しない場合、Image Builder はデフォルト値を使用します。

      入力パラメータが必須で、コンポーネントにデフォルト値が定義されていない場合は、値を指定する必要があります。必須パラメータのいずれかが不足していてデフォルト値も定義されていない場合、Image Builder はレシピバージョンを作成しません。

      重要

      コンポーネントパラメータはプレーンテキストの値で、 AWS CloudTrailに記録されます。シークレットを保存するには、 AWS Secrets Manager または AWS Systems Manager パラメータストアを使用することをお勧めします。Secrets Manager の詳細については、AWS Secrets Manager ユーザーガイドの Secrets Manager とはを参照してください。 AWS Systems Manager パラメータストアについては、AWS Systems Manager ユーザーガイドのAWS Systems Manager パラメータストアを参照。

    バージョニング管理オプション または [入力パラメータ] の設定を拡張するには、設定名の横にある矢印を選択します。選択したすべてのコンポーネントの設定をすべて展開するには、[すべて展開] スイッチのオンとオフを切り替えます。

  • ストレージ (ボリューム) — あらかじめ入力されています。ルートボリュームのデバイス名スナップショットIOPS選択内容は編集できません。ただし、サイズ など、残りの設定はすべて変更できます。新しいボリュームを追加したり、新規または既存のボリュームを暗号化したりすることもできます。

    Image Builder がソースリージョン (ビルドが実行される地域) のアカウントで作成するイメージのボリュームを暗号化するには、イメージレシピでストレージボリューム暗号化を使用する必要があります。ビルドの配布フェーズで実行される暗号化は、他のアカウントまたはリージョンに配布されるイメージのみに適用されます。

    注記

    ボリュームに暗号化を使用する場合は、ボリュームごとにキーを個別に選択する必要があります。これは、そのキーがルートボリュームに使用されるものと同じ場合でも同様です。

新しいイメージレシピバージョンを作成するには:
  1. レシピの詳細ページの上部で、新しいバージョンを作成 を選択します。これにより、イメージレシピの作成 ページが表示されます。

  2. 新しいバージョンを作成するには、変更を加え、レシピの作成を選択します。

    最終イメージには、 AWS Marketplace イメージ製品とコンポーネントから最大 4 つの製品コードを含めることができます。選択したベースイメージとコンポーネントに 4 つ以上の製品コードが含まれている場合、Image Builder はレシピを作成しようとするとエラーを返します。

イメージパイプラインを作成するときにイメージレシピを作成する方法の詳細については、本ガイドの はじめに セクションの「ステップ 2: レシピを選択する」を参照してください。

を使用してイメージレシピを作成する AWS CLI

で Image Builder create-image-recipe コマンドを使用してイメージレシピを作成するには AWS CLI、次の手順に従います。

前提条件

このセクションの Image Builder コマンドを実行して AWS CLIからイメージレシピを作成する前に、レシピが使用するコンポーネントを作成する必要があります。次のステップのイメージレシピの例は、このガイドの からカスタムコンポーネントを作成する AWS CLI セクションで作成したサンプルコンポーネントを参照しています。

コンポーネントを作成した後、または既存のコンポーネントを使用している場合は、レシピに含める ARNs を書き留めます。

  1. CLI 入力JSONファイルを作成する

    create-image-recipe コマンドのすべての入力をインラインコマンドパラメータで指定できます。ただし、生成されるコマンドはかなり長くなる可能性があります。コマンドを効率化するために、代わりにすべてのレシピ設定を含むJSONファイルを指定できます。

    注記

    JSON ファイル内のデータ値の命名規則は、Image Builder APIアクションリクエストパラメータに指定されているパターンに従います。API コマンドリクエストパラメータを確認するには、EC2Image Builder APIリファレンスCreateImageRecipe コマンドを参照してください。

    データ値をコマンドラインパラメータとして指定するには、AWS CLI コマンドリファレンスで指定されているパラメータ名を参照してください。

    以下に、これらの例で指定するパラメータの概要を示します。

    • 名前 (文字列、必須) — イメージレシピの名前。

    • 説明 (文字列) — イメージレシピの説明。

    • parentImage (文字列、必須) – イメージレシピがカスタマイズしたイメージのベースとして使用するイメージ。値は、ベースイメージARNまたは AMI ID にすることができます。

      注記

      Linux および macOS の例では Image Builder を使用しAMI、Windows の例では を使用しますARN。

    • semanticVersion (文字列、必須) – イメージレシピのセマンティックバージョン。次の形式で表され、各位置に特定のバージョンを示す数値が表示されます。<major>.<minor>.<patch>。例えば、値は 1.0.0 であるかもしれません。Image Builder リソースのセマンティックバージョニングの詳細については、Image Builder でのセマンティックバージョニングを参照してください。

    • コンポーネント (配列、必須) — ComponentConfiguration オブジェクトの配列が含まれます。少なくとも 1 つのビルドコンポーネントを指定する必要があります。

      注記

      Image Builder は、レシピで指定した順序でコンポーネントをインストールします。ただし、ベンチマークテストが出力イメージに対して実行されるように、CIS強化コンポーネントは常に最後に実行されます。

      • コンポーネントARN (文字列、必須) – コンポーネント ARN。

        ヒント

        いずれかの例を使用して独自のイメージレシピを作成するには、レシピに使用しているコンポーネントの ARNsで例ARNsを置き換える必要があります。

      • パラメータ (オブジェクトの配列) — ComponentParameter オブジェクトの配列が含まれます。入力パラメータが必須で、コンポーネントにデフォルト値が定義されていない場合は、値を指定する必要があります。必須パラメータのいずれかが不足していてデフォルト値も定義されていない場合、Image Builder はレシピバージョンを作成しません。

        重要

        コンポーネントパラメータはプレーンテキストの値で、 AWS CloudTrailに記録されます。シークレットを保存するには、 AWS Secrets Manager または AWS Systems Manager パラメータストアを使用することをお勧めします。Secrets Manager の詳細については、AWS Secrets Manager ユーザーガイドの Secrets Manager とはを参照してください。 AWS Systems Manager パラメータストアについては、AWS Systems Manager ユーザーガイドのAWS Systems Manager パラメータストアを参照。

        • 名前 (文字列、必須) — 設定するコンポーネントパラメータの名前。

        • (文字列の配列、必須) — 指定されたコンポーネントパラメータの値を設定する文字列の配列を含みます。コンポーネントにデフォルト値が定義されていて、他の値が指定されていない場合、 はデフォルト値 AWSTOE を使用します。

    • additionalInstanceConfiguration (オブジェクト) — ビルドインスタンスの追加設定と起動スクリプトを指定します。

      • systemsManagerAgent (オブジェクト) – ビルドインスタンス上の Systems Manager エージェントの設定が含まれます。

        • uninstallAfterBuild (ブール値) — 新しい を作成する前に、Systems Manager エージェントを最終的なビルドイメージから削除するかどうかを制御しますAMI。これが true に設定されている場合、エージェントは最終イメージから削除されます。オプションが に設定されている場合false、エージェントは新しい に含まれるように のままになりますAMI。デフォルト値は false です。

          注記

          uninstallAfterBuild 属性が JSON ファイルに含まれておらず、次の条件が true の場合、Image Builder は最終イメージから Systems Manager エージェントを削除して、 で使用できないようにしますAMI。

          • userDataOverride が空であるか、 JSON ファイルから省略されています。

          • Image Builder は、ベースイメージにエージェントがプリインストールされていないオペレーティングシステムのビルドインスタンスに Systems Manager エージェントを自動的にインストールしました。

      • userDataOverride (文字列) — ビルドインスタンスを起動するときに実行するコマンドまたはコマンドスクリプトを指定します。

        注記

        ユーザーデータは常に Base 64 でエンコードされます。例えば、以下のコマンドは IyEvYmluL2Jhc2gKbWtkaXIgLXAgL3Zhci9iYi8KdG91Y2ggL3Zhcg== としてエンコードされます。

        #!/bin/bash mkdir -p /var/bb/ touch /var

        Linux の例では、このエンコードされた値を使用しています。

    Linux

    次の例のベースイメージ (parentImage プロパティ) は ですAMI。を使用する場合はAMI、 へのアクセス権が必要です。またAMI、 はソースリージョン (Image Builder がコマンドを実行するのと同じリージョン) にあるAMI必要があります。ファイルをcreate-image-recipe.jsonの名前で保存し、create-image-recipeコマンドで使用します。

    { "name": "BB Ubuntu Image recipe", "description": "Hello World image recipe for Linux.", "parentImage": "ami-0a01b234c5de6fabc", "semanticVersion": "1.0.0", "components": [ { "componentArn": "arn:aws:imagebuilder:us-west-2:123456789012:component/bb$" } ], "additionalInstanceConfiguration": { "systemsManagerAgent": { "uninstallAfterBuild": true }, "userDataOverride": "IyEvYmluL2Jhc2gKbWtkaXIgLXAgL3Zhci9iYi8KdG91Y2ggL3Zhcg==" } }
    Windows

    次の例は、Windows Server 2016 英語版フルベースイメージの最新バージョンを参照しています。この例ARNの は、指定したセマンティックバージョンフィルター SKU に基づいて、 の最新のイメージを参照しますarn:aws:imagebuilder:us-west-2:aws:image/windows-server-2016-english-full-base-x86/x.x.x

    { "name": "MyBasicRecipe", "description": "This example image recipe creates a Windows 2016 image.", "parentImage": "arn:aws:imagebuilder:us-west-2:aws:image/windows-server-2016-english-full-base-x86/x.x.x", "semanticVersion": "1.0.0", "components": [ { "componentArn": "arn:aws:imagebuilder:us-west-2:123456789012:component/my-example-component/2019.12.02/1" }, { "componentArn": "arn:aws:imagebuilder:us-west-2:123456789012:component/my-imported-component/1.0.0/1" } ] }
    注記

    Image Builder リソースのセマンティックバージョニングの詳細については、Image Builder でのセマンティックバージョニングを参照してください。

    macOS

    次の例のベースイメージ (parentImage プロパティ) は ですAMI。を使用する場合はAMI、 へのアクセス権が必要です。またAMI、 はソースリージョン (Image Builder がコマンドを実行するのと同じリージョン) にあるAMI必要があります。ファイルをcreate-image-recipe.jsonの名前で保存し、create-image-recipeコマンドで使用します。

    { "name": "macOS Catalina Image recipe", "description": "Hello World image recipe for macOS.", "parentImage": "ami-0a01b234c5de6fabc", "semanticVersion": "1.0.0", "components": [ { "componentArn": "arn:aws:imagebuilder:us-west-2:123456789012:component/catalina$" } ], "additionalInstanceConfiguration": { "systemsManagerAgent": { "uninstallAfterBuild": true }, "userDataOverride": "IyEvYmluL2Jhc2gKbWtkaXIgLXAgL3Zhci9iYi8KdG91Y2ggL3Zhcg==" } }
  2. レシピを作成する

    レシピを作成するには以下のコマンドを使用します。--cli-input-json パラメータの前のステップで作成したJSONファイルの名前を指定します。

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

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

    最終イメージには、 AWS Marketplace イメージ製品とコンポーネントから最大 4 つの製品コードを含めることができます。選択したベースイメージとコンポーネントに 4 つ以上の製品コードが含まれている場合、Image Builder はcreate-image-recipeコマンドの実行時にエラーを返します。

VM をベースイメージとしてコンソールにインポートする

このセクションでは、仮想マシン (VM) をイメージレシピのベースイメージとしてインポートする方法に焦点を当てます。レシピやレシピバージョンの作成に関連する他の手順については、ここでは説明しません。Image Builder コンソールのパイプライン作成ウィザードを使用して新しいイメージレシピを作成するその他の手順については、「パイプラインウィザード: 作成 AMI」を参照してください。新しいイメージレシピまたはレシピバージョンを作成するその他の手順については、「イメージレシピの新しいバージョンを作成する」を参照してください。

Image Builder コンソールでイメージレシピのベースイメージとして VM をインポートするには、以下の手順とその他の必要な手順に従って、レシピまたはレシピバージョンを作成します。

  1. ベースイメージの イメージの選択 セクションで、ベースイメージをインポート オプションを選択します。

  2. 通常どおり、イメージオペレーティングシステム (OS)OS バージョン を選択します。

VM インポート設定

VM を仮想化環境からエクスポートすると、そのプロセスによって VM 環境、設定、データのスナップショットとして機能する 1 つ以上のディスクコンテナファイルのセットが作成されます。これらのファイルを使用して、VM をイメージレシピのベースイメージとしてインポートできます。Image Builder VMsでのインポートの詳細については、「」を参照してください。 VM イメージのインポートとエクスポート

インポートソースの場所を指定するには、次の手順に従います。

インポートソース

ディスクコンテナ 1 セクションで、インポートする最初の VM イメージディスクコンテナまたはスナップショットのソースを指定します。

  1. ソース – これは S3 バケットまたは EBSスナップショットのいずれかです。

  2. ディスクの S3 の場所を選択 - ディスクイメージが保存されている Amazon S3 の場所を入力します。場所を参照するには、[S3 を参照] を選択します。

  3. ディスクコンテナを追加するには、[ディスクコンテナを追加] を選択します。

IAM ロール

IAM ロールを VM インポート設定に関連付けるには、ロールドロップダウンリストからIAMロールを選択するか、新しいロールの作成を選択して新しいロールを作成します。新しいロールを作成すると、IAMロールコンソールページが別のタブで開きます。

詳細設定 - オプション

次のオプション設定はオプショナルです。これらの設定により、インポートによって作成されるベースイメージの暗号化、ライセンス、タグなどを設定できます。

全般
  1. ベースイメージに固有の 名前 を指定します。値を入れない場合、ベースイメージで自動的にレシピ名が継承されます。

  2. ベースイメージの バージョン を指定します。形式は以下のようになります: <major>.<minor>.<patch> 値を入力しない場合、ベースイメージはレシピバージョンを継承します。

  3. ベースイメージの 説明 を入力することもできます。

ベースイメージアーキテクチャ

VM インポートソースのアーキテクチャを指定するには、アーキテクチャ リストから値を選択します。

Encryption

VM ディスクイメージが暗号化されている場合は、インポートプロセスに使用するキーを指定する必要があります。インポート AWS KMS key に を指定するには、暗号化 (KMS キー) リストから値を選択します。リストには、現在のリージョンでアカウントがアクセスできるKMSキーが含まれています。

ライセンス管理

VM をインポートすると、インポートプロセスによって VM OS が自動的に検出され、適切なライセンスがベースイメージに適用されます。お使いの OS プラットフォームに応じて、ライセンスの種類は次のとおりです。

  • License included - あなたのプラットフォームに適した AWS ライセンスがベースイメージに適用されます。

  • Bring your own license (BYOL) – 該当する場合、VM のライセンスを保持します。

で作成されたライセンス設定をベースイメージ AWS License Manager にアタッチするには、ライセンス設定名リストから を選択します。License Manager の詳細については、「 の使用 AWS License Manager」を参照してください。

注記
  • ライセンスコンフィギュレーションには、企業契約の条件に基づくライセンスルールが含まれています。

  • Linux はBYOLライセンスのみをサポートしています。

タグ (ベースイメージ)

タグはキーと値のペアを使用して、検索可能なテキストを Image Builder リソースに割り当てます。インポートしたベースイメージのタグを指定するには、キー ボックスと ボックスにキーと値のペアを入力します。

タグを追加するには、タグの追加 を選択します。タグを削除するには、[タグの削除] を選択します。