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

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

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

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

新しいイメージレシピのバージョン(コンソール)を作成

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

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

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

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

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

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

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

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

      重要

      セマンティックバージョニングを使用してパイプラインのビルドを開始する場合は、この値を利用可能な最新の OS バージョンを使用するに変更してください。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 またはパラメータストアを使用してシークレットを保存することをおすすめします。Secrets Managerの詳細については、AWS Secrets Manager ユーザーガイドのSecrets Managerとはを参照してください。 AWS Systems Manager パラメータストアについては、AWS Systems Manager ユーザーガイドのAWS Systems Manager パラメータストアを参照。

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

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

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

    注記

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

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

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

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

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

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

前提条件

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

コンポーネントを作成したら、または既存のコンポーネントを使用している場合は、recipe に含める 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 リソースのセマンティックバージョニングの詳細については、セマンティックバージョニングを参照してください。

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

      注記

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

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

        ヒント

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

      • パラメータ (オブジェクトの配列) — 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(ブール値) — 新しい 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 リソースのセマンティックバージョニングの詳細については、セマンティックバージョニングを参照してください。

  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 コンソールのパイプライン作成ウィザードを使用して新しいイメージレシピを作成するその他の手順については、「イメージパイプラインを作成します。」を参照してください。新しいイメージレシピまたはレシピバージョンを作成するその他の手順については、「イメージレシピの新しいバージョンを作成します。」を参照してください。

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. ベースイメージに固有の 名前 を指定します。値を入れない場合、ベースイメージで自動的に recipe 名が継承されます。

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

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