EC2 Image Builder の仕組み - EC2 イメージビルダー

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

EC2 Image Builder の仕組み

EC2 Image Builder パイプラインコンソールウィザードを使用してカスタムイメージを作成する場合、ウィザードの指示に従って次の手順を実行します。

  1. パイプラインの詳細を指定する - 名前、説明、タグ、自動ビルドを実行するスケジュールなど、パイプラインに関する情報を入力します。手動ビルドを選択することもできます。

  2. レシピを選択 - AMI をビルドするか、コンテナイメージをビルドするかを選択する。どちらのタイプの出力イメージでも、レシピの名前とバージョンを入力し、ベースイメージを選択し、ビルドとテスト用に追加するコンポーネントを選択します。また、自動バージョン管理を選択して、ベースイメージに使用可能な最新のオペレーティングシステム (OS) バージョンを常に使用できるようにすることもできます。コンテナレシピは、さらに Dockerfiles と、出力 Docker コンテナイメージのターゲット Amazon ECR リポジトリを定義します。

    注記

    コンポーネントは、イメージレシピまたはコンテナレシピで使用されるビルディングブロックです。例えば、インストール用パッケージ、セキュリティ強化手順、テストなどです。選択したベースイメージとコンポーネントがイメージレシピを構成します。

  3. インフラ構成の定義 - Image Builder は、アカウント内の EC2 インスタンスを起動し、イメージをカスタマイズして検証テストを実行します。インフラストラクチャ設定では、ビルドプロセス AWS アカウント 中に で実行されるインスタンスのインフラストラクチャの詳細を指定します。

  4. 配布設定の定義 - ビルドが完了し、すべてのテストに合格した後、イメージを配布する AWS リージョンを選択します。パイプラインはビルドを実行するリージョンに自動的にイメージを配布します。他のリージョンにイメージ配布を追加することもできます。

カスタムベースイメージからビルドしたイメージは、 AWS アカウントにあります。ビルドスケジュールを入力することで、イメージの更新バージョンやパッチを適用したバージョンを生成するようにイメージパイプラインを設定できます。ビルドが完了すると、「Amazon 簡易通知サービス (SNS)」 を通じて通知を受け取ることができます。Image Builder コンソールウィザードは、最終イメージを生成するだけでなく、既存のバージョン管理システムや継続的インテグレーション/継続的デプロイ (CI/CD) パイプラインで使用できるレシピを生成し、繰り返し可能な自動化を実現します。レシピを共有したり、新しいバージョンを作成したりできます。

AMI エレメント

Amazon マシンイメージ (AMI) は、EC2 インスタンスをデプロイするための OS とソフトウェアを含む事前設定済みの仮想マシン (VM) Image (VM) Image。

AMI には以下の要素が含まれます:

  • VM のルートボリュームのテンプレート。Amazon EC2 VM を起動すると、ルートデバイスボリュームにインスタンスを起動するためのイメージが格納されます。インスタンスストアを使用する場合、ルートデバイスは、Amazon S3 のテンプレートから作成されるインスタンスストアボリュームになります。詳細については、Amazon EC2 Root Device Volume を参照のこと。

  • Amazon EBS を使用する場合、ルートデバイスは 「EBS スナップショット」から作成された EBS ボリュームです。

  • AMI で VMs を起動 AWS アカウント できる を決定する起動許可。

  • 起動後にインスタンスにアタッチするボリュームを指定する ブロックデバイスマッピング データ。

  • 各リージョン、各アカウントの固有の「リソース識別子」

  • タグなどの「メタデータ」ペイロード、およびプロパティ (リージョン、オペレーティングシステム、アーキテクチャ、ルートデバイスタイプ、プロバイダー、起動権限、ルートデバイスのストレージ、署名ステータスなど)。

  • 不正な改ざんから保護するための Windows イメージ用の AMI シグネチャ。詳細については、インスタンスアイデンティティドキュメントを参照してください。

デフォルトのクォータ

Image Builder のデフォルトクォータを確認するには、「Image Builder エンドポイントとクォータ」を参照してください。

AWS リージョンとエンドポイント

Image Builder のサービスエンドポイントを表示するには、「Image Builder エンドポイントとクォータ」を参照してください。

コンポーネント管理

EC2 Image Builder は、複雑なワークフローのオーケストレーション、システム設定の変更、YAML ベースのスクリプトコンポーネントを使用したシステムのテストに役立つコンポーネント管理アプリケーション AWS Task Orchestrator and Executor (AWSTOE) を使用します。 AWSTOE はスタンドアロンアプリケーションであるため、追加のセットアップは必要ありません。どのクラウドインフラストラクチャーでもオンプレミスでも実行できます。スタンドアロンアプリケーション AWSTOE として の使用を開始するには、「」を参照してくださいでカスタムコンポーネントを開発するための手動セットアップ AWSTOE

Image Builder は AWSTOE を使用して、すべてのインスタンス上のアクティビティを実行します。これには、スナップショットを作成する前のイメージの構築と検証、および最終的なイメージを作成する前にスナップショットが期待どおりに機能することを確認するためのテストが含まれます。Image Builder が AWSTOE を使用してコンポーネントを管理する方法の詳細については、「」を参照してくださいコンポーネントを使用した Image Builder イメージのカスタマイズ。 AWSTOEを使ったコンポーネントの作成については、Image Builder が AWS Task Orchestrator and Executor アプリケーションを使用してコンポーネントを管理する方法を参照のこと。

イメージテスト

AWSTOE テストコンポーネントを使用してイメージを検証し、最終イメージを作成する前に期待どおりに機能することを確認できます。

通常、各テストコンポーネントは、テストスクリプト、テストバイナリ、テストメタデータを含む YAML ドキュメントで構成されます。テストスクリプトにはテストバイナリを起動するためのオーケストレーションコマンドが含まれており、OS がサポートする任意の言語で記述できます。終了ステータスコードはテスト結果を示します。テストメタデータは、名前、説明、テストバイナリへのパス、予想される時間など、テストとその動作を記述します。

作成されたリソース

パイプラインを作成すると、以下の場合を除き、Image Builder の外部リソースは作成されません。

  • パイプラインスケジュールに従ってイメージが作成された場合

  • Image Builder コンソールの[アクション]メニューから[パイプラインを実行]を選択した場合

  • API または からこれらのコマンドのいずれかを実行する場合 AWS CLI: StartImagePipelineExecutionまたは CreateImage

イメージビルドプロセス中に次のリソースが作成されます。

AMI イメージパイプライン
  • EC2 インスタンス (一時的)

  • EC2 インスタンス上のSystems Manager インベントリアソシエーション (EnhancedImageMetadata が有効になっている場合はSystems Manager ステートマネージャー経由)

  • Amazon EC2 AMI

  • Amazon EC2 AMI に関連付けられた Amazon EBS スナップショット

コンテナイメージパイプライン
  • EC2 インスタンス上で動作する Docker コンテナ (temporary)

  • EC2 インスタンスの Systems Manager インベントリ関連付け(Systems Manager State Manager 経由)EnhancedImageMetadata が有効になっている

  • Docker コンテナイメージ

  • Dockerfile

イメージが作成されると、一時リソースはすべて削除されます。

ディストリビューション

EC2 Image Builder は、AMIs またはコンテナイメージを任意の AWS リージョンに配布できます。イメージは、イメージのビルドに使用したアカウントで指定した各リージョンにコピーされます。

AMI 出力イメージでは、AMI 起動アクセス許可を定義して、作成した AMI で EC2 インスタンスを起動 AWS アカウント できる を制御できます。例えば、イメージをプライベート、パブリック、または特定のアカウントと共有することができます。AMI を他のリージョンに配布し、他のアカウントの起動権限を定義すると、起動権限は AMI が配布されているすべてのリージョンの AMI に伝達されます。

AWS Organizations アカウントを使用して、承認された準拠 AMIs でのみインスタンスを起動するための制限をメンバーアカウントに強制することもできます。詳細については、「組織の の管理 AWS アカウント」を参照してください。

Image Builder コンソールを使用してディストリビューション設定を更新するには、「コンソールからの新しいイメージレシピバージョンの作成」または「コンソールで新しいコンテナレシピの作成」のステップに従います。

リソースの共有

コンポーネント、レシピ、またはイメージを他の アカウントと共有したり、 内で共有したりするには AWS Organizations、「」を参照してくださいImage Builder リソースを と共有する AWS RAM

コンプライアンス

Center for Internet Security (CIS) ベンチマークに対して、EC2 Image Builder は Amazon Inspector を使用して、漏洩、脆弱性、ベストプラクティスやコンプライアンス標準からの逸脱がないかどうかの評価を実行します。例えば、Image Builder は、意図しないネットワークアクセス、パッチが適用されていない CVE、公衆インターネット接続、リモートルートログインの有効化を評価します。Amazon Inspector はテストコンポーネントとして提供されており、イメージレシピに追加することを選択できます。Amazon Inspector の詳細については、Amazon Inspector ユーザーガイド」を参照してください。詳細については、「Center for Internet Security (CIS) ベンチマーク」を参照してください。

Image Builder には STIG 強化コンポーネントが用意されており、ベースラインとなる STIG 標準に準拠したイメージをより効率的に構築できます。これらの STIG コンポーネントは、設定ミスをスキャンし、修正スクリプトを実行します。STIG 準拠のコンポーネントを使用することによる追加料金は発生しません。Image Builder で使用可能な STIG コンポーネントの完全なリストについては、「Image Builder 用の Amazon managed STIG 強化コンポーネント」を参照してください。