🏭 EC2 Image Builder

お弁当工場で理解する!AMI自動ビルド&配布の完全ガイド

📌 結論:EC2 Image Builderは「AMIの自動製造工場」

セキュリティパッチ適用済みのAMIを自動でビルドし、複数リージョンに配布する
まさに「品質管理された製品を大量生産する工場」のようなサービスです!

📋
レシピ
何を作るか
(ベースイメージ+材料)
🧩
コンポーネント
材料・調味料
(インストールするもの)
⚙️
インフラ設定
調理場の設備
(ビルド環境)
🚚
配布設定
どこに届けるか
(リージョン・アカウント)

🍱 お弁当工場で例えると超わかりやすい!

EC2 Image Builder = 全自動お弁当工場

毎日たくさんのお弁当(EC2インスタンス)を作る必要がありますよね?
でも毎回手作りだと、 品質がバラバラ 時間もかかる ...

そこで登場するのが 「お弁当工場」(Image Builder)
レシピ通りに、いつも同じ品質のお弁当を自動で大量生産できます✨

🍱 お弁当工場の製造ライン

あなたはコンビニチェーンの弁当部門責任者。
全国100店舗に毎日同じ品質のお弁当を届けなければなりません。
衛生検査もクリアした、安全で美味しいお弁当を効率よく作りましょう!

📋
レシピ作成
(何を作るか)
➡️
🥬
材料準備
(コンポーネント)
➡️
🍳
調理
(ビルド)
➡️
🔍
品質検査
(テスト)
➡️
📦
完成品
(AMI)
➡️
🚚
配送
(配布)
📋
イメージレシピ
Image Recipe
🍱 お弁当工場のたとえ
「幕の内弁当のレシピ」

「白米ベースに、唐揚げ、卵焼き、煮物を入れて...」
という設計図のこと。

🍚 ベース: 白米(Amazon Linux 2)
🍗 おかず: 唐揚げ=Apache、卵焼き=PHP など
💻 技術的な説明
親イメージ: ベースとなるAMI(AWS提供 or カスタム)
コンポーネント: 追加でインストールするソフトウェア
バージョン管理: レシピにバージョン番号を付与
2種類: AMI用とDockerコンテナ用
🧩
コンポーネント
Component
🍱 お弁当工場のたとえ
「材料と調理手順」

唐揚げコンポーネント:
1️⃣ 鶏肉を切る
2️⃣ 下味をつける
3️⃣ 衣をつける
4️⃣ 油で揚げる

材料(ソフトウェア)と手順(スクリプト)のセット!
💻 技術的な説明
ビルドコンポーネント: ソフトウェアのインストール
テストコンポーネント: 動作確認のテスト実行
AWS提供: Amazon提供のマネージドコンポーネント
カスタム: YAML形式で自作可能
例: Apache、Java、Python、セキュリティパッチなど
⚙️
インフラストラクチャ設定
Infrastructure Configuration
🍱 お弁当工場のたとえ
「調理場の設備」

🏭 どの工場で作るか(どのVPC?)
🔥 コンロのサイズ(インスタンスタイプ)
👨‍🍳 調理師の権限(IAMロール)
📋 作業日報の保存先(ログ出力先)

ビルド作業を行う「環境」の設定です!
💻 技術的な説明
インスタンスタイプ: ビルド用EC2のスペック
VPC/サブネット: ビルドを実行するネットワーク
IAMロール: ビルド時の権限
セキュリティグループ: ネットワークアクセス制御
SNS通知: ビルド完了時の通知先
🚚
ディストリビューション設定
Distribution Configuration
🍱 お弁当工場のたとえ
「配送先リスト」

🗾 東京店舗 → 東京工場から配送
🗽 ニューヨーク店舗 → US工場へ転送
🏰 ロンドン店舗 → EU工場へ転送

完成したAMIを どのリージョン に、
どのアカウント に配布するかを設定!
💻 技術的な説明
リージョン指定: AMIをコピーするリージョン
アカウント共有: 他のAWSアカウントへの共有
Launch Permission: 起動許可の設定
AMI名/タグ: 配布先でのAMI名やタグ設定
暗号化: 配布先でのKMS暗号化設定

🔄 パイプライン:全自動製造ライン

パイプラインは「レシピ」「インフラ設定」「配布設定」を組み合わせて
スケジュール実行 手動実行 でAMIを自動生成します!

1
スケジュール
毎週日曜深夜に
自動起動
2
🖥️
EC2起動
ビルド用の
一時EC2を作成
3
🔧
ビルド実行
コンポーネントを
順番にインストール
4
テスト実行
テストコンポーネント
で動作確認
5
📸
AMI作成
スナップショットから
AMIを生成
6
🌍
配布
指定リージョン・
アカウントへ配布

🎯 スケジュール設定のオプション

📅
Cron式
毎週日曜3時など
🔄
Rate式
7日ごとなど
👆
手動実行
任意のタイミングで

🛡️ セキュリティ強化:自動品質管理

お弁当工場でいう「衛生検査」のように、
Image Builderは 自動でセキュリティパッチを適用 し、 テストで品質を保証 します!

🔄

自動パッチ適用

AWSマネージドコンポーネントで
最新のセキュリティパッチを
自動的に適用

🔍

脆弱性スキャン

Amazon Inspector連携で
ビルド後に自動で
脆弱性をチェック

テスト自動化

テストコンポーネントで
動作確認を自動実行
失敗時はAMI作成中止

📝

監査ログ

CloudTrailと連携して
誰が・いつ・何をしたか
完全に記録

🔐

暗号化サポート

KMSでAMIを暗号化
配布先ごとに異なる
キーも指定可能

🏷️

バージョン管理

レシピ・AMIの
バージョンを管理
いつでもロールバック可能

📊 手動 vs Image Builder 比較

項目 手動でAMI作成 EC2 Image Builder
作業時間 数時間~半日 ✅ 自動(設定のみ)
品質の一貫性 作業者により差が出る ✅ 常に同一品質
定期更新 毎回手動で実施 ✅ スケジュール自動実行
マルチリージョン配布 各リージョンで手動コピー ✅ 自動で複数リージョンへ
テスト実行 手動でテスト ✅ 自動テスト組み込み
セキュリティパッチ 最新版を都度確認 ✅ 常に最新を自動適用
再現性 手順書が必要 ✅ レシピがコード化
料金 人件費がかかる ✅ サービス無料(EC2代のみ)

💼 実践ユースケース

🏢

企業のゴールデンAMI

社内標準のセキュリティ設定、監視エージェント、 ログ収集ツールがプリインストールされた 「会社公認のベースAMI」を自動生成

✨ メリット: 全チームが同じセキュリティ基準のインスタンスを使用
🔄

定期的なパッチ適用

毎週日曜深夜に自動でビルドを実行し、 最新のセキュリティパッチが適用された AMIを常に準備

✨ メリット: 月曜朝には最新AMIでデプロイ可能
🌍

グローバル展開

東京でビルドしたAMIを、 アメリカ・ヨーロッパ・アジアの 複数リージョンに自動配布

✨ メリット: 世界中で同一構成のインスタンスを起動可能
🏗️

マルチアカウント環境

本番・ステージング・開発の 各AWSアカウントに 同じAMIを自動共有

✨ メリット: 環境差異による問題を防止
📝 コンポーネント(YAML形式)の例
name: InstallApacheAndPHP
description: Apache と PHP をインストールするコンポーネント
schemaVersion: 1.0

phases:
  # ビルドフェーズ(ソフトウェアのインストール)
  - name: build
    steps:
      - name: InstallApache
        action: ExecuteBash
        inputs:
          commands:
            - yum install -y httpd
            - systemctl enable httpd
      
      - name: InstallPHP
        action: ExecuteBash
        inputs:
          commands:
            - amazon-linux-extras install -y php8.0
  
  # テストフェーズ(動作確認)
  - name: validate
    steps:
      - name: TestApache
        action: ExecuteBash
        inputs:
          commands:
            - systemctl start httpd
            - curl -s http://localhost | grep -q "works"
            - echo "Apache is working!"
💡 Image Builder活用のベストプラクティス
1. ゴールデンAMIパターンを採用:
組織標準のセキュリティ設定・監視ツールをベースAMIに含め、各チームはそれを継承して使う。車輪の再発明を防止!

2. テストコンポーネントは必須:
ビルド後のテストを必ず設定しよう。テスト失敗でAMI作成を中止すれば、不良品が本番に流出するのを防げる。

3. 定期実行でAMIを鮮度良く:
週1回の定期ビルドで、常に最新パッチ適用済みのAMIを準備。古いAMIの使用をポリシーで禁止するとさらに効果的。

4. SNS通知を設定:
ビルド成功/失敗をSlackやメールに通知。失敗時はすぐに対応できる体制を作ろう。

5. Systems Manager連携:
SSM Parameter Storeに最新AMI IDを自動保存すれば、CloudFormationやTerraformから常に最新AMIを参照可能!

❓ よくある質問(FAQ)

🤔 Q: Image Builderの料金はいくらですか?
A: Image Builder自体は無料です!
ただし、ビルド中に起動するEC2インスタンス、作成されるEBSスナップショット、 S3へのログ保存などのリソース料金は発生します。 ビルド時間を短縮すればEC2コストも削減できます。
🤔 Q: ビルドにどれくらい時間がかかりますか?
A: コンポーネントの内容によりますが、通常30分~2時間程度です。
インスタンス起動、コンポーネント実行、AMI作成の各工程で時間がかかります。 大きなソフトウェアのインストールやコンパイルがあると長くなります。 深夜にスケジュール実行すれば待ち時間は気になりません。
🤔 Q: Dockerコンテナイメージも作れますか?
A: はい、作れます!
「コンテナレシピ」を使用すると、Dockerイメージを自動ビルドし、 ECR(Elastic Container Registry)にプッシュできます。 AMIと同じパイプラインの仕組みでコンテナも管理できます。
🤔 Q: ビルドが失敗したらどうなりますか?
A: AMIは作成されず、ログで原因を確認できます。
ビルドやテストが失敗すると、その時点でパイプラインが停止し、 AMIは作成されません。CloudWatch LogsやS3に詳細なログが出力されるので、 原因を特定して修正できます。SNS通知で失敗を即座に検知する設定も推奨です。

🎓 まとめ

🏭 お弁当工場 = EC2 Image Builder

セキュリティパッチ適用済みのAMIを
自動でビルド し、 複数リージョン・アカウントに配布
品質管理された「ゴールデンAMI」を簡単に運用できます✨

📋
レシピ

何を作るか
の設計図
🧩
コンポーネント

材料と
調理手順
⚙️
インフラ設定

調理場の
設備
🚚
配布設定

どこに
届けるか

🎯 ポイント:
定期ビルド で常に最新パッチ適用!
テスト自動化 で品質保証!
マルチリージョン配布 でグローバル展開!🌍

Created by SSuzuki1063

AWS SAP Learning Resources