

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

# Image Builder でのカスタムイメージの設定
<a name="manage-resources"></a>

設定リソースは、イメージパイプラインを構成する要素であり、それらのパイプラインから生成されるイメージでもあります。この章では、コンポーネント、レシピ、イメージなどの Image Builder リソースの作成、管理、共有、およびインフラストラクチャ設定と配布設定について説明します。

**注記**  
Image Builder リソースを管理しやすくするために、タグ形式で各リソースに独自のメタデータを割り当てることができます。タグを使用して、 AWS リソースを目的、所有者、環境などさまざまな方法で分類します。これは、同じ種類のリソースが多い場合に役立ちます。リソースに割り当てたタグに基づいて、特定のリソースを簡単に識別できます。  
の Image Builder コマンドを使用したリソースのタグ付けの詳細については AWS CLI、このガイドの[リソースにタグを付ける](tag-resources.md)「」セクションを参照してください。

**Topics**
+ [

# Image Builder のレシピの管理
](manage-recipes.md)
+ [

# Image Builder インフラストラクチャ設定の管理
](manage-infra-config.md)
+ [

# Image Builder のディストリビューション設定の管理
](manage-distribution-settings.md)

# Image Builder のレシピの管理
<a name="manage-recipes"></a>

EC2 Image Builder レシピでは、新しいイメージを作成するための開始点として使用するベースイメージと、イメージをカスタマイズしてすべてが期待どおりに動作することを確認するために追加する一連のコンポーネントを定義します。Image Builder では、コンポーネントごとに自動的にバージョンを選択できます。デフォルトでは、レシピに最大 20 個のコンポーネントを適用できます。これには、ビルドコンポーネントとテストコンポーネントの両方が含まれます。

レシピを作成後に変更または置換することはできません。レシピを作成した後でコンポーネントを更新するには、新しいレシピまたはレシピバージョンを作成する必要があります。既存のレシピにはいつでもタグを適用できます。の Image Builder コマンドを使用したリソースのタグ付けの詳細については AWS CLI、このガイドの[リソースにタグを付ける](tag-resources.md)「」セクションを参照してください。

**ヒント**  
Amazon マネージドコンポーネントをレシピで使用することも、独自のカスタムコンポーネントを開発することもできます。詳細については、「[Image Builder イメージ用のカスタムコンポーネントの開発](create-custom-components.md)」を参照してください。出力 AMIs を作成するイメージレシピでは、 AWS Marketplace イメージ製品とコンポーネントを使用することもできます。 AWS Marketplace 製品との統合の詳細については、「」を参照してください[AWS Marketplace Image Builder での統合](integ-marketplace.md)。

このセクションでは、レシピを一覧表示、表示、作成する方法について説明します。

**Topics**
+ [

# イメージレシピの詳細を一覧と詳細表示
](image-recipe-details.md)
+ [

# コンテナレシピ詳細の一覧表示
](container-recipe-details.md)
+ [

# イメージレシピの新しいバージョンを作成する
](create-image-recipes.md)
+ [

# 新しいコンテナレシピのバージョンを作成
](create-container-recipes.md)
+ [

## リソースをクリーンアップする
](#recipes-cleanup)

# イメージレシピの詳細を一覧と詳細表示
<a name="image-recipe-details"></a>

このセクションでは、EC2 Image Builder イメージレシピの情報を検索したり詳細を表示したりするさまざまな方法について説明します。

**Topics**
+ [

## コンソールからのイメージレシピの一覧表示
](#list-image-recipes-console)
+ [

## からイメージレシピを一覧表示する AWS CLI
](#cli-list-image-recipes)
+ [

## コンソールからのイメージレシピの詳細の表示
](#view-image-recipe-details-console)
+ [

## からイメージレシピの詳細を取得する AWS CLI
](#cli-get-image-recipe)
+ [

## からイメージレシピポリシーの詳細を取得する AWS CLI
](#cli-get-image-recipe-policy)

## コンソールからのイメージレシピの一覧表示
<a name="list-image-recipes-console"></a>

アカウントで作成されたイメージレシピのリストを Image Builder コンソールに表示するには、次の手順に従います。

1. [https://console.aws.amazon.com/imagebuilder/](https://console.aws.amazon.com/imagebuilder/) で、EC2 Image Builder コンソールを開きます。

1. ナビゲーションペインから**イメージレシピ**を選択します。これにより、アカウントで作成されたイメージレシピのリストが表示されます。

1. 詳細を表示したり、新しいレシピバージョンを作成したりするには、**[レシピ名]** リンクを選択します。レシピの詳細ビューが開きます。
**注記**  
また、**レシピ名**の横にあるチェックボックスを選択し、**詳細を見る**を選択することもできます。

## からイメージレシピを一覧表示する AWS CLI
<a name="cli-list-image-recipes"></a>

次の例は、 AWS CLIを使ってすべてのイメージレシピを一覧表示する方法を示しています。

```
aws imagebuilder list-image-recipes
```

## コンソールからのイメージレシピの詳細の表示
<a name="view-image-recipe-details-console"></a>

Image Builder コンソールを使用して特定のイメージレシピの詳細を表示するには、[コンソールからのイメージレシピの一覧表示](#list-image-recipes-console)で説明されている手順を使用して、レビューするイメージレシピを選択します。

レシピの詳細ページでは次のことができます。
+ レシピを削除する。Image Builder でのリソースの削除については、「[未使用または古くなった Image Builder リソースの削除](delete-resources.md)」を参照してください。
+ 新しいバージョンを作成する。
+ レシピからパイプラインを作成する。**このレシピからパイプラインを作成**を選択すると、パイプラインウィザードが表示されます。パイプラインウィザードを使って Image Builder パイプラインを作成する詳しい方法については、「[チュートリアル: Image Builder コンソールウィザードから AMI を出力するイメージパイプラインを作成する](start-build-image-pipeline.md)」を参照してください。
**注記**  
既存のレシピからパイプラインを作成する場合、新しいレシピを作成するオプションは使用できません。

## からイメージレシピの詳細を取得する AWS CLI
<a name="cli-get-image-recipe"></a>

次の例は、**imagebuilder** CLI コマンドを使用して Amazon リソースネーム (ARN) を指定してイメージレシピの詳細を取得する方法を示しています。

```
aws imagebuilder get-image-recipe --image-recipe-arn arn:aws:imagebuilder:us-west-2:123456789012:image-recipe/my-example-recipe/2020.12.03
```

## からイメージレシピポリシーの詳細を取得する AWS CLI
<a name="cli-get-image-recipe-policy"></a>

次の例は、**imagebuilder** CLI コマンドを使用して ARN を指定してイメージレシピポリシーの詳細を取得する方法を示しています。

```
aws imagebuilder get-image-recipe-policy --image-recipe-arn arn:aws:imagebuilder:us-west-2:123456789012:image-recipe/my-example-recipe/2020.12.03
```

# コンテナレシピ詳細の一覧表示
<a name="container-recipe-details"></a>

このセクションでは、EC2 Image Builder コンテナレシピの情報を検索したり詳細を表示したりする方法について説明します。

**Topics**
+ [

## コンソールにコンテナレシピを一覧表示する
](#list-container-recipes-console)
+ [

## を使用してコンテナレシピを一覧表示する AWS CLI
](#cli-list-container-recipes)
+ [

## コンソールでのコンテナレシピ詳細の表示
](#view-container-recipe-details-console)
+ [

## を使用してコンテナレシピの詳細を取得する AWS CLI
](#cli-get-container-recipe)
+ [

## でコンテナレシピポリシーの詳細を取得する AWS CLI
](#cli-get-container-recipe-policy)

## コンソールにコンテナレシピを一覧表示する
<a name="list-container-recipes-console"></a>

アカウントで作成されたコンテナレシピのリストを Image Builder コンソールに表示するには、次の手順に従います。

1. [https://console.aws.amazon.com/imagebuilder/](https://console.aws.amazon.com/imagebuilder/) で、EC2 Image Builder コンソールを開きます。

1. ナビゲーションペインから、**[コンテナレシピ]** を選択します。アカウントで作成されたコンテナレシピのリストが表示されます。

1. 詳細を表示したり、新しいレシピバージョンを作成したりするには、**[レシピ名]** リンクを選択します。レシピの詳細ビューが開きます。
**注記**  
[**レシピ名**] の横にあるチェックボックスをオンにして、[**詳細を表示**] を選択することもできます。

## を使用してコンテナレシピを一覧表示する AWS CLI
<a name="cli-list-container-recipes"></a>

次の例は、を使ってすべてのコンテナレシピを AWS CLIで一覧表示する方法を示しています。

```
aws imagebuilder list-container-recipes
```

## コンソールでのコンテナレシピ詳細の表示
<a name="view-container-recipe-details-console"></a>

Image Builder コンソールで特定のコンテナレシピの詳細を表示するには、確認するコンテナレシピを選択し、[コンソールにコンテナレシピを一覧表示する](#list-container-recipes-console)で説明されている手順に従います。

レシピ詳細 ページでは、以下の操作ができます。
+ レシピを削除する。Image Builder でリソースを削除する方法の詳細については、「[未使用または古くなった Image Builder リソースの削除](delete-resources.md)」を参照してください。
+ 新しいバージョンを作成する。
+ レシピからパイプラインを作成する。[**このレシピからパイプラインを作成**] を選択すると、パイプラインウィザードが表示されます。パイプラインウィザードを使って Image Builder パイプラインを作成する方法の詳細は、[チュートリアル: Image Builder コンソールウィザードから AMI を出力するイメージパイプラインを作成する](start-build-image-pipeline.md) を参照してください。
**注記**  
既存のレシピからパイプラインを作成する場合、新しいレシピを作成するオプションは使用できません。

## を使用してコンテナレシピの詳細を取得する AWS CLI
<a name="cli-get-container-recipe"></a>

次の例は、**imagebuilder** CLI コマンドを使用して ARN を指定してコンテナレシピの詳細を取得する方法を示しています。

```
aws imagebuilder get-container-recipe --container-recipe-arn arn:aws:imagebuilder:us-west-2:123456789012:container-recipe/my-example-recipe/2020.12.03
```

## でコンテナレシピポリシーの詳細を取得する AWS CLI
<a name="cli-get-container-recipe-policy"></a>

次の例は、**imagebuilder** CLI コマンドを使用して ARN を指定することで、コンテナレシピの詳細を取得する方法を示しています。

```
aws imagebuilder get-container-recipe-policy --container-recipe-arn arn:aws:imagebuilder:us-west-2:123456789012:container-recipe/my-example-recipe/2020.12.03
```

# イメージレシピの新しいバージョンを作成する
<a name="create-image-recipes"></a>

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

**Topics**
+ [

## コンソールからの新しいイメージレシピバージョンの作成
](#create-image-recipe-version-console)
+ [

## を使用してイメージレシピを作成する AWS CLI
](#create-image-recipe-cli)
+ [

## VM をベースイメージとしてコンソールにインポートする
](#import-vm-recipes)

## コンソールからの新しいイメージレシピバージョンの作成
<a name="create-image-recipe-version-console"></a>

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

**新しいバージョンの基本レシピの詳細**
+ **名前** - 編集不可。
+ **バージョン** – 必須。作成したいバージョン番号を<major>.<minor>.<patch>の形式で入力する。Image Builder はレシピの自動バージョン増分をサポートしているため、レシピバージョンでワイルドカードパターンを使用できます。などのワイルドカードバージョンでレシピを作成すると`1.0.x`、Image Builder は自動的にバージョンを増分します (、`1.0.1``1.0.2`、 など`1.0.3`)。これにより、レシピのバージョンを手動で追跡して増分する必要がなくなります。
+ **イメージを選択** オプション — 事前に選択されていますが、編集できます。ベースイメージのソースの選択を変更すると、選択した元のオプションに依存するその他の詳細が失われる可能性があります。

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

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

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

   AWS Marketplace 製品の詳細については、「 *AWS Marketplace 購入者ガイド*」の[「製品の購入](https://docs.aws.amazon.com/marketplace/latest/buyerguide/buyer-subscribing-to-products.html)」を参照してください。

------
#### [ Custom AMI ]

  **AMI ソース** (必須) - ベースイメージとして使用する AMI ID を含む AMI ID または AWS Systems Manager (SSM) パラメータストアパラメータを入力します。SSM エージェントは、選択した AMI にプリインストールされている必要があります。
  + **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`。

------
+ **インスタンスの設定** — 設定は事前に選択されていますが、編集できます。
  + **システムマネージャーエージェント** — このチェックボックスをオンまたはオフにして、新しいイメージへのシステムマネージャーエージェントのインストールを制御できます。システムマネージャーエージェントを新しいイメージに含めるには、このチェックボックスはデフォルトでオフになっています。システムマネージャーエージェントを最終イメージから削除するには、エージェントが AMI に含まれないようにチェックボックスを選択します。
  + **ユーザーデータ** – 構築インスタンスを起動するときにこのエリアを使用して、コマンドまたはコマンドスクリプトを提供で実行します。ただし、この値は、Systems Manager が確実にインストールされるようにするために Image Builder が追加されたコマンドを置き換えます。これらのコマンドには、新しいイメージを作成する前に Image Builder が Linux イメージに対して通常実行するクリーンアップスクリプトが含まれます。

    Image Builder がインスタンスを起動すると、コンポーネントの実行が開始される前に、ユーザーデータスクリプトが cloud-init フェーズで実行されます。このステップは、インスタンスの ファイルに記録されます`var/log/cloud-init.log`。
**注記**  
ユーザーデータを入力する場合は、システムマネージャーエージェントをベースイメージにあらかじめインストールするか、ユーザーデータにインストールを含めるようにしてください。
Linux イメージの場合は、`perform_cleanup`ユーザーデータスクリプトで指定された空のファイルを作成するコマンドを含めて、クリーンアップ手順を実行するようにしてください。Image Builder はこのファイルを検出し、新しいイメージを作成する前にクリーンアップスクリプトを実行します。詳細とスクリプトのサンプルは「[Image Builder でのセキュリティのベストプラクティス](security-best-practices.md)」を参照してください。
+ **作業ディレクトリ** — 事前に選択されていますが、編集できます。
+ **コンポーネント** — レシピに既に含まれているコンポーネントは、各コンポーネントリスト (ビルドとテスト) の最後にある **選択されたコンポーネント** セクションに表示されます。ニーズに合わせられるように、選択したコンポーネントを削除または並べ替えることができます。

  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)を参照。

  **バージョニング管理オプション** または **[入力パラメータ]** の設定を拡張するには、設定名の横にある矢印を選択します。選択したすべてのコンポーネントの設定をすべて展開するには、**[すべて展開]** スイッチのオンとオフを切り替えます。
+ **ストレージ (ボリューム)** — あらかじめ入力されています。ルートボリュームの **デバイス名**、**スナップショット**、及び **IOPS** の選択は編集できません。ただし、**サイズ** など、残りの設定はすべて変更できます。新しいボリュームを追加したり、新規または既存のボリュームを暗号化したりすることもできます。

  Image Builder がソースリージョン (ビルドが実行される地域) のアカウントで作成するイメージのボリュームを暗号化するには、イメージレシピでストレージボリューム暗号化を使用する必要があります。ビルドの配布フェーズで実行される暗号化は、他のアカウントまたはリージョンに配布されるイメージのみに適用されます。
**注記**  
ボリュームに暗号化を使用する場合は、ボリュームごとにキーを個別に選択する必要があります。これは、そのキーがルートボリュームに使用されるものと同じ場合でも同様です。

**新しいイメージレシピバージョンを作成するには：**

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

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

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

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

## を使用してイメージレシピを作成する AWS CLI
<a name="create-image-recipe-cli"></a>

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

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

レシピにコンポーネントを含める場合は、含める ARNs を書き留めます。既存の AMIsまたはディストリビューション専用のワークフローをテストするためのコンポーネントなしでレシピを作成することもできます。

1. 

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

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

   以下に、これらの例で指定するパラメータの概要を示します。
   + **名前** (文字列、必須) — イメージレシピの名前。
   + **説明** (文字列) — イメージレシピの説明。
   + **parentImage** (文字列、必須) — イメージレシピがカスタマイズしたイメージのベースとして使用するイメージ。親イメージは、次のいずれかのオプションを使用して指定できます。
     + AMI ID
     + Image Builder イメージリソース ARN
     + AWS Systems Manager (SSM) パラメータストアパラメータ。プレフィックスは `ssm:`で、パラメータ名または ARN が続きます。
     + AWS Marketplace 製品 ID
**注記**  
Linux および macOS の例では Image Builder AMI を使用し、Windows の例では ARN を使用します。
   + **semanticVersion** (文字列、必須) – 作成するバージョン番号を *<major>.<minor>.<patch> *の形式で入力します。Image Builder はレシピの自動バージョン増分をサポートしているため、レシピバージョンでワイルドカードパターンを使用できます。などのワイルドカードバージョンでレシピを作成すると`1.0.x`、Image Builder は自動的にバージョンを増分します (、`1.0.1``1.0.2`、 など`1.0.3`)。これにより、レシピのバージョンを手動で追跡して増分する必要がなくなります。Image Builder リソースのセマンティックバージョニングの詳細については、[Image Builder でのセマンティックバージョニング](ibhow-semantic-versioning.md)を参照してください。
   + **components** (配列、オプション) – `ComponentConfiguration` オブジェクトの配列が含まれます。コンポーネントはオプションです。テストまたはディストリビューションワークフロー用のコンポーネントなしでレシピを作成できます。
**注記**  
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 とは](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 を使用します。
   + **追加のインスタンス設定** (オブジェクト) — ビルドインスタンス用の追加設定と起動スクリプトを指定します。
     + **systemsManagerAgent** (オブジェクト) - ビルド・インスタンス上の Systems Manager エージェントの設定が含まれます。
       + **uninstallAfterBuild** (Boolean) - 新しい AMI を作成する前に、Systems Manager エージェントを最終ビルド・イメージから削除するかどうかを制御します。これが `true` に設定されている場合、エージェントは最終イメージから削除されます。オプションが`false`に設定されている場合、エージェントは新しい AMI に含まれるように残され デフォルト値は `false` です。
**注記**  
`uninstallAfterBuild` 属性が JSON ファイルに含まれておらず、次の条件に当てはまる場合、Image Builder は最終イメージから Systems Manager エージェントを削除し、AMI で使用できないようにします。  
`userDataOverride` は空であるか、JSON ファイルから省略されています。
Image Builder は、ベースイメージにエージェントがプリインストールされていないオペレーティングシステムのビルドインスタンスに Systems Manager エージェントを自動的にインストールしました。
     + ** ユーザーデータの上書き** (文字列) — 構築インスタンスを起動するときに実行するコマンドまたはコマンドスクリプトを指定します。
**注記**  
ユーザーデータは常に 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-1234567890abcdef1",
   "semanticVersion": "1.0.0",
   "components": [
   	{
   		"componentArn": "arn:aws:imagebuilder:us-west-2:111122223333:component/bb$"
   	}
   ],
   "additionalInstanceConfiguration": {
   	"systemsManagerAgent": {
   	 	"uninstallAfterBuild": true
   	},
   	"userDataOverride": "IyEvYmluL2Jhc2gKbWtkaXIgLXAgL3Zhci9iYi8KdG91Y2ggL3Zhcg=="
   }
   }
   ```

------
#### [ Windows ]

   次の例は、Windows Server 2016 英語版フルベースイメージの最新バージョンを参照しています。この例の ARN は、指定したセマンティックバージョンフィルターに基づいて最新のイメージを参照します。 `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:111122223333:component/my-example-component/2019.12.02/1"
   	},
   	{
   		"componentArn": "arn:aws:imagebuilder:us-west-2:111122223333:component/my-imported-component/1.0.0/1"
   	}
   ]
   }
   ```

**注記**  
Image Builder リソースのセマンティックバージョニングの詳細については、[Image Builder でのセマンティックバージョニング](ibhow-semantic-versioning.md)を参照してください。

------
#### [ macOS ]

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

   ```
   {
   "name": "macOS Catalina Image recipe",
   "description": "Hello World image recipe for macOS.",
   "parentImage": "ami-1234567890abcdef1",
   "semanticVersion": "1.0.0",
   "components": [
   	{
   		"componentArn": "arn:aws:imagebuilder:us-west-2:111122223333:component/catalina$"
   	}
   ],
   "additionalInstanceConfiguration": {
   	"systemsManagerAgent": {
   	 	"uninstallAfterBuild": true
   	},
   	"userDataOverride": "IyEvYmluL2Jhc2gKbWtkaXIgLXAgL3Zhci9iYi8KdG91Y2ggL3Zhcg=="
   }
   }
   ```

------

   **例: コンポーネントのないレシピ**

   レシピは、既存の AMIsまたはディストリビューション専用のワークフローをテストするためのコンポーネントなしで作成できます。次の例は、追加のコンポーネントを適用せずに既存の AMI を使用するレシピを示しています。

   ```
   {
   	"name": "Test Distribution Recipe",
   	"description": "Recipe for testing and distributing existing AMI without modifications.",
   	"parentImage": "ami-1234567890abcdef1",
   	"semanticVersion": "1.0.0",
   	"additionalInstanceConfiguration": {
   		"systemsManagerAgent": {
   		 	"uninstallAfterBuild": true
   		}
   	}
   }
   ```

1. 

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

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

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

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

## VM をベースイメージとしてコンソールにインポートする
<a name="import-vm-recipes"></a>

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

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

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

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

### VM インポート設定
<a name="import-vm-recipe-console-config"></a>

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

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

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

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

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

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

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

#### 詳細設定 - オプション
<a name="import-vm-recipe-console-opt"></a>

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

**General**

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

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

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

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

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

# 新しいコンテナレシピのバージョンを作成
<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 ではフォーワードスラッシュ (/) が使用されます。

## リソースをクリーンアップする
<a name="recipes-cleanup"></a>

予期しない料金が発生しないように、このガイドの例で作成したリソースとパイプラインは必ずクリーンアップしてください。Image Builder でのリソースの削除については、「[未使用または古くなった Image Builder リソースの削除](delete-resources.md)」を参照してください。

# Image Builder インフラストラクチャ設定の管理
<a name="manage-infra-config"></a>

インフラストラクチャ設定を使用して、Image Builder が EC2 Image Builder イメージの構築とテストに使用する Amazon EC2 インフラストラクチャを指定できます。インフラストラクチャには次のような設定が含まれています。
+ ビルドおよびテストインフラストラクチャーのインスタンスタイプ。複数のインスタンスタイプを指定することをお勧めします。これにより、Image Builder は十分な容量のプールからインスタンスを起動できます。これにより、一時的なビルドエラーを減らすことができます。

  Mac イメージでは、macOS オペレーティングシステムをネイティブにサポートするインスタンスタイプを選択することもできます。詳細については、「*Amazon EC2 ユーザーガイド*」の「[Amazon EC2 Mac インスタンス](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-mac-instances.html)」を参照してください。
+ インスタンス配置の設定。イメージからのインスタンスが起動する先のホスト、ホストプレイスメントグループ、またはアベイラビリティーゾーンを指定できます。
+ ビルドインスタンスとテストインスタンスにカスタマイズアクティビティの実行に必要な権限を与えるインスタンスプロファイル。例えば、Amazon S3 からリソースを取得するコンポーネントがある場合、インスタンスプロファイルにはそれらのファイルにアクセスするためのアクセス権限が必要です。インスタンスプロファイルには、EC2 Image Builder がインスタンスと正常に通信するための最小限の権限セットも必要です。詳細については、「[Image Builder を使用してカスタムイメージをビルドするためのセットアップ](set-up-ib-env.md)」を参照してください。
+ パイプラインのビルドインスタンスとテストインスタンスの VPC、サブネット、およびセキュリティグループ。
+ Image Builder がビルドとテストのアプリケーションログを保存する Amazon S3 の場所。ロギングを設定する場合、インフラストラクチャ構成で指定されたインスタンスプロファイルは、ターゲットバケット(`arn:aws:s3:::BucketName/*`)に対して`s3:PutObject`の権限を持っている必要があります。
+ ビルドが失敗し、`terminateInstanceOnFailure` を `false` に設定していた場合、Amazon EC2 キーペアを通じてインスタンスにログオンし、トラブルシューティングを行うことができます。
+ Image Builder がイベント通知を送信する SNS トピックです。Image Builder と Amazon SNS との統合の詳細については、「[Image Builder における Amazon SNS の統合](integ-sns.md)」を参照してください。
**注記**  
SNS トピックが暗号化されている場合、このトピックを暗号化するキーは、Image Builder サービスが実行されるアカウントにある必要があります。Image Builder は、他のアカウントのキーで暗号化された SNS トピックに通知を送信できません。

Image Builder コンソール、Image Builder API、または AWS CLIの **imagebuilder** コマンドを使用して、インフラストラクチャ設定を作成および管理できます。

**Topics**
+ [

# インフラストラクチャ設定の詳細を一覧表示および表示する
](infra-config-details.md)
+ [

# インフラストラクチャ構成を作成します。
](create-infra-config.md)
+ [

# インフラストラクチャ設定を更新する
](update-infra-config.md)
+ [

# Image Builder と AWS PrivateLink インターフェイス VPC エンドポイント
](vpc-interface-endpoints.md)

**ヒント**  
同じ型のリソースが複数にある場合に、割り当てたタグに基づいて特定のリソースをすばやく識別できます。の Image Builder コマンドを使用したリソースのタグ付けの詳細については AWS CLI、このガイドの[リソースにタグを付ける](tag-resources.md)「」セクションを参照してください。

# インフラストラクチャ設定の詳細を一覧表示および表示する
<a name="infra-config-details"></a>

このセクションでは、EC2 Image Builder インフラストラクチャ構成の情報を検索し、詳細を表示するさまざまな方法について説明します。

**Topics**
+ [

## からインフラストラクチャ設定を一覧表示する AWS CLI
](#cli-list-infrastructure-configurations)
+ [

## からインフラストラクチャ設定の詳細を取得する AWS CLI
](#cli-get-infrastructure-configuration-details)

## からインフラストラクチャ設定を一覧表示する AWS CLI
<a name="cli-list-infrastructure-configurations"></a>

次の例では、**[list-infrastructure-configurations](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/list-infrastructure-configurations.html)**コマンドを AWS CLIコマンドで使用し、すべてのインフラストラクチャーコンフィギュレーションをリストアップする方法を示している。

```
aws imagebuilder list-infrastructure-configurations
```

## からインフラストラクチャ設定の詳細を取得する AWS CLI
<a name="cli-get-infrastructure-configuration-details"></a>

次の例は、 で **[get-infrastructure-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/get-infrastructure-configuration.html)** コマンドを使用して、Amazon リソースネーム (ARN) を指定してインフラストラクチャ設定の詳細 AWS CLI を取得する方法を示しています。

```
aws imagebuilder get-infrastructure-configuration --infrastructure-configuration-arn arn:aws:imagebuilder:us-west-2:123456789012:infrastructure-configuration/my-example-infrastructure-configuration
```

# インフラストラクチャ構成を作成します。
<a name="create-infra-config"></a>

このセクションでは、 で Image Builder コンソールまたは **imagebuilder** コマンドを使用してインフラストラクチャ設定 AWS CLI を作成する方法について説明します。

------
#### [ Console ]

Image Builder コンソールでインフラストラクチャ設定リソースを作成するには、次の手順に従います。

1. [https://console.aws.amazon.com/imagebuilder/](https://console.aws.amazon.com/imagebuilder/) で、EC2 Image Builder コンソールを開きます。

1. ナビゲーションペインで、**インフラストラクチャー設定** を選択します。

1. **インフラストラクチャー構成の作成** を選択します。

1. **全般** セクションに、以下の情報を入力します。
   + インフラストラクチャー設定リソースの**名前** を入力します。
   + ビルドインスタンスとテストインスタンスのコンポーネントアクセス許可についてインスタンスプロファイルに関連付ける **[IAM ロール]** を選択します。Image Builder はこれらの権限を使用して、コンポーネントのダウンロードと実行、CloudWatch へのログのアップロード、およびレシピ内のコンポーネントで指定されている追加アクションの実行を行います。

1. **[AWS インフラストラクチャ]** パネルでは、利用可能な残りのすべてのインフラストラクチャ設定を構成できます。以下の必須情報を入力します。
   + **インスタンスタイプ** — このビルドに使用するインスタンスタイプを 1 つ以上指定できます。サービスは可用性に基づいてこれらのインスタンスタイプから 1 つを選択します。
**注記**  
Mac インスタンスは、専有ホストの `.metal` インスタンスタイプで実行されます。指定するインスタンスタイプは、実行するホストに定義されているタイプのいずれかと一致する必要があります。Mac インスタンスの詳細と、macOS オペレーティングシステムをネイティブにサポートするインスタンスタイプの一覧については、「*Amazon EC2 ユーザーガイド*」の「[Amazon EC2 Mac インスタンス](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-mac-instances.html)」を参照してください。
   + **SNS トピック (オプション)** - EC2 Image Builder からの通知とアラートを受信する SNS トピックを選択します。

   以下の設定に値を指定しない場合、該当する場合、サービス固有のデフォルトが使用されます。
   + **VPC、サブネット、セキュリティグループ** — Image Builder はデフォルトの VPC とサブネットを使用します。VPC インターフェイスエンドポイントの設定の詳細については、「[Image Builder と AWS PrivateLink インターフェイス VPC エンドポイント](vpc-interface-endpoints.md)」を参照してください。
   + **トラブルシューティング設定** セクションでは、以下の値を設定できます。
     + デフォルトでは、**障害発生時にインスタンスを終了** チェックボックスが選択されています。ただし、ビルドが失敗した場合、EC2 インスタンスにログオンしてトラブルシューティングを行うことができます。ビルドが失敗した後もインスタンスを実行し続けるには、このチェックボックスをオフにします。
     + **キーペア** — ビルドが失敗した後も EC2 インスタンスが実行され続ける場合は、キーペアを作成するか、既存のキーペアを使用してインスタンスにログオンし、トラブルシューティングを行うことができます。
     + **ログ** — Image Builder がビルドとテストのトラブルシューティングに役立つアプリケーションログを書き込める S3 バケットを指定できます。S3 バケットを指定しない場合、Image Builder はアプリケーションログをインスタンスに書き込みます。
   + **インスタンスメタデータ設定** セクションでは、Image Builder がイメージのビルドとテストに使用する EC2 インスタンスに適用する次の値を設定できます。
     + **メタデータバージョン** を選択して、EC2 がインスタンスのメタデータの取得リクエストで、署名付きトークンヘッダーを必要とするかどうかを判断します。
       + **V1 と V2 (トークンはオプション)** — 何も選択しない場合のデフォルト値。
       + **V2 (トークンが必要)**
**注記**  
Image Builder がパイプラインビルドから起動するすべての EC2 インスタンスを IMDSv2 を使用するように設定して、インスタンスメタデータの取得リクエストに署名付きトークンヘッダーが必要になるようにすることをお勧めします。
     + **メタデータトークンの応答ホップ上限数** – メタデータトークンに輸送できるネットワークホップ数。最小ホップ:1、最大ホップ:64、デフォルトは 1 ホップ。
   + **[インスタンス配置の設定]** セクションでは、Image Builder がイメージのビルドとテストに使用する EC2 インスタンスに適用する次の値を設定できます。
     + イメージの作成中に Image Builder がインスタンスを起動する **[アベイラビリティーゾーン]** を選択できます。
     + 必要に応じて、起動したインスタンスを実行するサーバーの **[テナンシー]** を選択します。デフォルトでは、EC2 インスタンスは共有テナンシーハードウェアで実行されます。つまり、複数の AWS アカウント が同じ物理ハードウェアを共有する可能性があります。`dedicated` テナンシーのインスタンスは、シングルテナントのハードウェアで実行されます。`host` テナンシーのインスタンスは、専有ホストで実行されます。

       Mac インスタンスには、カスタムイメージのビルド前に前提条件として作成された専有ホストが必要です。macOS イメージ用の `host` を選択します。その後、インスタンスを起動するターゲットホストまたはホストリソースグループを選択できますが、専有ホストで自動配置が有効になっている場合は必須ではありません。詳細については、「*Amazon EC2 ユーザーガイド*」の「[自動配置](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/dedicated-hosts-understanding.html#dedicated-hosts-auto-placement)」を参照してください。
       + **[テナンシーのホスト ID]** - インスタンスが実行される専有ホストの ID。
       + **[テナンシーのホストリソースグループ]** - インスタンスを起動するホストリソースグループの Amazon リソースネーム (ARN)。

1. **[インフラストラクチャタグ]** セクション (オプション) では、Image Builder がビルドプロセス中に起動する Amazon EC2 インスタンスにメタデータタグを割り当てることができます。タグはキーと値のペアとして入力します。

1. **[タグ]** セクション (オプション) では、Image Builder が出力として作成するインフラストラクチャ設定リソースにメタデータタグを割り当てることができます。タグはキーと値のペアとして入力します。

------
#### [ AWS CLI ]

以下の手順では、 AWS CLIで Image Builder の **[create-infrastructure-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/create-infrastructure-configuration.html)** コマンドを使用して、イメージのインフラストラクチャを設定する方法を示します。手順 2 のコマンドには、手順 1 で作成したファイルを指定します。これらの例では、手順 1 のファイルを `create-infrastructure-configuration.json` として参照しています。

1. 

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

   次の例は、インフラストラクチャ設定用に作成できる JSON ファイルのバリエーションを示しています。ファイル編集ツールを使用して独自の JSON ファイルを作成してください。

   **例 1: 失敗したビルドのインスタンスを保持する設定**

   この例では、`m5.large` と `m5.xlarge` の 2 つのインスタンスタイプを指定します。複数のインスタンスタイプを指定することをお勧めします。これにより、Image Builder は十分な容量のプールからインスタンスを起動できます。これにより、一時的なビルドエラーを減らすことができます。

   `instanceProfileName` はプロファイルがカスタマイズアクティビティを実行するのに必要な権限をインスタンスに提供するインスタンスプロファイルを指定します。例えば、Amazon S3 からリソースを取得するコンポーネントがある場合、インスタンスプロファイルにはそれらのファイルにアクセスするためのアクセス権限が必要です。インスタンスプロファイルには、EC2 Image Builder がインスタンスと正常に通信するための最小限の権限セットも必要です。詳細については、「[Image Builder を使用してカスタムイメージをビルドするためのセットアップ](set-up-ib-env.md)」を参照してください。

   ```
   {
       "name": "ExampleInfraConfigDontTerminate",
       "description": "An example that will retain instances of failed builds",
       "instanceTypes": [
           "m5.large", "m5.xlarge"
       ],
       "instanceProfileName": "myIAMInstanceProfileName",
       "securityGroupIds": [
           "sg-12345678"
       ],
       "subnetId": "sub-12345678",
       "logging": {
           "s3Logs": {
               "s3BucketName": "my-logging-bucket",
               "s3KeyPrefix": "my-path"
           }
       },
       "keyPair": "myKeyPairName",
       "terminateInstanceOnFailure": false,
       "snsTopicArn": "arn:aws:sns:us-west-2:123456789012:MyTopic"
   }
   ```

**例 2: 自動配置が有効な macOS 設定**  
この例では、専有ホストで自動配置が有効になっている Mac インスタンスのインスタンスタイプとプレイスメントを指定します。

   ```
   {
      "name": "macOSInfraConfigAutoPlacement",
      "description": "An example infrastructure configuration for macOS.",
      "instanceProfileName": "EC2InstanceProfileForImageBuilder",
      "instanceTypes": ["mac1.metal, mac2.metal"],
      "terminateInstanceOnFailure": false,
      "placement": {
         "tenancy": "host"
      }
   }
   ```

**例 3: ホスト ID が指定された macOS 設定**  
この例では、特定の専有ホストをターゲットとする Mac インスタンスのインスタンスタイプとプレイスメントを指定します。

   ```
   {
      "name": "macOSInfraConfigHostPlacement",
      "description": "An example infrastructure configuration for macOS.",
      "instanceProfileName": "EC2InstanceProfileForImageBuilder",
      "instanceTypes": ["mac2-m1ultra.metal"],
      "terminateInstanceOnFailure": false,
      "placement": {
         "tenancy": "host",
         "hostId" : "h-1234567890abcdef0"
      }
   }
   ```

1. 

**以下のコマンドを実行する際には、作成したファイルを入力として使用します。**

   ```
   aws imagebuilder create-infrastructure-configuration --cli-input-json file://create-infrastructure-configuration.json
   ```

------

# インフラストラクチャ設定を更新する
<a name="update-infra-config"></a>

このセクションでは、 で Image Builder コンソールまたは **imagebuilder** コマンドを使用してインフラストラクチャ設定リソース AWS CLI を更新する方法について説明します。リソースを追跡するには、次のようにタグを適用できます。タグはキーと値のペアとして入力します。
+ *リソースタグ*は、Image Builder がビルドプロセス中に起動する Amazon EC2 インスタンスにメタデータタグを割り当てます。
+ *タグ*は、Image Builder が出力として作成するインフラストラクチャ設定リソースにメタデータタグを割り当てます。

------
#### [ Console ]

Image Builder コンソールから以下のインフラストラクチャー設定の詳細を編集できます。
+ インフラストラクチャ設定の **説明**。
+ **[IAM ロール]** をインスタンスプロファイルに関連付けます。
+ **インスタンスタイプ**や通知用の **SNS トピック**を含む **AWS インフラストラクチャ**。
+ **VPC、サブネット、セキュリティグループ**。
+ **障害発生時にインスタンスを終了する**、**接続用のキーペア**、インスタンス Log 用のオプションの S3 バケットの場所などの**トラブルシューティング設定**。

Image Builder コンソールからインフラストラクチャ構成リソースを更新するには、以下の手順に従います。

**既存の Image Builder インフラストラクチャー構成を選択してください**

1. [https://console.aws.amazon.com/imagebuilder/](https://console.aws.amazon.com/imagebuilder/) で、EC2 Image Builder コンソールを開きます。

1. アカウントのインフラストラクチャー設定リソースのリストを表示するには、ナビゲーションペインから **インフラストラクチャー設定** を選択します。

1. インフラストラクチャー設定の詳細を表示したり編集したりするには、「**設定名**」リンクを選択します。これにより、インフラストラクチャ設定の詳細ビューが開きます。
**注記**  
**設定名** の横にあるボックスをオンにして、**詳細を表示** を選択することもできます。

1. **インフラストラクチャー詳細** パネルの右上隅から **編集** を選択します。

1. インフラストラクチャー設定に加えた更新を保存する準備ができたら、**変更を保存** を選択します。

------
#### [ AWS CLI ]

次の例は、 AWS CLIで Image Builder の **[update-infrastructure-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/update-infrastructure-configuration.html)** コマンドを使用して、イメージのインフラストラクチャ設定を更新する方法を示しています。

1. 

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

   このインフラストラクチャー設定例では、create の例と同じ設定を使用していますが、`terminateInstanceOnFailure`設定を `false` に更新している点が異なります。**update-infrastructure-configuration**コマンドを実行した後、このインフラストラクチャ構成を使用するパイプラインは、ビルドが失敗するとビルドインスタンスとテストインスタンスを終了します。

   ファイル編集ツールを使用して、次の例に示すキーと環境に有効な値を含む JSON ファイルを作成します。この例では、`update-infrastructure-configuration.json`という名前のファイルを使用します。

   ```
   {
   "infrastructureConfigurationArn": "arn:aws:imagebuilder:us-west-2:123456789012:infrastructure-configuration/my-example-infrastructure-configuration",
   "description": "An example that will terminate instances of failed builds",
   "instanceTypes": [
       "m5.large", "m5.2xlarge"
   ],
   "instanceProfileName": "myIAMInstanceProfileName",
   "securityGroupIds": [
       "sg-12345678"
   ],
   "subnetId": "sub-12345678",
   "logging": {
       "s3Logs": {
           "s3BucketName": "my-logging-bucket",
           "s3KeyPrefix": "my-path"
       }
   },
   "terminateInstanceOnFailure": true,
   "snsTopicArn": "arn:aws:sns:us-west-2:123456789012:MyTopic"
   }
   ```

1. 

**以下のコマンドを実行する際には、作成したファイルを入力として使用します。**

   ```
   aws imagebuilder update-infrastructure-configuration --cli-input-json file://update-infrastructure-configuration.json
   ```

------

# Image Builder と AWS PrivateLink インターフェイス VPC エンドポイント
<a name="vpc-interface-endpoints"></a>

VPC と EC2 Image Builder の間にプライベート接続を確立するには、インターフェイス VPC エンドポイントを作成します。インターフェイスエンドポイントは、インターネットゲートウェイ[AWS PrivateLink](https://aws.amazon.com/privatelink/)、NAT デバイス、VPN 接続、または Direct Connect 接続なしで Image Builder APIs にプライベートにアクセスできるテクノロジーである を利用しています。VPC のインスタンスは、パブリック IP アドレスがなくても API と通信できます。VPC と Image Builder 間のトラフィックは、Amazon のネットワークから出ることはありません。

各インターフェースエンドポイントは、サブネット内の 1 つ以上の [Elastic Network Interface](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html) によって表されます。新しいイメージを作成するときに、インフラストラクチャ設定で VPC subnet-id を指定できます。

**注記**  
VPC 内からアクセスする各サービスには、独自のエンドポイントポリシーを持つ独自のインターフェイスエンドポイントがあります。Image Builder は AWSTOE コンポーネントマネージャーアプリケーションをダウンロードし、S3 バケットからマネージドリソースにアクセスしてカスタムイメージを作成します。これらのバケットへのアクセスを許可するには、S3 エンドポイントポリシーを更新して許可する必要があります。詳細については、「[S3 バケットアクセスのカスタムポリシー](#vpc-endpoint-policy-s3)」を参照してください。

VPC エンドポイントの詳細については、Amazon VPC ユーザーガイドの「[インターフェイス VPC エンドポイント (AWS PrivateLink PrivateLink)](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html)」を参照してください。

## Image Builder VPC エンドポイントに関する考慮事項
<a name="vpc-endpoint-considerations"></a>

Image Builder 用のインターフェース VPC エンドポイントを設定する前に、Amazon VPC User Guide の[インターフェースエンドポイントのプロパティと制限事項](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#vpce-interface-limitations)を確認してください。

Image Builder は、VPC からすべての API アクションの呼び出しをサポートしています。

## Image Builder 用のインターフェース VPC エンドポイントを作成する
<a name="vpc-endpoint-create"></a>

Image Builder サービスの VPC エンドポイントを作成するには、Amazon VPC コンソールまたは AWS Command Line Interface () を使用できますAWS CLI。詳細については、「Amazon VPC ユーザーガイド」の[インターフェイスエンドポイントの作成](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint)を参照してください。

以下のサービス名を使用して、Image Builder 用の VPC エンドポイントを作成します。
+ com.amazonaws.*region*.imagebuilder

エンドポイントのプライベート DNS を有効にすると、リージョンのデフォルト DNS 名 (`imagebuilder.us-east-1.amazonaws.com` など) を使用して、QLDB への API リクエストを実行できます。対象のリージョンに適用されるエンドポイントを調べるには、Amazon Web Services 全般のリファレンスの[EC2 Image Builder のエンドポイントとクォータ](https://docs.aws.amazon.com/general/latest/gr/imagebuilder.html#imagebuilder_region)を参照する。

詳細については、*Amazon VPC User Guide*の[インターフェースエンドポイントを介したサービスへのアクセス](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#access-service-though-endpoint)を参照してください。

## Image Builder 用 VPC エンドポイントポリシーの作成
<a name="vpc-endpoint-policy"></a>

VPC エンドポイントには、 へのアクセスを制御するエンドポイントポリシーをアタッチできます。このポリシーでは、以下の情報を指定します。
+ アクションを実行できるプリンシパル。
+ 実行可能なアクション。
+ アクションを実行できるリソース。

レシピで Amazon が管理するコンポーネントを使用している場合、Image Builder の VPC エンドポイントは、以下のサービス所有のコンポーネントライブラリへのアクセスを許可する必要があります。

`arn:aws:imagebuilder:region:aws:component/*`

**重要**  
EC2 Image Builder のインターフェイス VPC エンドポイントにデフォルト以外のポリシーが適用されると、 からの失敗など、失敗した特定の API リクエストは`RequestLimitExceeded`、 AWS CloudTrail または Amazon CloudWatch にログ記録されない場合があります。

詳細については、「*Amazon VPC ユーザーガイド*」の「[VPC エンドポイントによるサービスのアクセスコントロール](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html)」を参照してください。

### S3 バケットアクセスのカスタムポリシー
<a name="vpc-endpoint-policy-s3"></a>

Image Builder は、公開されている S3 バケットを使用して、コンポーネントなどの管理対象リソースを保存し、アクセスします。また、別の S3 バケットから AWSTOE コンポーネント管理アプリケーションをダウンロードします。環境で Amazon S3 の VPC エンドポイントを使用している場合、S3 VPC エンドポイントポリシーで Image Builder が以下の S3 バケットにアクセスできるようにする必要があります。バケット名は、 AWS リージョン (*リージョン*) とアプリケーション環境 (*環境*) ごとに一意です。Image Builder と は`prod`、、`preprod`、および のアプリケーション環境 AWSTOE をサポートします`beta`。
+  AWSTOE コンポーネントマネージャーバケット:

  ```
  s3://ec2imagebuilder-toe-region-environment
  ```

  **例:** s3://ec2imagebuilder-toe-us-west-2-prod/\$1
+ Image Builder 管理リソースバケット:

  ```
  s3://ec2imagebuilder-managed-resources-region-environment/components
  ```

  **例:** s3://ec2imagebuilder-managed-resources-us-west-2-prod/components/\$1

### VPC エンドポイントポリシーの例
<a name="vpc-endpoint-policy-examples"></a>

このセクションには、カスタム VPC エンドポイントポリシーの例が含まれています。

**Image Builder アクションの一般的な VPC エンドポイントポリシー**  
次の Image Builder のエンドポイントポリシー例では、Image Builder のイメージとコンポーネントを削除する権限を拒否しています。このポリシー例では、EC2 Image Builder の他のすべてのアクションを実行する権限も付与している。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": "imagebuilder:*",
            "Effect": "Allow",
            "Resource": "*"
        },
        {
            "Action": "imagebuilder:DeleteImage",
            "Effect": "Deny",
            "Resource": "*"
        },
        {
            "Action": "imagebuilder:DeleteComponent",
            "Effect": "Deny",
            "Resource": "*"
        }
    ]
}
```

------

**組織ごとにアクセスを制限し、管理対象コンポーネントへのアクセスを許可する**  
次のエンドポイントポリシーの例は、組織に属している ID とリソースにアクセスを限定し、Amazon が管理する Image Builder コンポーネントへのアクセスを提供する方法を示しています。*region*、*principal-org-id*、*resource-org-id* を組織の値に置き換えます。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowRequestsByOrgsIdentitiesToOrgsResources",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "*",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:PrincipalOrgID": "principal-org-id",
                    "aws:ResourceOrgID": "resource-org-id"
                }
            }
        },
        {
            "Sid": "AllowAccessToEC2ImageBuilderComponents",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": [
                "imagebuilder:GetComponent"
            ],
            "Resource": [
                "arn:aws:imagebuilder:us-east-1:aws:component/*"
            ]
        }
    ]
}
```

------

**Amazon S3 バケットアクセスの VPC エンドポイントポリシー**  
以下の S3 エンドポイントポリシーの例では、Image Builder がカスタムイメージの構築に使用する S3 バケットへのアクセスを提供する方法を示しています。 *リージョン* と *環境* を組織の値に置き換えてください。アプリケーションの要件に基づいて、その他の必要な権限をポリシーに追加します。

**注記**  
Linux イメージでは、イメージレシピにユーザーデータが指定されていない場合、Image Builder は、イメージのビルドインスタンスとテストインスタンスに Systems Manager エージェントをダウンロードしてインストールするスクリプトを追加します。エージェントをダウンロードするために、Image Builder はビルドリージョンの S3 バケットにアクセスします。  
Image Builder がビルドインスタンスとテストインスタンスをブートストラップできるようにするには、次のリソースを S3 エンドポイントポリシーに追加します。  
"`arn:aws:s3:::amazon-ssm-region/*`"

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowImageBuilderAccessToAppAndComponentBuckets",
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": [
        "s3:GetObject"
      ],
      "Resource": [
        "arn:aws:s3:::ec2imagebuilder-toe-region-environment/*",
        "arn:aws:s3:::ec2imagebuilder-managed-resources-region-environment/components/*"
      ]
    }
  ]
}
```

------

# Image Builder のディストリビューション設定の管理
<a name="manage-distribution-settings"></a>

出力イメージのディストリビューション設定を構成する前に、ディストリビューションのターゲットリージョンで、出力イメージから起動されるインスタンスの基盤となるインフラストラクチャやその他の要件が利用可能であるかどうかを確認することをお勧めします。例えば、macOS イメージからインスタンスを起動するために必要な EC2 Mac 専有ホストは、すべてのリージョンでサポートされているわけではありません。専有ホストのインスタンスタイプと料金の詳細については、「[Amazon EC2 Dedicated Hosts の料金](https://aws.amazon.com/ec2/dedicated-hosts/pricing/)」を参照してください。

Image Builder でディストリビューション設定を作成した後は、Image Builder コンソール、Image Builder API、または AWS CLIの **imagebuilder** コマンドを使用してディストリビューション設定を管理できます。ディストリビューション設定では、以下のアクションを実行できます。

**AMI ディストリビューション**
+ 出力 AMI の名前と説明を指定します。
+ 他の AWS アカウント、組織、および OUs が所有者のアカウントから AMI を起動することを許可します。所有者アカウントには、AMI に関連する料金が請求されます。
**注記**  
AMI をパブリックにするには、起動許可アカウントを `all` に設定します。情報と例については、「*Amazon EC2 API リファレンス*」の「**[ModifyImageAttribute](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyImageAttribute.html)**」を参照してください。
+ 宛先リージョン内の指定されたターゲットアカウント、組織、OUs のそれぞれについて、出力 AMI のコピーを作成します。対象となるアカウント、組織、OUs はそれぞれの AMI コピーを所有しており、関連する料金はすべて請求されます。AMI を AWS Organizations および OUs に配布する方法の詳細については、[「組織または OUs](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/share-amis-with-organizations-and-OUs.html)」を参照してください。
+ AMI を他の の所有者のアカウントにコピーします AWS リージョン。
+ VM Image Disk を Amazon Simple Storage Service (Amazon S3) にエクスポートします。詳細については、「[例: から出力 VM ディスクのディストリビューション設定を作成する AWS CLI](cr-upd-ami-distribution-settings.md#cli-create-vm-dist-config)」を参照してください。

**コンテナイメージの配布**
+ Image Builder が配布リージョン内の出力イメージを保存する ECR リポジトリを指定します。

ディストリビューション設定を次の方法で使用して、ターゲットリージョン、アカウント、 AWS Organizations 組織単位 (OUs) にイメージを 1 回、またはパイプラインビルドごとに配信できます。
+ 更新されたイメージを指定された地域、アカウント、Organizations、OUs に自動的に配信するには、スケジュールに従って実行される Image Builder パイプラインの配信設定を使用します。
+ 新しいイメージを作成して、指定したリージョン、アカウント、Organizations、OUs に配信するには、Image Builder コンソールから [**アクション**] メニューの **[パイプラインの実行]** を使用して、Image Builder コンソールから 1 回実行する Image Builder パイプラインの配布設定を使用します。
+ 新しいイメージを作成して、指定したリージョン、アカウント、Organizations、OUs に配信するには、次の API アクションまたは AWS CLIの Image Builder コマンドで配布設定を使用します。
  + Image Builder API での「**[CreateImage](https://docs.aws.amazon.com/imagebuilder/latest/APIReference/API_CreateImage.html)**」アクション。
  +  AWS CLIの**[create-image](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/create-image.html)**コマンド。
+ 通常のイメージビルドプロセスの一環として、仮想マシン (VM) イメージディスクをターゲットリージョンの S3 バケットにエクスポートすること。

**ヒント**  
同じ型のリソースが複数にある場合に、割り当てたタグに基づいて特定のリソースをすばやく識別できます。の Image Builder コマンドを使用したリソースのタグ付けの詳細については AWS CLI、このガイドの[リソースにタグを付ける](tag-resources.md)「」セクションを参照してください。

**Topics**
+ [

# ディストリビューション設定の一覧と詳細の表示
](distribution-settings-detail.md)
+ [

# AMI ディストリビューション設定の作成と更新
](cr-upd-ami-distribution-settings.md)
+ [

# コンテナイメージのディストリビューション設定を作成および更新する
](cr-upd-container-distribution-settings.md)
+ [

# Image Builder でクロスアカウント AMI ディストリビューションのセットアップ
](cross-account-dist.md)
+ [

# EC2 起動テンプレートを使用する AMI ディストリビューションの設定
](dist-using-launch-template.md)
+ [

# 拡張 AMI ディストリビューション機能を使用する
](distribution-enhanced_functionality.md)

# ディストリビューション設定の一覧と詳細の表示
<a name="distribution-settings-detail"></a>

このセクションでは、EC2 Image Builder のディストリビューション設定に関する情報を特定し、詳細を確認するためのさまざまな方法について説明します。

**Topics**
+ [

## コンソールでのディストリビューション設定の一覧表示
](#list-distribution-config-console)
+ [

## コンソールでのディストリビューション設定の詳細の表示
](#view-distribution-config-details-console)
+ [

## からディストリビューションを一覧表示する AWS CLI
](#cli-list-distributions)
+ [

## からディストリビューション設定の詳細を取得する AWS CLI
](#cli-get-distribution-configuration)

## コンソールでのディストリビューション設定の一覧表示
<a name="list-distribution-config-console"></a>

自分のアカウントで作成されたディストリビューション設定の一覧を Image Builder コンソールで確認するには、以下の手順に従います：

1. [https://console.aws.amazon.com/imagebuilder/](https://console.aws.amazon.com/imagebuilder/) で、EC2 Image Builder コンソールを開きます。

1. ナビゲーションペインから**配信設定**を選択します。アカウントで作成されたディストリビューション設定のリストが表示されます。

1. 詳細を表示したり、新しいディストリビューション設定を作成したりするには、**[設定名]**リンクを選択します。ディストリビューション設定の詳細ビューが開きます。
**注記**  
また、**設定名**の横にあるチェックボックスを選択し、**詳細を表示**を選択することもできます。

## コンソールでのディストリビューション設定の詳細の表示
<a name="view-distribution-config-details-console"></a>

Image Builder コンソールを使用して特定のディストリビューション設定の詳細を表示するには、「[コンソールでのディストリビューション設定の一覧表示](#list-distribution-config-console)」で説明されている手順を使用して、確認する設定を選択します。

ディストリビューションの詳細ページでは、次のことができます。
+ ディストリビューションの設定を**削**除する。Image Builder でのリソースの削除については、「[未使用または古くなった Image Builder リソースの削除](delete-resources.md)」を参照してください。
+ ディストリビューションの詳細を **[編集]** します。

## からディストリビューションを一覧表示する AWS CLI
<a name="cli-list-distributions"></a>

次の例は、 で **[list-distribution-configurations](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/list-distribution-configurations.html)** コマンドを使用してすべてのディストリビューションを AWS CLI 一覧表示する方法を示しています。

```
aws imagebuilder list-distribution-configurations
```

## からディストリビューション設定の詳細を取得する AWS CLI
<a name="cli-get-distribution-configuration"></a>

次の例は、 で **[get-distribution-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/get-distribution-configuration.html)** コマンドを使用して、Amazon リソースネーム (ARN) を指定してディストリビューション設定の詳細 AWS CLI を取得する方法を示しています。

```
aws imagebuilder get-distribution-configuration --distribution-configuration-arn arn:aws:imagebuilder:us-west-2:123456789012:distribution-configuration/my-example-distribution-configuration
```

# AMI ディストリビューション設定の作成と更新
<a name="cr-upd-ami-distribution-settings"></a>

このセクションでは、Image Builder AMI のディストリビューション設定の作成と更新について説明します。

**Topics**
+ [

## AMI ディストリビューションの前提条件
](#ami-distribution-config-prereqs)
+ [

## AMI ディストリビューション設定を作成する
](#create-ami-distribution-config)
+ [

## AMI ディストリビューション設定を更新する
](#update-ami-distribution-config)
+ [

## 例: 出力 AMI の起動テンプレートを使用して EC2 Fast Launch を有効にする AMIs
](#create-ami-dist-win-fast-launch)
+ [

## 例: から出力 VM ディスクのディストリビューション設定を作成する AWS CLI
](#cli-create-vm-dist-config)

## AMI ディストリビューションの前提条件
<a name="ami-distribution-config-prereqs"></a>

一部のディストリビューション設定には、次のような前提条件があります。

**Topics**
+ [SSM 出力パラメータの前提条件](#ami-distribution-prereqs-ssm-param)
+ [EC2 Fast Launch の前提条件](#ami-distribution-prereqs-fast-launch)

### SSM 出力パラメータの前提条件
<a name="ami-distribution-prereqs-ssm-param"></a>

パラメータストアパラメータ (SSM AWS Systems Manager パラメータ) を設定する新しい AMI ディストリビューション設定を作成する前に、次の前提条件を満たしていることを確認してください。

**実行ロール**  
パイプラインを作成する場合、または で create-image コマンドを使用する場合は AWS CLI、Image Builder 実行ロールを 1 つだけ指定できます。Image Builder ワークフロー実行ロールを定義している場合は、そのロールに機能アクセス許可を追加します。それ以外の場合は、必要なアクセス許可を含む新しいカスタムロールを作成します。  
+ ディストリビューション中に出力 AMI ID を SSM パラメータに保存するには、Image Builder 実行ロールで `ssm:PutParameter`アクションを指定し、 パラメータをリソースとしてリストする必要があります。
+ パラメータデータ型を に設定`AWS EC2 Image`して、パラメータ値を AMI ID として検証するように Systems Manager にシグナルを送信する場合は、 `ec2:DescribeImages`アクションも追加する必要があります。

### EC2 Fast Launch の前提条件
<a name="ami-distribution-prereqs-fast-launch"></a>

EC2 Fast Launch for Windows AMIs の新しいディストリビューション設定を作成する前に、次の前提条件を満たしていることを確認してください。
+ EC2 Fast Launch を設定するときにカスタム起動テンプレートを指定すると、サービスはその起動テンプレートに定義されている VPC とその他設定を使用します。詳細については、[EC2 Fast Launch のセットアップ時に起動テンプレートを使用する](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/win-fast-launch-configure.html#win-fast-launch-with-template)」を参照してください。
+ カスタム起動テンプレートを使用して設定を行わない場合は、Image Builder がイメージの作成に使用する IAM ロールに[https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-iam-awsmanpol-EC2FastLaunchFullAccess.html](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-iam-awsmanpol-EC2FastLaunchFullAccess.html)ポリシーをアタッチする必要があります。パイプラインを作成する場合、または で create-image コマンドを使用する場合は AWS CLI、Image Builder 実行ロールを 1 つだけ指定できます。Image Builder ワークフロー実行ロールを定義している場合は、そのロールに機能アクセス許可を追加します。それ以外の場合は、必要なアクセス許可を含む新しいカスタムロールを作成します。

  次に、Image Builder がイメージをコピーすると、EC2 Fast Launch は に次のリソースを含む CloudFormation スタックを自動的に作成します AWS アカウント。
  + 仮想プライベートクラウド (VPC)
  + 複数のアベイラビリティーゾーンにまたがるプライベートサブネット
  + Instance Metadata Service Version 2 (IMDSv2) で設定された起動テンプレート
  + インバウンドルールまたはアウトバウンドルールがないセキュリティグループ

**注記**  
Image Builder では、EC2 高速起動を事前に有効にした AMI のクロスアカウントディストリビューションはサポートされていません。EC2 高速起動は配布先のアカウントから有効にする必要があります。

## AMI ディストリビューション設定を作成する
<a name="create-ami-distribution-config"></a>

ディストリビューション設定には、出力 AMI 名、暗号化の特定のリージョン設定、起動許可 AWS アカウント、出力 AMI を起動できる組織および組織単位 (OUs)、ライセンス設定が含まれます。

ディストリビューション設定では、出力 AMI の名前と説明を指定し、他の AWS アカウント に AMI の起動を許可し、AMI を他のアカウントにコピーして、AMI を他の AWS リージョンにレプリケートできます。また、AMI を Amazon Simple Storage Service (Amazon S3) にエクスポートしたり、出力 Windows AMI 用に EC2 高速起動を設定したりすることもできます。AMI をパブリックにするには、起動許可アカウントを `all` に設定します。EC2 **[ModifyImageAttribute](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyImageAttribute.html)** で AMI を公開する例を参照されたい。

------
#### [ Console ]

で新しい AMI ディストリビューション設定を作成するには、次の手順に従います AWS マネジメントコンソール。

1. [https://console.aws.amazon.com/imagebuilder/](https://console.aws.amazon.com/imagebuilder/) で、EC2 Image Builder コンソールを開きます。

1. ナビゲーションペインから**配信設定**を選択します。アカウントで作成されたディストリビューション設定のリストが表示されます。

1. **[ディストリビューション設定]**パネルの上部にある**[ディストリビューション設定を作成]**を選択します。

1. **イメージタイプ**セクションで、**Amazon マシンイメージ (AMI)** 出力タイプを選択します。

1. **全般**セクションで、ディストリビューション設定の**[名前]**とオプションの説明を入力します。

1. **[リージョン設定]**セクションで、AMI を配布する各リージョンについて次の詳細を入力します。

   1. AMI は、デフォルトで現在のリージョン (**[リージョン 1]**) に配布されます。**[リージョン 1]**は配信のソースです。**[リージョン 1]**の一部の設定は編集できません。追加するどのリージョンでも、**[リージョン]**ドロップダウンリストからリージョンを選択できます。

      **Kms キー** AWS KMS key は、ターゲットリージョン内のイメージの EBS ボリュームを暗号化するために使用される を識別します。これは、ビルドがソースリージョン (**[リージョン 1]**) のアカウントで作成した元の AMI には適用されないことに注意してください。ビルドの配布フェーズで実行される暗号化は、他のアカウントまたはリージョンに配布されるイメージのみに適用されます。

      アカウントのソースリージョンで作成された AMI の EBS ボリュームを暗号化するには、イメージレシピブロックデバイスマッピング (コンソールの**[ストレージ (ボリューム)]**) で KMS キーを設定する必要があります。

      Image Builder は、リージョンに指定した**[ターゲットアカウント]**に AMI をコピーします。
**前提条件**  
アカウントをまたいでイメージをコピーするには、すべてのディストリビューションターゲットアカウントに `EC2ImageBuilderDistributionCrossAccountRole` ロールを作成し、そのロールに [Ec2ImageBuilderCrossAccountDistributionAccess ポリシー](security-iam-awsmanpol.md#sec-iam-manpol-Ec2ImageBuilderCrossAccountDistributionAccess) マネージドポリシーをアタッチする必要があります。

      **[出力 AMI 名]** はオプションです。名前を指定すると、最終的に出力される AMI 名には、AMI が構築されたときのタイムスタンプが付加されます。名前を指定しないと、Image Builder はビルドタイムスタンプをレシピ名に追加します。これにより、ビルドごとに一意の AMI 名が保証されます。

      1. AMI 共有を使用すると、指定された AWS プリンシパルに AMI からインスタンスを起動するためのアクセスを許可できます。**[AMI 共有]** セクションを展開すると、次の詳細を入力できます。
         + **起動許可** – AMI を**プライベート**に保ち、特定の AWS プリンシパルがプライベート AMI からインスタンスを起動するためのアクセスを許可する場合は、プライベートを選択します。AMI をパブリックにする場合は、[**パブリック**]を選択します。任意の AWS プリンシパルは、パブリック AMI からインスタンスを起動できます。
         + **プリンシ**パル – インスタンスを起動するために、次のタイプの AWS プリンシパルへのアクセスを許可できます。
           + **AWS アカウント** – 特定の AWS アカウントへのアクセス権を付与します。
           + **[組織単位 (OU)]** — OU とそのすべての子エンティティへのアクセスを許可します。子エンティティには OUsと AWS アカウントが含まれます。
           + **組織** – AWS Organizationsとそのすべての子エンティティへのアクセスを許可します。子エンティティには OUsと AWS アカウントが含まれます。

             まず、プリンシパルタイプを選択します。次に、アクセスを許可したい AWS プリンシパルの ID をドロップダウンリストの右側のボックスに入力します。異なるタイプの複数の ID を入力できます。

      1. **ライセンス設定**セクションを展開して、 で作成されたライセンス設定を Image Builder イメージ AWS License Manager にアタッチできます。ライセンスコンフィギュレーションには、企業契約の条件に基づくライセンスルールが含まれています。Image Builder には、ベース AMI に関連付けられたライセンス設定が自動的に含まれます。

      1. **[起動テンプレート設定]**セクションを展開して、作成した AMI からインスタンスを起動するために使用する EC2 起動テンプレートを指定できます。

         EC2 起動テンプレートを使用している場合は、ビルドの完了後に最新の AMI ID を含む起動テンプレートの新しいバージョンを作成するように Image Builder に指示できます。起動テンプレートを更新するには、次のように設定を行います。
         + **[起動テンプレート名]** — Image Builder で更新する起動テンプレートの名前を選択します。
         + **[デフォルトバージョンを設定]** — 起動テンプレートのデフォルトバージョンを新しいバージョンに更新するには、このチェックボックスを選択します。

         別のローンチテンプレート設定を追加するには、**Add launch template configuration** を選択します。リージョンあたり最大 5 つの起動テンプレート設定を持つことができます。

      1. **SSM パラメータ設定**セクションを展開して、送信先リージョンに配信されるイメージの出力 AMI ID を保存する SSM パラメータを設定できます。必要に応じて、リージョンでディストリビューションアカウントを指定できます。

         **パラメータ名** – パラメータの名前を入力します。例: `/output/image/param`。

         **データ型** – デフォルト値 () のままにします`AWS EC2 Image`。これにより、Systems Manager にパラメータ値を検証して、有効な AMI ID であることを確認するように指示します。

   1. 別のリージョンのディストリビューション設定を追加するには、[**リージョンを追加**]を選択します。

1. 完了したら **Create settings** を選択します。

------
#### [ AWS CLI ]

次の例では、**create-distribution-configuration** コマンドを使用して AMI の新しいディストリビューション設定を作成し、 AWS CLIを使用して AMI の新しいディストリビューション設定を作成する方法を示します。

1. 

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

   ファイル編集ツールを使って、以下の例のいずれかのキーと、あなたの環境で有効な値を持つ JSON ファイルを作成します。これらの例では AWS アカウント、指定したリージョンに配布する AMI を起動するアクセス許可を持つ AWS Organizations 組織単位 (OUs) を定義します。次のステップで使用するのファイルに`create-ami-distribution-configuration.json`で名前を付けます。

**例 1: に配布する AWS アカウント**  
この例では、AMI を 2 つのリージョンに配布し、各リージョンに起動権限を持つ AWS アカウント を指定します。

   ```
   {
   	"name": "MyExampleAccountDistribution",
   	"description": "Copies AMI to eu-west-1, and specifies accounts that can launch instances in each Region.",
   	"distributions": [
   		{
   			"region": "us-west-2",
   			"amiDistributionConfiguration": {
   				"name": "Name {{imagebuilder:buildDate}}",
   				"description": "An example image name with parameter references",
   				"amiTags": {
   					"KeyName": "Some Value"
   				},
   				"launchPermission": {
   					"userIds": [
   						"987654321012"
   					]
   				}
   			}
   		},
   		{
   			"region": "eu-west-1",
   			"amiDistributionConfiguration": {
   				"name": "My {{imagebuilder:buildVersion}} image {{imagebuilder:buildDate}}",
   				"amiTags": {
   					"KeyName": "Some value"
   				},
   				"launchPermission": {
   					"userIds": [
   						"100000000001"
   					]
   				}
   			}
   		}
   	]
   }
   ```

**例 2: Organizations と OUs**  
この例では、AMI をソースリージョンに配布し、組織と OU の起動権限を指定します。

   ```
   {
   	"name": "MyExampleAWSOrganizationDistribution",
   	"description": "Shares AMI with the Organization and OU",
   	"distributions": [
   		{
   			"region": "us-west-2",
   			"amiDistributionConfiguration": {
   				"name": "Name {{ imagebuilder:buildDate }}",
   				"launchPermission": {
   					"organizationArns": [
   						"arn:aws:organizations::123456789012:organization/o-myorganization123"
   					],
   					"organizationalUnitArns": [
   						"arn:aws:organizations::123456789012:ou/o-123example/ou-1234-myorganizationalunit"
   					]
   				}
   			}
   		}
   	]
   }
   ```

**例 3: 出力 AMI ID を SSM パラメータに保存する**  
この例では、出力 AMI ID をディストリビューションリージョンの Parameter Store AWS Systems Manager パラメータに保存します。

   ```
   {
   	"name": "SSMParameterOutputAMI",
   	"description": "Updates an SSM parameter with the output AMI ID for the distribution.",
   	"distributions": [
   		{
   			"region": "us-west-2",
   			"amiDistributionConfiguration": {
   				"name": "Name {{ imagebuilder:buildDate }}"
   			},
   			"ssmParameterConfigurations": [
   				{
   					"amiAccountId": "111122223333",
   					"parameterName": "/output/image/param",
   					"dataType": "aws:ec2:image"
   				}
   			]
   		}
   	]
   }
   ```

1. 

**作成したファイルを入力として使用し、次のコマンドを実行します。**

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

   詳細については、AWS CLI コマンドリファレンスの**[create-distribution-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/create-distribution-configuration.html)**を参照してください。

------

## AMI ディストリビューション設定を更新する
<a name="update-ami-distribution-config"></a>

AMI ディストリビューション設定を変更できます。ただし、行った変更は、Image Builder が既に配布しているリソースには適用されません。例えば、後でディストリビューションから削除するリージョンに AMI を配布した場合、既に配布されていた AMI は、手動で削除するまでそのリージョンに残ります。

------
#### [ AWS マネジメントコンソール ]

で AMI ディストリビューション設定を行うには、次の手順に従います AWS マネジメントコンソール。

1. [https://console.aws.amazon.com/imagebuilder/](https://console.aws.amazon.com/imagebuilder/) で、EC2 Image Builder コンソールを開きます。

1. ナビゲーションペインから**配信設定**を選択します。アカウントで作成されたディストリビューション設定のリストが表示されます。

1. ディストリビューション設定の詳細を表示したり、更新したりするには、**設定名**リンクを選択します。ディストリビューション設定の詳細ビューが開きます。
**注記**  
また、**設定名**の横にあるチェックボックスを選択し、**詳細を表示**を選択することもできます。

1. ディストリビューション設定を編集するには、[**ディストリビューションの詳細**]セクションの右上隅にある[**編集**]を選択します。ディストリビューション設定の**[名前]**や、**[リージョン 1]** と表示されるデフォルトの**[リージョン]** など、一部のフィールドはロックされています。ディストリビューション設定の詳細については、「[AMI ディストリビューション設定を作成する](#create-ami-distribution-config)」を参照してください。

1. 完了したら、**変更を保存** を選択します。

------
#### [ AWS CLI ]

次の例では、**[update-distribution-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/update-distribution-configuration.html)** コマンドを使用して、 AWS CLIコ マンドを使用して AMI のディストリビューション設定を更新しています。

1. 

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

   ファイル編集ツールを使用して、次の例に示すキーと、環境で有効な値を含む JSON ファイルを作成します。この例では、`update-ami-distribution-configuration.json`という名前のファイルを使用します。

   ```
   {
   	"distributionConfigurationArn": "arn:aws:imagebuilder:us-west-2:123456789012:distribution-configuration/update-ami-distribution-configuration.json",
   	"description": "Copies AMI to eu-west-2, and specifies accounts that can launch instances in each Region.",
   	"distributions": [
   	  {
   			"region": "us-west-2",
   			"amiDistributionConfiguration": {
   				"name": "Name {{imagebuilder:buildDate}}",
   				"description": "An example image name with parameter references",
   				"launchPermissions": {
   					"userIds": [
   						"987654321012"
   					]
   				}
   			}
   		},
   		{
   			"region": "eu-west-2",
   			"amiDistributionConfiguration": {
   				"name": "My {{imagebuilder:buildVersion}} image {{imagebuilder:buildDate}}",
   				"tags": {
   					"KeyName": "Some value"
   				},
   				"launchPermissions": {
   					"userIds": [
   						"100000000001"
   					]
   				}
   			}
   		}
   	]
   }
   ```

1. 

**作成したファイルを入力として使用し、次のコマンドを実行します。**

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

   詳細については、AWS CLI コマンドリファレンスの**[update-distribution-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/update-distribution-configuration.html)**を参照してください。ディストリビューション設定リソースのタグを更新するには、「[リソースにタグを付ける](tag-resources.md)」セクションを参照してください。

------

## 例: 出力 AMI の起動テンプレートを使用して EC2 Fast Launch を有効にする AMIs
<a name="create-ami-dist-win-fast-launch"></a>

次の例は、起動テンプレートで **[create-distribution-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/create-distribution-configuration.html)** コマンドを使用して、 から AMI 用に EC2 Fast Launch が設定されたディストリビューション設定を作成する方法を示しています AWS CLI。

起動テンプレートなしで EC2 Fast Launch 設定を構成するには、ディストリビューション設定を作成する[EC2 Fast Launch の前提条件](#ami-distribution-prereqs-fast-launch)前に、 がすべて満たされていることを確認してください。

1. 

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

   ファイル編集ツールを使って、以下の例のようなキーと、あなたの環境で有効な値を持つ JSON ファイルを作成します。

   この例では、並列起動の最大数がターゲットリソース数よりも多いため、すべてのターゲットリソースのインスタンスを同時に起動します。次のステップで示すコマンドの例では、このファイルは「`ami-dist-config-win-fast-launch.json`」と名付けられています。

   ```
   {
   "name": "WinFastLaunchDistribution",
   "description": "An example of Windows AMI EC2 Fast Launch settings in the distribution configuration.",
   "distributions": [
   	{
   		"region": "us-west-2",
   		"amiDistributionConfiguration": {
   			"name": "Name {{imagebuilder:buildDate}}",
   			"description": "Includes Windows AMI EC2 Fast Launch settings.",
   			"amiTags": {
   				"KeyName": "Some Value"
   			}
   		},
   		"fastLaunchConfigurations": [{
   			"enabled": true,
   			"snapshotConfiguration": {
   				"targetResourceCount": 5
   			},
   			"maxParallelLaunches": 6,
   			"launchTemplate": {
   				"launchTemplateId": "lt-0ab1234c56d789012",
   				"launchTemplateVersion": "1"
   			 }
   		}],
   		"launchTemplateConfigurations": [{
   				   "launchTemplateId": "lt-0ab1234c56d789012",
   				   "setDefaultVersion": true
   		  }]
   	}]
   }
   ```
**注記**  
`launchTemplate` の`launchTemplateId`の代わりに`launchTemplateName`を指定することはできるが、名前と ID の両方を指定することはできない。

1. 

**作成したファイルを入力として使用し、次のコマンドを実行します。**

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

   詳細については、AWS CLI コマンドリファレンスの**[create-distribution-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/create-distribution-configuration.html)**を参照してください。

## 例: から出力 VM ディスクのディストリビューション設定を作成する AWS CLI
<a name="cli-create-vm-dist-config"></a>

次の例は、**create-distribution-configuration**コマンドを使用して、イメージをビルドするたびに VM イメージディスクを Amazon S3 にエクスポートするディストリビューション設定を作成する方法を示しています。

1. 

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

    AWS CLIで使う**create-distribution-configuration**コマンドを効率化できる。そのためには、コマンドに渡すすべてのエクスポート設定を含む JSON ファイルを作成します。
**注記**  
JSON ファイル内のデータ値の命名規則は、Image Builder API オペレーションリクエストパラメータに指定されているパターンに従います。API オペレーションリクエストパラメータを確認するには、*EC2 Image Builder API リファレンス*の **[CreateDistributionConfiguration](https://docs.aws.amazon.com/imagebuilder/latest/APIReference/API_CreateDistributionConfiguration.html)** コマンドを参照してください。  
データ値をコマンドラインパラメータとして指定するには、AWS CLI コマンドリファレンスで指定されているパラメータ名を参照してください。オプションとして、**create-distribution-configuration** コマンドに指定します。

   以下は、この例の `s3ExportConfiguration` JSON オブジェクトに指定するパラメータの概要であります。
   + **RoleName** (文字列、必須) — S3 バケットにイメージをエクスポートするための VM Import/Export 権限を付与するロールの名前。
   + **DiskImageFormat** (文字列、必須) — 更新されたディスクイメージを以下のサポートされているフォーマットのいずれかにエクスポートします。
     + **仮想ハードディスク（VHD）** - Citrix Xen および Microsoft Hyper-V 仮想化製品と互換性があります。
     + **ストリーム最適化 ESX 仮想マシンディスク（VMDK）** - VMware ESX および VMware vSphere バージョン 4、5、6 と互換性があります。
     + **Raw** - Raw フォーマット。
   + **S3Bucket** (文字列、必須) — VM の出力ディスクイメージを保存する S3 バケット。

   `export-vm-disks.json` という名前でファイルを保存します。**create-distribution-configuration** コマンドではファイル名を使用します。

   ```
   {
   	"name": "example-distribution-configuration-with-vm-export",
   	"description": "example",
   	"distributions": [
   		{
   			"region": "us-west-2",
   			"amiDistributionConfiguration": {
   				"description": "example-with-vm-export"
   
   			},
   			"s3ExportConfiguration": {
   				"roleName": "vmimport",
   				"diskImageFormat": "RAW",
   				"s3Bucket": "vm-bucket-export"
   			}
   		}],
   	"clientToken": "abc123def4567ab"
   }
   ```

1. 

**作成したファイルを入力として使用し、次のコマンドを実行します。**

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

   詳細については、AWS CLI コマンドリファレンスの**[create-distribution-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/create-distribution-configuration.html)**を参照してください。

# コンテナイメージのディストリビューション設定を作成および更新する
<a name="cr-upd-container-distribution-settings"></a>

このセクションでは、Image Builder コンテナイメージのディストリビューション設定の作成と更新について説明します。

**Topics**
+ [

## から Image Builder コンテナイメージのディストリビューション設定を作成する AWS CLI
](#cli-create-container-distribution-configuration)
+ [

## からコンテナイメージのディストリビューション設定を更新する AWS CLI
](#cli-update-container-distribution-configuration)

## から Image Builder コンテナイメージのディストリビューション設定を作成する AWS CLI
<a name="cli-create-container-distribution-configuration"></a>

ディストリビューション設定を使用すると、出力コンテナイメージの名前と説明を指定し、コンテナイメージを他の AWS リージョンにレプリケートできます。ディストリビューション設定リソースと各リージョン内のコンテナイメージに別々のタグを適用することもできます。

1. 

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

   お好みのファイル編集ツールを使って、以下の例に示すキーと、あなたの環境で有効な値を加えた JSON ファイルを作成します。この例では、`create-container-distribution-configuration.json`という名前のファイルを使用します。

   ```
   {
   	"name": "distribution-configuration-name",
   	"description": "Distributes container image to Amazon ECR repository in two regions.",
   	"distributions": [
   		{
   			"region": "us-west-2",
   			"containerDistributionConfiguration": {
   				"description": "My test image.",
   				"targetRepository": {
   					"service": "ECR",
   					"repositoryName": "testrepo"
   				},
   				"containerTags": ["west2", "image1"]
   			}
   		},
   		{
   			"region": "us-east-1",
   			"containerDistributionConfiguration": {
   				"description": "My test image.",
   				"targetRepository": {
   					"service": "ECR",
   					"repositoryName": "testrepo"
   				},
   			   "containerTags": ["east1", "imagedist"]
   			}
   		}
   	],
   	"tags": {
   	   "DistributionConfigurationTestTagKey1": "DistributionConfigurationTestTagValue1",
   	   "DistributionConfigurationTestTagKey2": "DistributionConfigurationTestTagValue2"
   	}
   }
   ```

1. 

**作成したファイルを入力として使用し、次のコマンドを実行します。**

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

   詳細については、AWS CLI コマンドリファレンスの**[create-distribution-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/create-distribution-configuration.html)**を参照してください。

## からコンテナイメージのディストリビューション設定を更新する AWS CLI
<a name="cli-update-container-distribution-configuration"></a>

以下の例では、**[update-distribution-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/update-distribution-configuration.html)**コマンドを使用して、 AWS CLIコマンドを使用して、コンテナイメージのディストリビューション設定を更新する方法を示しています。各リージョン内のコンテナイメージのタグを更新することもできます。

1. 

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

   お好みのファイル編集ツールを使って、以下の例に示すキーと、環境で有効な値を含む JSON ファイルを作成します。この例では、`update-container-distribution-configuration.json`という名前のファイルを使用します。

   ```
   {
   	"distributionConfigurationArn": "arn:aws:imagebuilder:us-west-2:123456789012:distribution-configuration/update-container-distribution-configuration.json",
   	"description": "Distributes container image to Amazon ECR repository in two regions.",
   	"distributions": [
   		{
   			"region": "us-west-2",
   			"containerDistributionConfiguration": {
   				"description": "My test image.",
   				"targetRepository": {
   					"service": "ECR",
   					"repositoryName": "testrepo"
   				},
   				"containerTags": ["west2", "image1"]
   			}
   		},
   		{
   			"region": "us-east-2",
   			"containerDistributionConfiguration": {
   				"description": "My test image.",
   				"targetRepository": {
   					"service": "ECR",
   					"repositoryName": "testrepo"
   				},
   			   "containerTags": ["east2", "imagedist"]
   			}
   		}
   	]
   }
   ```

1. 

**作成したファイルを入力として使用し、次のコマンドを実行します。**

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

   詳細については、AWS CLI コマンドリファレンスの**[update-distribution-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/update-distribution-configuration.html)**を参照してください。ディストリビューション設定リソースのタグを更新するには、「[リソースにタグを付ける](tag-resources.md)」セクションを参照してください。

# Image Builder でクロスアカウント AMI ディストリビューションのセットアップ
<a name="cross-account-dist"></a>

このセクションでは、指定した他のアカウントに Image Builder AMI を配信するためのディストリビューション設定を行う方法について説明します。

その後、宛先アカウントは、必要に応じて AMI を起動または変更できます。

**注記**  
AWS CLI このセクションの コマンド例では、イメージレシピとインフラストラクチャ設定 JSON ファイルを作成済みであることを前提としています。イメージレシピの JSON ファイルを作成するには、「[を使用してイメージレシピを作成する AWS CLI](create-image-recipes.md#create-image-recipe-cli)」を参照してください。インフラストラクチャー設定用の JSON ファイルを作成するには、「[インフラストラクチャ構成を作成します。](create-infra-config.md)」を参照してください。

## クロスアカウント AMI ディストリビューションの前提条件
<a name="cross-account-dist-prereqs"></a>

ターゲットアカウントが Image Builder イメージからインスタンスを正常に起動できるようにするには、すべてのリージョンのすべての宛先アカウントに適切な権限を設定する必要があります。

 AWS Key Management Service (AWS KMS) を使用して AMI を暗号化する場合は、新しいイメージの暗号化に使用される AWS KMS key アカウントの を設定する必要があります。

Image Builder が暗号化された AMI のクロスアカウント配信を実行すると、ソースアカウントのイメージが復号化されてターゲットリージョンにプッシュされ、そのリージョンに指定されたキーを使用して再暗号化されます。Image Builder はターゲットアカウントに代わって動作し、宛先リージョンで作成した IAM ロールを使用するため、そのアカウントはソースリージョンとターゲットリージョンの両方のキーにアクセスできる必要があります。

### 暗号化キー
<a name="cross-account-prereqs-encryption"></a>

 AWS KMSを使用してイメージを暗号化する場合、以下の前提条件が必要です。IAM の前提条件として以下で説明します。

**ソースアカウント要件**
+ AMI を構築して配布するすべてのリージョンのアカウントに KMS キーを作成します。既存のグループを使用することもできます。
+ 宛先アカウントがキーを使用できるように、これらすべてのキーのキーポリシーを更新してください。

**送信先アカウント要件**
+ 暗号化された AMI を配布するために、必要なアクションをロールが実行できるようにするインラインポリシーを `EC2ImageBuilderDistributionCrossAccountRole` に追加します。IAM の設定手順については、「[IAM ポリシー](#cross-account-prereqs-iam) 前提条件」セクションを参照してください。

を使用したクロスアカウントアクセスの詳細については AWS KMS、「 *AWS Key Management Service デベロッパーガイド*[」の「他のアカウントのユーザーに KMS キーの使用を許可する](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying-external-accounts.html)」を参照してください。

以下のように、イメージレシピに暗号化キーを指定します。
+ Image Builder コンソールを使用している場合は、レシピの **[ストレージ (ボリューム)]** セクションにある **[暗号化 (KMS エイリアス)]** ドロップダウンリストから暗号化キーを選択します。
+ **CreateImageRecipe** API アクションまたは の **create-image-recipe** コマンドを使用している場合は AWS CLI、JSON 入力の の `ebs`セクション`blockDeviceMappings`でキーを設定します。

  次の JSON スニペットは、イメージレシピの暗号化設定を示しています。暗号化キーを提供するだけでなく、`encrypted` フラグを `true` に設定する必要もあります。

  ```
  {
  	...
  	"blockDeviceMappings": [
  	{
  		"deviceName": "Example root volume",
  		"ebs": { 
  			"deleteOnTermination": true,
  			"encrypted": true,
  			"iops": 100,
  			"kmsKeyId": "image-owner-key-id",
  			...
  		},
  		...
  	}],
  	...
  }
  ```

### IAM ポリシー
<a name="cross-account-prereqs-iam"></a>

 AWS Identity and Access Management (IAM) でクロスアカウントディストリビューションのアクセス許可を設定するには、次の手順に従います。

1. 複数のアカウントに分散されている Image Builder AMI を使用するには、宛先アカウントの所有者が自分の `EC2ImageBuilderDistributionCrossAccountRole` というアカウントで新しい IAM ロールを作成する必要があります。

1. アカウント間の配信を有効にするには、「[Ec2ImageBuilderCrossAccountDistributionAccess ポリシー](security-iam-awsmanpol.md#sec-iam-manpol-Ec2ImageBuilderCrossAccountDistributionAccess)」をロールにアタッチする必要があります。マネージドポリシーの詳細については、AWS Identity and Access Management IAM ユーザーガイドの「[マネージドポリシーとインラインポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)」を参照してください。

1. ソースアカウント ID が、宛先アカウントの IAM ロールにアタッチされた信頼ポリシーに追加されていることを確認します。次の例は、送信元アカウントのアカウント ID を指定する送信先アカウントの信頼ポリシーを示しています。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [{
           "Effect": "Allow",
           "Principal": {
               "AWS": "arn:aws:iam::444455556666:root"
           },
           "Action": "sts:AssumeRole"
       }]
   }
   ```

------

   信頼ポリシーの詳細については、AWS Identity and Access Management User Guide の [Resource-Based Policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_resource-based) を参照してください。

1. 配布する AMI が暗号化されている場合、宛先アカウントの所有者は、KMS キーを使用できるように、アカウントで `EC2ImageBuilderDistributionCrossAccountRole` に次のインラインポリシーを追加する必要があります。`Principal` セクションにはアカウント番号が含まれています。これにより、Image Builder は、 AWS KMS を使用して AMI を各リージョンの適切なキーで暗号化および復号するときに、ユーザーに代わって動作できるようになります。

------
#### [ JSON ]

****  

   ```
   {
   	"Version":"2012-10-17",		 	 	 
   	"Statement": [
   		{
   			"Sid": "AllowRoleToPerformKMSOperationsOnBehalfOfTheDestinationAccount",
   			"Effect": "Allow",
   			"Action": [
   				"kms:Encrypt",
   				"kms:Decrypt",
   				"kms:ReEncrypt*",
   				"kms:GenerateDataKey*",
   				"kms:DescribeKey",
   				"kms:CreateGrant",
   				"kms:ListGrants",
   				"kms:RevokeGrant"
   			],
   			"Resource": "*"
   		}
   	]
   }
   ```

------

   インラインポリシーの詳細については、AWS Identity and Access Management ユーザーガイドの「[インラインポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#inline-policies)」を参照してください。

1. `launchTemplateConfigurations` を使用して Amazon EC2 起動テンプレートを指定する場合は、各宛先アカウントの `EC2ImageBuilderDistributionCrossAccountRole` に次のポリシーを追加する必要もあります。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "ec2:CreateLaunchTemplateVersion",
                   "ec2:ModifyLaunchTemplate"
               ],
               "Resource": "*",
               "Condition": {
                   "StringEquals": {
                       "aws:ResourceTag/CreatedBy": "EC2 Image Builder"
                   }
               }
           },
           {
               "Effect": "Allow",
               "Action": [
                   "ec2:DescribeLaunchTemplates"
               ],
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "ec2:CreateTags"
               ],
               "Resource": "arn:aws:ec2:*:*:launch-template/*",
               "Condition": {
                   "StringEquals": {
                       "aws:RequestTag/CreatedBy": "EC2 Image Builder"
                   }
               }
           }
       ]
   }
   ```

------

1.  AWS Systems Manager Parameter Store パラメータを使用してディストリビューションアカウントとリージョンの出力 AMI の AMI ID を保存する場合は、各送信先アカウントの `EC2ImageBuilderDistributionCrossAccountRole` に次のポリシーを追加する必要があります。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "ssm:PutParameter"
               ],
               "Resource": "arn:aws:ssm:*:111122223333:parameter/ImageBuilder-*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "ec2:DescribeImages"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

## クロスアカウント配信の制限
<a name="cross-account-dist-limits"></a>

Image Builder イメージを複数のアカウントに配布する場合、いくつかの制限があります。
+ 宛先アカウントは、宛先リージョンごとに同時 AMI コピーが 50 個に制限されています。
+ 準仮想化 (PV) 仮想化 AMI を別のリージョンにコピーする場合、コピー先のリージョンが PV 仮想化 AMI をサポートしている必要があります。詳細については、「[Linux AMI 仮想化タイプ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/virtualization_types.html)」を参照してください。
+ 暗号化されていないスナップショットの暗号化されたコピーを作成することはできません。`KmsKeyId` パラメータに AWS Key Management Service （AWS KMS）カスタマーマネージドキーを指定しない場合、Image Builder は Amazon Elastic Block Store（Amazon EBS）のデフォルトキーを使用します。詳細については、Amazon Elastic Compute Cloud ユーザーガイドの「[Amazon EBS Encryption](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html)」を参照してください。

詳細については、EC2 Image Builder API リファレンスの「[ディストリビューション設定の作成](https://docs.aws.amazon.com/imagebuilder/latest/APIReference/API_CreateDistributionConfiguration.html)」を参照してください。

## コンソールでの Image Builder AMI のクロスアカウント配信の設定
<a name="cross-account-dist-console-create-ami"></a>

このセクションでは、 AWS マネジメントコンソールを使用して Image Builder AMI のクロスアカウント配信用のディストリビューション設定を作成および設定する方法について説明します。クロスアカウント配信を設定するには、特定の IAM 権限が必要です。続行する前に、このセクションの「[クロスアカウント AMI ディストリビューションの前提条件](#cross-account-dist-prereqs)」を完了する必要があります。

Image Builder コンソールでディストリビューション設定を作成するには、次の手順に従います。

1. [https://console.aws.amazon.com/imagebuilder/](https://console.aws.amazon.com/imagebuilder/) で、EC2 Image Builder コンソールを開きます。

1. ナビゲーションペインから**配信設定**を選択します。これにより、アカウントで作成されたディストリビューション設定のリストが表示されます。

1. **ディストリビューション設定**ページの上部で、**ディストリビューション設定を作成**を選択します。これにより、**ディストリビューション設定の作成** ページが表示されます。

1. **イメージタイプ** セクションで、**出力タイプ** として **Amazon マシンイメージ (AMI)** を選択します。これはデフォルトの設定です。

1. **全般**セクションに、作成する配布設定リソースの**名前**を入力します（必須）。

1. **リージョン設定**で、選択したリージョンのターゲットアカウントに AMI を配布したい 12 桁のアカウント ID を入力し、**Enter** を押す。これにより正しい形式が確認され、入力したアカウント ID がボックスの下に表示されます。このプロセスを繰り返して、さらにアカウントを追加します。

   入力したアカウントを削除するには、アカウント ID の右に表示される **X** を選択します。

   各リージョンの**出力 AMI 名**を入力します。

1. 必要な追加設定を続けて指定し、**設定の作成**を選択して新しい配布設定リソースを作成します。

## から Image Builder AMI のクロスアカウントディストリビューションを設定する AWS CLI
<a name="cross-account-dist-cli-ami-create"></a>

このセクションでは、ディストリビューション設定ファイルを設定し、 の **create-image** コマンドを使用して、アカウント間で Image Builder AMI AWS CLI を構築して配布する方法について説明します。

クロスアカウント配信を設定するには、特定の IAM 権限が必要です。**create-image** コマンドを実行する前に、このセクションの [クロスアカウント AMI ディストリビューションの前提条件](#cross-account-dist-prereqs) を完了する必要があります。

1. 

**ディストリビューション設定ファイルを設定する**

   で **create-image** コマンドを使用して、別のアカウントに配布される Image Builder AMI AWS CLI を作成する前に、`AmiDistributionConfiguration`設定でターゲットアカウント IDs を指定する `DistributionConfiguration` JSON 構造を作成する必要があります。ソースリージョンで、少なくとも 1 つの`AmiDistributionConfiguration`エントリを指定する必要があります。

   次の `create-distribution-configuration.json` というサンプルファイルは、ソースリージョンでのクロスアカウントイメージ配信の設定を示しています。

   ```
   {
   	"name": "cross-account-distribution-example",
   	"description": "Cross Account Distribution Configuration Example",
   	"distributions": [
   		{
   			"amiDistributionConfiguration": {
   				"targetAccountIds": ["123456789012", "987654321098"],
   				"name": "Name {{ imagebuilder:buildDate }}", 
   				"description": "ImageCopy Ami Copy Configuration"
   			}, 
   			"region": "us-west-2"
   		}
   	]
   }
   ```

1. 

**ディストリビューション設定を作成する**

   の [create-distribution-configuration](https://docs.aws.amazon.com/cli/latest/reference/imagebuilder/create-distribution-configuration.html) コマンドを使用して Image Builder ディストリビューション設定リソースを作成するには AWS CLI、 コマンドで次のパラメータを指定します。
   + ポリシーの名前を `--name` パラメータに入力します。
   + `--cli-input-json` パラメータで作成したディストリビューション設定 JSON ファイルを添付します。

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

また、`--distributions` パラメータを使用して、コマンドで直接 JSON を指定することもできます。

# EC2 起動テンプレートを使用する AMI ディストリビューションの設定
<a name="dist-using-launch-template"></a>

ターゲットアカウントとリージョンでの Image Builder AMI の一貫した起動環境を確保するために、`launchTemplateConfigurations` を使用してディストリビューション設定で Amazon EC2 起動テンプレートを指定できます。`launchTemplateConfigurations` は配布プロセス中に存在する場合、Image Builder は、テンプレートの元の設定とビルドの新しい AMI ID をすべて含む起動テンプレートの新しいバージョンを作成します。起動テンプレートを使用して EC2 インスタンスを起動の詳細については、ターゲットのオペレーティングシステムに応じて、以下のいずれかのリンクを参照してください。
+ [起動テンプレートから Linux インスタンスを起動する](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-templates.html)
+ [起動テンプレートから Windows インスタンスを起動する](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-templates.html)

**注記**  
Windows 高速起動を有効にする起動テンプレートをイメージに含める場合は、起動テンプレートに次のタグを含める必要があります。これにより、Image Builder がユーザーに代わって Windows 高速起動を有効にできます。  
`CreatedBy: EC2 Image Builder`

## コンソールでの AMI ディストリビューション設定への EC2 起動テンプレートの追加
<a name="dist-using-launch-template-console"></a>

出力 AMI に起動テンプレートを提供するには、コンソールで次の手順に従います。

1. [https://console.aws.amazon.com/imagebuilder/](https://console.aws.amazon.com/imagebuilder/) で、EC2 Image Builder コンソールを開きます。

1. ナビゲーションペインから**配信設定**を選択します。これにより、アカウントで作成されたディストリビューション設定のリストが表示されます。

1. **ディストリビューション設定**ページの上部で、**ディストリビューション設定を作成**を選択します。**ディストリビューション設定の作成**ページが開きます。

1. **イメージタイプ**セクションで、**Amazon マシンイメージ (AMI)** **出力タイプ**を選択します。これはデフォルトの設定です。

1. **全般**セクションに、作成する配布設定リソースの**名前**を入力します（必須）。

1. **リージョン設定**で、リストから EC2 起動テンプレートの名前を選択します。アカウントに起動テンプレートがない場合は、**Create new Launch template** を選択すると、**EC2 ダッシュボード**に**起動テンプレート**が開きます。

   **デフォルトバージョンを設定**チェックボックスを選択して、起動テンプレートのデフォルトバージョンを、Image Builder が出力 AMI で作成する新しいバージョンに更新します。

   選択したリージョンに別の起動テンプレートを追加するには、**起動テンプレート設定を追加**を選択します。

   起動テンプレートを削除するには、**削除**を選択します。

1. 必要な追加設定を続けて指定し、**設定の作成**を選択して新しい配布設定リソースを作成します。

## から EC2 起動テンプレートを AMI ディストリビューション設定に追加する AWS CLI
<a name="dist-using-launch-template-cli"></a>

このセクションでは、起動テンプレートで配布設定ファイルを構成し、 AWS CLI の **create-image** コマンドを使用して Image Builder AMI とそれを使用する起動テンプレートの新バージョンをビルドして配布する方法について説明します。

1. 

**ディストリビューション設定ファイルを設定する**

   起動テンプレートを使用して Image Builder AMI を作成する前に、 を使用して AWS CLI、`launchTemplateConfigurations`設定を指定するディストリビューション設定 JSON 構造を作成する必要があります。ソースリージョンで、少なくとも 1 つの `launchTemplateConfigurations` エントリを指定する必要があります。

   次の `create-distribution-config-launch-template.json` というサンプルファイルは、ソースリージョンでの起動テンプレート設定で考えられるいくつかのシナリオを示しています。

   ```
   {
       "name": "NewDistributionConfiguration",
       "description": "This is just a test",
       "distributions": [
           {
               "region": "us-west-2",
               "amiDistributionConfiguration": {
                   "name": "test-{{imagebuilder:buildDate}}-{{imagebuilder:buildVersion}}",
                   "description": "description"
               },
               "launchTemplateConfigurations": [
                   {
                       "launchTemplateId": "lt-0a1bcde2fgh34567",
                       "accountId": "935302948087",
                       "setDefaultVersion": true
                   },
                   {
                       "launchTemplateId": "lt-0aaa1bcde2ff3456"
                   },
                   {
                       "launchTemplateId": "lt-12345678901234567",
                       "accountId": "123456789012"
                   }
               ]
           }
       ],
       "clientToken": "clientToken1"
   }
   ```

1. 

**ディストリビューション設定を作成する**

   の [create-distribution-configuration](https://docs.aws.amazon.com/cli/latest/reference/imagebuilder/create-distribution-configuration.html) コマンドを使用して Image Builder ディストリビューション設定リソースを作成するには AWS CLI、 コマンドで次のパラメータを指定します。
   + ポリシーの名前を `--name` パラメータに入力します。
   + `--cli-input-json` パラメータで作成したディストリビューション設定 JSON ファイルを添付します。

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

また、`--distributions` パラメータを使用して、コマンドで直接 JSON を指定することもできます。

# 拡張 AMI ディストリビューション機能を使用する
<a name="distribution-enhanced_functionality"></a>

Image Builder は、AMIs がリージョンやアカウントにどのように分散されるかを柔軟に制御できる高度な分散機能を提供します。これらの機能により、ビルドプロセスから分散を分離できるため、既存のイメージをオンデマンドで分散し、分散障害から効率的に復旧し、カスタマイズ可能なワークフローを通じて制御されたマルチステージ分散戦略を実装できます。

Image Builder で拡張 AMI ディストリビューション機能を使用すると、完全なイメージビルドを再実行することなく、ディストリビューションアクティビティを直接実行できます。

## 分離されたディストリビューション
<a name="decoupled-distribution"></a>

DistributeImage API は、次の 3 種類のソースイメージ参照を受け入れます。
+ **AMI ID** – 標準の AMI 識別子 (例: `ami-0abcdef1234567890`)
+ **SSM パラメータ** – AMI ID を保存する SSM パラメータ (例: `ssm:/my/ami/parameter`)
+ **Image Builder バージョン ARN** – Image Builder イメージバージョン ARN

## ディストリビューションの再試行
<a name="distribution-retry"></a>

イメージディストリビューションが失敗した場合、 `RetryImage` API を使用してディストリビューションを再試行します。これにより、イメージの完全な再構築を回避することで、障害の原因をトラブルシューティングする時間が短縮されます。ディストリビューション障害の根本的な原因を解決`RetryImage`した後に を使用します。

RetryImage API は、イメージビルドバージョン ARN ( など`arn:aws:imagebuilder:us-west-2:123456789012:image/my-image/1.0.0/1`) を受け入れます。API を呼び出すと、Image Builder は元のディストリビューション設定と設定を使用して、障害発生時点からディストリビューションプロセスを自動的に再開します。`RetryImage` API は、ディストリビューションフェーズ、テストフェーズ、または統合フェーズ中に失敗したディストリビューションを再試行できます。これは、保留中、失敗、削除済み、または利用可能な状態の AMIs で動作します。

**前提条件** 

ディストリビューションを再試行する前に、以下を確認してください。
+ 障害の根本原因を特定して解決しました。エラーの詳細については、CloudWatch Logs のディストリビューションログを確認してください。
+ イメージビルドを再試行するために必要な IAM アクセス許可があります。
+ クロスアカウント分散に障害が発生した場合は、送信先アカウントの `EC2ImageBuilderDistributionCrossAccountRole` に`Ec2ImageBuilderCrossAccountDistributionAccess`ポリシーがアタッチされていることを確認します。

**重要:** 根本的な問題を修正せずに再試行すると、繰り返し失敗します。

## ディストリビューションワークフロー
<a name="distribution-workflows"></a>

ディストリビューションワークフローは、ビルドワークフローとテストワークフローを補完する新しいワークフロータイプであり、シーケンシャルステップでディストリビューションプロセスを定義および制御できます。ディストリビューションワークフローを使用すると、AMI コピーオペレーション、wait-for-actionチェックポイント、イメージ属性の変更、その他のディストリビューション関連のステップを含むカスタムディストリビューションプロセスを作成できます。これにより、ステップレベルの可視性、並列分散機能、詳細なエラーレポートにより、AMIs分散方法の構造化された制御が可能になります。

ワークフローの作成とカスタマイズの詳細については、[「イメージワークフローの管理](manage-image-workflows.html)」を参照してください。