イメージレシピの新しいバージョンを作成する - 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 を入力する必要があります。

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

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

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

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

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

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

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

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

    注記

    ビルドコンポーネントリストとテストコンポーネントリストには、コンポーネント所有者のタイプに基づいて使用可能なコンポーネントが表示されます。レシピのコンポーネントを追加または更新するには、探しているコンポーネントの所有者タイプを選択します。例えば、 でサブスクライブしたベースイメージに関連付けられているコンポーネントを追加する場合は AWS Marketplace、Third party managed所有者タイプのリストから検索バーの横にある を選択します。

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

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

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

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

      重要

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

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

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

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

    注記

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

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

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

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

でイメージレシピを作成する AWS CLI

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

前提条件

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

コンポーネントを作成したら、または既存のコンポーネントを使用している場合は、レシピに含める ARN をメモしてください。

  1. CLI 入力 JSON ファイルの作成

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

    注記

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

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

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

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

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

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

      注記

      Linux の例ではImage Builder AMI を使用し、Windows の例では ARN を使用しています。

    • semanticVersion(文字列、必須) - イメージレシピのセマンティックバージョンは以下のフォーマットで表されます: <major>.<minor>.<patch>。例えば、値は 1.0.0 であるかもしれません。Image Builder リソースのセマンティックバージョニングの詳細については、Image Builder でのセマンティックバージョニングを参照してください。

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

      注記

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

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

        ヒント

        例の 1 つを使用して独自のイメージレシピを作成するには、サンプル ARN をレシピに使用しているコンポーネントの ARN に置き換える必要があります。

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

        重要

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

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

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

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

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

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

          注記

          uninstallAfterBuild 属性が JSON ファイルに含まれておらず、次の条件に当てはまる場合、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 にアクセスできる必要があり、AMI はソースリージョン (Image Builder がコマンドを実行するのと同じリージョン) にある必要があります。ファイルを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 でのセマンティックバージョニングを参照してください。

  2. レシピを作成する

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

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

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

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

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

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

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

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

VM インポート設定

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

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

インポートソース

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

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

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

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

IAM ロール

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

詳細設定 - オプション

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

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

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

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

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

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

暗号化

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 リソースに割り当てます。インポートしたベースイメージのタグを指定するには、キー ボックスと ボックスにキーと値のペアを入力します。

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