[レポート] 簡単にマシンイメージ作成ができる新サービス「EC2 Image Builder」 #reinvent

re:Invent2019のセッション、「CMP214-R-[NEW LAUNCH!][REPEAT]EC2 Image Builder: Building virtual machine images made easy」のレポートです。
2019.12.03

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは。AWS事業本部のShirotaです。

いつもの挨拶を省いてお届けしているのは、re:Invent2019のセッションレポートについて速攻でお届けしようと思っているからです!
今回はセッション、「EC2 Image Builder: Building virtual machine images made easy」についての内容をお届けしたいと思います。

それでは早速行ってみましょう!

セッション情報

セッション名

CMP214-R - [NEW LAUNCH!] [REPEAT] EC2 Image Builder: Building virtual machine images made easy

セッションの概要

In this session, learn about EC2 Image Builder, a new capability that makes it easier and faster to build and maintain secure images. Keeping server images up-to-date can be time-consuming, resource-intensive, and error-prone. Currently, customers either manually update and snapshot VMs or have teams that build automation scripts to maintain images. Learn how EC2 Image Builder simplifies the creation, patching, testing, distribution, and sharing of Linux or Windows Server images.

12月1日に発表されたEC2 Image Builderのセッションです。
re:Inventではよくある事なのですが、新しいサービスが発表されると直後にそのサービスに関するセッションが追加されます。
本セッションも同じ状況で追加されたセッションでした。
これはEC2 Image Builderでどれだけ簡単にAMIの作成、更新、テスト、配布やシェアができるようになったかについてのセッションです。
早速このようなセッションが出るのはありがたいですね!

スピーカー

  • Samartha Chandrashekar - Senior Product Manager, Amazon Web Services

セッションの内容

そもそもゴールデンVMイメージはどう使う?

  • サーバのイメージをテンプレート化する事によって、時間の短縮や再現性を高める
  • カスタムしたソフトウェアや設定を事前にインストール・定義しておける

ゴールデンVMイメージはみんな作っておくべき、だけれども……

  • ゴールデンVMイメージは自動で作成するのに高いスキルが必要になる
  • カスタマーがそもそも既存の自動化/スクリプト化を使おうとする
  • ソフトウェアの更新が来る度にいつも手動で新しいイメージを構築・テストすることになる
  • 本番利用を想定せず、サービス中断が発生する

  • カスタマーがゴールデンイメージ作成に求める事

    • 迅速で簡単に、コードを書かずにゴールデンイメージを自動で作れるようにしてほしい
    • プロダクションをデプロイする前にAWSで簡単にイメージのテストをして欲しい
    • セキュリティ基準を満たしたイメージ
    • イメージの共有はアカウント/リージョンまたぎが楽にできて欲しい
    • AWSでもオンプレミスでも使えるイメージが欲しい

EC2 Image Builder

  • 簡単で迅速にアップデートのデプロイと"ゴールデン"VMイメージを自動で作成・管理してくれる
  • セキュアなイメージを作成するコストを下げられる
  • 本番環境で使用する前にテストを実施できる事によりサービスの稼働時間を改善できる
  • AWSアカウント全体でVMイメージの使用に関するポリシーを適用できる
  • AWS,オンプレミス両方で使えるゴールデンVMイメージを作成できる
  • WindowsとLinuxで作成できる
  • どのようなワークフローになっているか
    • まずはイメージを作成する
    • ソフトウェアのアップデートがある度に、以下のループを繰り返す
      • ソフトウェアや設定をカスタマイズする
      • テンプレートを使用してセキュアなイメージにする
      • イメージのテストを行う
      • 選択したAWSリージョン(複数可能)に"ゴールデン"イメージを配布する
  • コンポーネントの構築・テンプレート・テストはAWSで用意されたものもカスタムも実施できる
    • AWSで用意されたものがあるので迅速に開始できる
    • 基本的にマネージドコンポーネントなソフトウェアを使うことになる
    • カスタムコンポーネントについて
      • フェーズは作成、検証してテスト
      • YAML形式で記述
      • 各フェーズのステップでアクションモジュールを利用し、終わった時は終了コードを返す
      • 利用するファイル
        • detailedOutput.json
        • document.yaml
        • console.log
        • application.log
  • License Managerとの繋がり
    • AMIのライセンス管理
      • AWS License Managerで集中管理できる
        • Licenseの設定の定義・管理も可能
  • イメージにパッチを当てる・アップデートする
    • スケジュールベースでの最新状態のイメージの再構築
    • 手動でも実施可能
    • OS、ビルドコンポーネント、サーバーベースのトリガーに基づく最新の更新を入れられる
  • セキュリティについて
    • Image Builderでは、イメージ作成後クリーンアップが強制的に発生する
    • オススメのセキュリティのあり方を教えてくれる(AWS Inspectorが使える)
  • IAMについて
    • SLR(Service Linked Role)
    • IAMロール
      • EC2にIAMロールをアタッチする
        • コンポーネントの作成、テスト実行等で使われる
    • ちょうど良い範囲の権限

EC2 Image Builderの構成要素

  • Pipeline: イメージビルド周りの設定ができ、そのパイプラインを実行する事でよしなにイメージを作成してくれる
  • Recipe: 作成するイメージについて定義する
  • Build component: ソフトウェアのインストールやスクリプトの実行
  • Test: イメージをテストする為のコンポーネント
  • Build schedule: スケジュールベースでも手動でも可能
  • Managed Image: イメージを作成するにあたってベースにしたいイメージ

ここからは実際にEC2 Image Builderのワークフローのデモが始まりました。

ワークフローのデモに関しては、弊社 濱田のブログでやっているような事を実演してもらえました。

EC2のイメージ作成を劇的に効率化するEC2 Image Builderが発表されました! #reinvent

その他

  • 実際にデバッグしているログファイルの例

▲ 実際に見られたのは嬉しい

  • コスト
    • EC2 Image Builder自身の利用では発生しない
    • 作成されるリソースで課金される

終了後の質問タイム

参加者からの質問を受け付ける時間がありました。
まだEC2 Image BuilderはCloudFormationやCDKでも利用はできず、対象となるOSもかなり限定されているのですがまだまだアップデートを期待して良さそうな雰囲気でした!
より便利になってくれて、EC2 Image Builderで一撃といった時代が来てくれると嬉しいですね。

弊社ブログには、既に「やってみた」記事がバンバン上がっています

速報に続き、既にいくつもの「EC2 Image BuilderでXXをやってみた」ブログが上がっておりますので、そちらも併せてご覧頂けますとよりEC2 Image Builderのイメージが湧きやすくなるかと思います。

[re:Invent 2019] EC2イメージビルダーをサクッと試してみた #reinvent

EC2 Image Builderで作ったイメージを他アカウントに共有してみた #reinvent

[re:Invent 2019] EC2イメージビルダーを使って複数リージョンにAMIを作成してみた #reinvent

[re:Invent 2019] EC2 Image Builder でコンポーネントを作成してみた #reinvent

[re:Invent 2019] EC2 Image Builder で S3 からコンテンツをデプロイしてみた #reinvent