翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
新しいコンテナレシピのバージョンを作成
このセクションでは、コンテナレシピの新しいバージョンを作成する方法を示します。
コンソールで新しいコンテナレシピの作成
コンテナレシピの新しいバージョンを作成することは、新しいレシピを作成することと実質的に同じです。違いは、ほとんどの場合、基本レシピに合わせて特定の詳細が事前に選択されていることです。以下のリストは、新しいレシピを作成することと、既存のレシピの新しいバージョンを作成することの違いを説明しています。
レシピ詳細
-
名前 - 編集不可。
-
バージョン – 必須。この情報には、現在のバージョンやシーケンスがあらかじめ入力されていません。作成したいバージョン番号を major.minor.patch の形式で入力します。そのバージョンが既に存在している場合は、エラーが発生します。
ベースイメージ
-
イメージオプションを選択 — あらかじめ選択されていますが、編集可能です。ベースイメージのソースの選択を変更すると、選択した元のオプションに依存するその他の詳細が失われる可能性があります。
基本イメージの選択に関連する詳細を表示するには、選択内容と一致するタブを選択してください。
インスタンス設定
-
AMI ID – 事前入力済みですが、編集可能です。
-
ストレージ (ボリューム)
EBS ボリューム 1 (AMI ルート) – 事前入力済み。ルートボリュームのデバイス名 、スナップショット 、またはIOPS選択を編集することはできません。ただし、サイズ など、残りの設定はすべて変更できます。新しいボリュームを追加することもできます。
注記
別のアカウントから共有AMIされたベースを指定した場合、指定されたセカンダリボリュームのスナップショットもアカウントと共有する必要があります。
作業ディレクトリパス
-
作業ディレクトリパス — 事前に入力されていますが、編集可能です。
コンポーネント
コンポーネント — レシピに既に含まれているコンポーネントは、各コンポーネントリスト (ビルドとテスト) の最後にある 選択されたコンポーネント セクションに表示されます。ニーズに合わせられるように、選択したコンポーネントを削除または並べ替えることができます。
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 パラメータストアを参照。
バージョニング管理オプション または [入力パラメータ] の設定を拡張するには、設定名の横にある矢印を選択します。選択したすべてのコンポーネントの設定をすべて展開するには、[すべて展開] スイッチのオンとオフを切り替えます。
-
Dockerfile テンプレート
-
Dockerfile テンプレート – 事前入力済みですが、編集可能です。Image Builder が実行時にビルド情報に置き換える以下のコンテキスト変数のいずれかを指定できます。
- parentImage (必須)
-
ビルド時に、この変数はレシピのベースイメージに解決されます。
例:
FROM {{{ imagebuilder:parentImage }}}
- 環境 (コンポーネントが指定されている場合は必須)
-
この変数は、コンポーネントを実行するスクリプトに解決されます。
例:
{{{ imagebuilder:environments }}}
- コンポーネント (オプション)
-
Image Builder は、コンテナレシピに含まれるコンポーネントのビルドおよびテストコンポーネントスクリプトを解決します。この変数は、環境変数の後に Dockerfile 内の任意の場所に配置できます。
例:
{{{ imagebuilder:components }}}
ターゲットリポジトリ
-
ターゲットリポジトリ名 – パイプラインが実行されるリージョン (リージョン 1) のパイプラインのディストリビューション設定に他のリポジトリが指定されていない場合に、ECR出力イメージが保存される Amazon リポジトリ。
新しいコンテナレシピのバージョンを作成するには:
-
コンテナレシピの詳細ページの上部で、新しいバージョンを作成 を選択します。コンテナレシピのレシピの作成ページが表示されます。
-
新しいバージョンを作成するには、変更を加え、レシピの作成を選択します。
イメージパイプラインを作成するときにコンテナレシピを作成する方法の詳細については、本ガイドのはじめにセクションの「ステップ 2: レシピを選択する」を参照してください。
AWS CLIでコンテナレシピを作成する
で imagebuilder create-container-recipe
コマンドを使用して Image Builder コンテナレシピを作成するには AWS CLI、次の手順に従います。
前提条件
このセクションの Image Builder コマンドを実行して でコンテナレシピを作成する前に AWS CLI、レシピが使用するコンポーネントを作成する必要があります。次のステップのコンテナレシピの例は、このガイドの からカスタムコンポーネントを作成する AWS CLI セクションで作成したサンプルコンポーネントを参照しています。
コンポーネントを作成した後、または既存のコンポーネントを使用している場合は、レシピARNsに含める を書き留めます。
-
CLI 入力JSONファイルを作成する
create-container-recipe コマンドのすべての入力をインラインコマンドパラメータで指定できます。ただし、生成されるコマンドはかなり長くなる可能性があります。コマンドを合理化するには、代わりにすべてのコンテナレシピ設定を含むJSONファイルを提供できます。
注記
JSON ファイル内のデータ値の命名規則は、Image Builder APIアクションリクエストパラメータに指定されたパターンに従います。API コマンドリクエストパラメータを確認するには、EC2Image Builder APIリファレンス の CreateContainerRecipe コマンドを参照してください。
データ値をコマンドラインパラメータとして指定するには、AWS CLI コマンドリファレンスで指定されているパラメータ名を参照してください。
以下に、この例のパラメータの概要を示します。
-
コンポーネント (オブジェクトの配列、必須) —
ComponentConfiguration
オブジェクトの配列が含まれます。少なくとも 1 つのビルドコンポーネントを指定する必要があります。注記
Image Builder は、レシピで指定した順序でコンポーネントをインストールします。ただし、CIS強化コンポーネントは常に最後に実行され、ベンチマークテストが出力イメージに対して実行されるようにします。
-
componentARN (文字列、必須) – コンポーネント ARN。
ヒント
この例を使用して独自のコンテナレシピを作成するには、この例をレシピに使用するARNsARNsコンポーネントの に置き換えます。これらには AWS リージョン、それぞれの、名前、バージョン番号が含まれます。
パラメータ (オブジェクトの配列) —
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 を使用します。
-
-
-
containerType (文字列、必須) – 作成するコンテナのタイプ。有効な値には
DOCKER
が含まれます。 -
dockerfileTemplateData (文字列) – イメージの構築に使用される Dockerfile テンプレート。インラインデータブロックとして表されます。
-
名前 (文字列、必須) — コンテナレシピの名前。
-
説明 (文字列) — コンテナレシピの説明。
-
parentImage (文字列、必須) – コンテナレシピがカスタマイズされたイメージのベースとして使用するイメージ。値は、ベースイメージARNまたは AMI ID にすることができます。
-
platformOverride (文字列) — カスタムベースイメージを使用する場合のオペレーティングシステムプラットフォームを指定します。
-
semanticVersion (文字列、必須) – 次の形式で指定されたコンテナレシピのセマンティックバージョン。各位置の数値は、特定のバージョンを示します: <major>.<minor>.<patch>。文字列の例は
1.0.0
などです。Image Builder リソースのセマンティックバージョニングの詳細については、Image Builder でのセマンティックバージョニングを参照してください。 -
タグ (文字列マップ)コンテナレシピにアタッチされているタグ。
-
instanceConfiguration (オブジェクト) – コンテナイメージを構築およびテストするためのインスタンスの設定に使用できるオプションのグループ。
-
image (文字列) – コンテナビルドインスタンスとテストインスタンスのベースイメージとして使用する AMI ID。この値を指定しない場合、Image Builder は適切な Amazon ECS 最適化をベースイメージAMIとして使用します。
-
blockDeviceMappings (オブジェクトの配列) – imageパラメータでAMI指定された Image Builder からインスタンスを構築するためにアタッチするブロックデバイスを定義します。
-
deviceName (文字列) – これらのマッピングが適用されるデバイス。
-
ebs (オブジェクト) – このマッピングの Amazon EBS固有の設定を管理するために使用されます。
-
deleteOnTermination (ブール値) – 関連付けられたデバイスの終了時に削除を設定するために使用されます。
-
暗号化済み (ブール値) — デバイス暗号化の設定に使用されます。
-
volumeSize (整数) – デバイスのボリュームサイズを上書きするために使用します。
-
volumeType (文字列) – デバイスのボリュームタイプを上書きするために使用します。
-
-
-
-
targetRepository (オブジェクト、必須) – パイプラインが実行されるリージョン (リージョン 1) のパイプラインのディストリビューション設定に他のリポジトリが指定されていない場合のコンテナイメージの送信先リポジトリ。
-
repositoryName (文字列、必須) – 出力コンテナイメージが保存されているコンテナリポジトリの名前。この名前の先頭には、リポジトリの場所が付きます。
-
サービス (文字列、必須) - このイメージが登録されたサービスを指定します。
-
-
workingDirectory (文字列) – ビルドおよびテストワークフローで使用する作業ディレクトリ。
{ "components": [ { "componentArn": "arn:aws:imagebuilder:us-east-1:123456789012:component/helloworldal2/x.x.x" } ], "containerType": "DOCKER", "description": "My Linux Docker container image", "dockerfileTemplateData": "FROM {{{ imagebuilder:parentImage }}}\n{{{ imagebuilder:environments }}}\n{{{ imagebuilder:components }}}", "name": "amazonlinux-container-recipe", "parentImage": "amazonlinux:latest", "platformOverride": "Linux", "semanticVersion": "1.0.2", "tags": { "sometag" : "Tag detail" }, "instanceConfiguration": { "image": "ami-1234567890", "blockDeviceMappings": [ { "deviceName": "/dev/xvda", "ebs": { "deleteOnTermination": true, "encrypted": false, "volumeSize": 8, "volumeType": "gp2" } } ] }, "targetRepository": { "repositoryName": "myrepo", "service": "ECR" }, "workingDirectory": "/tmp" }
-
-
レシピを作成する
レシピを作成するには以下のコマンドを使用します。
--cli-input-json
パラメータの前のステップで作成したJSONファイルの名前を指定します。aws imagebuilder create-container-recipe --cli-input-json file://
create-container-recipe.json
注記
-
JSON ファイルパスの先頭に
file://
表記を含める必要があります。 -
JSON ファイルのパスは、コマンドを実行しているベースオペレーティングシステムの適切な規則に従う必要があります。例えば、Windows ではディレクトリパスを参照するためにバックスプラッシュ (|) が使用され、Linux ではフォーワードスラッシュ (/) が使用されます。
-