

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

# 新しいコンテナレシピのバージョンを作成
<a name="create-container-recipes"></a>

このセクションでは、コンテナレシピの新しいバージョンを作成する方法を示します。

**Topics**
+ [コンソールで新しいコンテナレシピの作成](#create-container-recipe-version)
+ [を使用してコンテナレシピを作成する AWS CLI](#create-container-recipe-cli)

## コンソールで新しいコンテナレシピの作成
<a name="create-container-recipe-version"></a>

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

**レシピ詳細**
+ **名前** - 編集不可。
+ **バージョン** – 必須。この情報には、現在のバージョンやシーケンスがあらかじめ入力されていません。作成したいバージョン番号を major.minor.patch の形式で入力します。そのバージョンが既に存在している場合は、エラーが発生します。

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

  Docker コンテナイメージについては、DockerHub でホストされているパブリックイメージ、Amazon ECR の既存のコンテナイメージ、または Amazon が管理するコンテナイメージから選択できます。基本イメージの選択に関連する詳細を表示するには、選択内容と一致するタブを選択してください。

------
#### [ Managed images ]
  + **イメージオペレーティングシステム（OS）** - 編集不可。
  + **イメージ名** — 既存のレシピで選択した基本イメージの組み合わせに基づいて事前に選択されています。ただし、**イメージを選択** オプションを変更すると、事前に選択した **イメージ名** は失われます。
  + **自動バージョンアップオプション** - 基本レシピと一致しません。自動バージョン管理オプションのデフォルトは**選択した OS バージョンを使用**です。
**重要**  
セマンティックバージョニングを使用してパイプラインのビルドを開始する場合は、この値を**利用可能な最新の OS バージョンを使用する**に変更してください。Image Builder リソースのセマンティックバージョニングの詳細については、[Image Builder でのセマンティックバージョニング](ibhow-semantic-versioning.md)を参照してください。

------
#### [ ECR image ]
  + **イメージオペレーティングシステム (OS)** — 事前に選択されていますが、編集可能です。
  + **OS バージョン** — 事前に選択されていますが、編集可能です。
  + **ECR イメージ ID** — 事前入力されていますが、編集可能です。

------
#### [ Docker Hub image ]
  + **イメージオペレーティングシステム (OS)** - 編集不可。
  + **OS バージョン** — 事前に選択されていますが、編集可能です。
  + **Docker イメージ ID** — 事前に入力されていますが、編集可能です。

------

**インスタンス設定**
+ **AMI ソース** (必須) – コンテナビルドおよびテストインスタンスのベースイメージとして使用するカスタム AMI を特定します。これは、AMI ID または AMI ID を含む AWS Systems Manager (SSM) パラメータストアパラメータです。
  + **AMI ID** – この設定には、元のエントリが事前に入力されていません。ベースイメージの AMI ID を入力します。例えば、`ami-1234567890abcdef1` などです。
  + **SSM パラメータ** – ベースイメージの AMI ID を含む SSM パラメータストアパラメータの名前または ARN を入力します。例: `/ib/test/param` または `arn:aws:ssm:us-east-1:111122223333:parameter/ib/test/param`。
+ 

**ストレージ (ボリューム)**  
**EBS ボリューム 1 (AMI ルート)** — 事前に入力されています。ルートボリュームの**デバイス名**、**スナップショット**、または **IOPS** の選択内容は編集できません。ただし、**サイズ** など、残りの設定はすべて変更できます。新しいボリュームを追加することもできます。
**注記**  
別のアカウントから共有した場合、ベース AMI を指定した場合、指定したすべての 2 次ボリュームのスナップショットも自分のアカウントと共有する必要があります。

**作業ディレクトリパス**
+ **作業ディレクトリパス** — 事前に入力されていますが、編集可能です。

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

  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 Parameter Store を使用することをお勧めします。Secrets Manager の詳細については、AWS Secrets Manager ユーザーガイドの [Secrets Manager とは](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)を参照してください。 AWS Systems Manager パラメータストアについては、AWS Systems Manager ユーザーガイドの[AWS Systems Manager パラメータストア](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html)を参照。

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

**Dockerfile テンプレート**
+ **Dockerfile テンプレート** - 事前に入力されていますが、編集可能です。次のコンテキスト変数を指定できます。これらは、実行時に Image Builder によってビルド情報に置き換えられます。

     
**parentImage (必須)**  
この変数は、ビルド時にレシピのベースイメージに解決されます。  
例:  

  ```
  FROM
  {{{ imagebuilder:parentImage }}}
  ```  
**environments (components が指定されている場合は必須)**  
この変数は、コンポーネントを実行するスクリプトに解決されます。  
例:  

  ```
  {{{ imagebuilder:environments }}}
  ```  
**components (オプション)**  
Image Builder は、コンテナレシピに含まれているコンポーネントのビルドおよびテストコンポーネントスクリプトを解決します。この変数は、Dockerfile 内で environments 変数の後の任意の場所に配置できます。  
例:  

  ```
  {{{ imagebuilder:components }}}
  ```

**ターゲットリポジトリ**
+ **ターゲットリポジトリ名** — パイプラインが実行されるリージョン (リージョン 1) のパイプラインのディストリビューション設定で他にリポジトリが指定されていない場合に、出力イメージが保存される Amazon ECR リポジトリ。

**新しいコンテナレシピのバージョンを作成するには:**

1. コンテナレシピの詳細ページの上部で、**新しいバージョンを作成** を選択します。コンテナレシピの**レシピの作成**ページが表示されます。

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

イメージパイプラインを作成するときにコンテナレシピを作成する方法の詳細については、本ガイドの**はじめに**セクションの「[ステップ 2: レシピを選択する](start-build-container-pipeline.md#start-build-container-step2)」を参照してください。

## を使用してコンテナレシピを作成する AWS CLI
<a name="create-container-recipe-cli"></a>

の `imagebuilder create-container-recipe` コマンドを使用して Image Builder コンテナレシピを作成するには AWS CLI、次の手順に従います。

**前提条件**  
このセクションの Image Builder コマンドを実行して でコンテナレシピを作成する前に AWS CLI、レシピが使用するコンポーネントを作成する必要があります。次のステップのコンテナレシピの例は、このガイドの [からカスタムコンポーネントを作成する AWS CLI](create-component.md#create-component-ib-cli) セクションで作成したサンプルコンポーネントを参照しています。

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

1. 

**CLI 入力 JSON ファイルの作成**

   **create-container-recipe** コマンドのすべての入力をインラインコマンドパラメータで指定できます。ただし、生成されるコマンドはかなり長くなる可能性があります。コマンドを効率化するために、代わりにすべてのコンテナレシピ設定を含む JSON ファイルを提供できる
**注記**  
JSON ファイル内のデータ値の命名規則は、Image Builder API オペレーションリクエストパラメータに指定されたパターンに従います。API オペレーションリクエストパラメータを確認するには、*EC2 Image Builder* API リファレンスの [CreateContainerRecipe](https://docs.aws.amazon.com/imagebuilder/latest/APIReference/API_CreateContainerRecipe.html) コマンドを参照してください。  
データ値をコマンドラインパラメータとして指定するには、AWS CLI コマンドリファレンスで指定されているパラメータ名を参照してください。

   以下に、この例のパラメータの概要を示します。
   + **コンポーネント** (オブジェクトの配列、必須) — `ComponentConfiguration` オブジェクトの配列が含まれます。少なくとも 1 つのビルドコンポーネントを指定する必要があります。
**注記**  
Image Builder は、レシピで指定した順序でコンポーネントをインストールします。しかし、CIS のハードニング・コンポーネントは、ベンチマーク・テストが出力イメージに対して実行されるように、常に最後に実行します。
     + **コンポーネント ARN** (文字列、必須) — コンポーネント ARN。
**ヒント**  
例の 1 つを使用して独自のコンテナレシピを作成するには、サンプル ARN をレシピに使用しているコンポーネントの ARN に置き換える必要があります。これらには AWS リージョン、それぞれの、名前、バージョン番号が含まれます。
     + **パラメータ** (オブジェクトの配列) — `ComponentParameter` オブジェクトの配列が含まれます。入力パラメータが必須で、コンポーネントにデフォルト値が定義されていない場合は、値を指定する必要があります。必須パラメータのいずれかが不足していてデフォルト値も定義されていない場合、Image Builder はレシピバージョンを作成しません。
**重要**  
コンポーネントパラメータはプレーンテキストの値で、 AWS CloudTrailに記録されます。シークレットを保存するには、 AWS Secrets Manager または AWS Systems Manager Parameter Store を使用することをお勧めします。Secrets Manager の詳細については、AWS Secrets Manager ユーザーガイドの [Secrets Manager とは](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)を参照してください。 AWS Systems Manager パラメータストアについては、AWS Systems Manager ユーザーガイドの[AWS Systems Manager パラメータストア](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html)を参照。
       + **名前** (文字列、必須) — 設定するコンポーネントパラメータの名前。
       + **値** (文字列の配列、必須) — 指定されたコンポーネントパラメータの値を設定する文字列の配列を含みます。コンポーネントにデフォルト値が定義されていて、他の値が指定されていない場合、 はデフォルト値 AWSTOE を使用します。
   + **containerType** (文字列、必須) — 作成するコンテナのタイプ。有効な値には `DOCKER` が含まれます。
   + **DockerFileTemplateData** (文字列) — イメージの構築に使用される Dockerfile テンプレート。インラインデータブロブとして表現されます。
   + **名前** (文字列、必須) — コンテナレシピの名前。
   + **説明** (文字列) — コンテナレシピの説明。
   + **parentImage** (文字列、必須) – カスタマイズされたイメージのベースラインとしてコンテナレシピで使用する Docker コンテナイメージ。
     + DockerHub でホストされているパブリックイメージ
     + Amazon ECR の既存のコンテナイメージ
     + Amazon が管理するコンテナイメージ
   + **platformOverride** (文字列) –カスタムベースイメージを使用する場合のオペレーティングシステムプラットフォームを指定します。
   + **semanticVersion** 文字列、必須） - コンテナレシピのセマンティックバージョンを以下のフォーマットで指定します：<major>.<minor>.<patch>。文字列の例は `1.0.0` などです。Image Builder リソースのセマンティックバージョニングの詳細については、[Image Builder でのセマンティックバージョニング](ibhow-semantic-versioning.md)を参照してください。
   + **タグ** (文字列マップ)コンテナレシピにアタッチされているタグ。
   + **instanceConfiguration** (オブジェクト) —コンテナイメージの構築とテストを目的としてインスタンスを設定するために使用できるオプションのグループ。
     + **image** (文字列) – コンテナビルドおよびテストインスタンスのベースイメージ。これには、AMI ID を含めることも、 AWS Systems Manager (SSM) パラメータストアパラメータを指定することもできます。プレフィックスは で、パラメータ名または ARN が`ssm:`続きます。SSM パラメータを使用する場合は、パラメータ値に AMI ID が含まれている必要があります。ベースイメージを指定しない場合、Image Builder は適切な Amazon ECS 最適化 AMI をベースイメージとして使用します。
     + **BlockDeviceMappings** (オブジェクトの配列) — **image**パラメータで指定した Image Builder AMI からインスタンスを構築するためにアタッチするブロックデバイスを定義します。
       + **DeviceName** (文字列) — これらのマッピングが適用されるデバイス。
       + **ebs** (オブジェクト) – このマッピングの Amazon EBS 固有の構成を管理するために使用します。
         + **deleteOnTermination** (Boolean) –関連付けられたデバイスの終了時に削除を設定するために使用します。
         + **暗号化済み** (ブール値) — デバイス暗号化の設定に使用されます。
         + **volumeSize** (整数) — デバイスのボリュームサイズを上書きするために使用します。
         + **volumeType** (文字列) — デバイスのボリュームサイズを上書きするために使用します。
   + **targetRepository** (オブジェクト、必須) — パイプラインが稼働するリージョン (リージョン 1) のパイプラインのディストリビューション設定で他にリポジトリが指定されていない場合のコンテナイメージのデスティネーションリポジトリ。
     + **repositoryName** (文字列、必須) - 出力コンテナイメージを保存するコンテナリポジトリの名前。この名前の先頭には、リポジトリの場所が付きます。
     + **サービス** (文字列、必須) - このイメージが登録されたサービスを指定します。
   + **workingDirectory** (文字列) - ビルドとテストのワークフローで使用する作業ディレクトリ。

   ```
   {
   	"components": [ 
   	  { 
   		 "componentArn": "arn:aws:imagebuilder:us-west-2:111122223333: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-1234567890abcdef1",
   	  "blockDeviceMappings": [
   		 {
   			"deviceName": "/dev/xvda",
   			"ebs": {
   				"deleteOnTermination": true,
   				"encrypted": false,
   				"volumeSize": 8,
   				"volumeType": "gp2"
   			 }
   		  }			
   	  ]
   	},
   	"targetRepository": { 
   	  "repositoryName": "myrepo",
   	  "service": "ECR"
   	},
   	"workingDirectory": "/tmp"
   }
   ```

1. 

**レシピを作成する**

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

   ```
   aws imagebuilder create-container-recipe --cli-input-json file://create-container-recipe.json
   ```
**注記**  
JSON ファイルパスの先頭に `file://` 表記を含める必要があります。
JSON ファイルのパスは、コマンドを実行するベースオペレーティングシステムに適した規則に従う必要があります。例えば、Windows ではディレクトリパスを表すためにバックスプラッシュ (\$1) が使用され、Linux と macOS ではフォーワードスラッシュ (/) が使用されます。