AWS JAPAN APN ブログ

EC2 Image Builder と AWS Marketplace を活用したソフトウェア調達・販売の効率化

この記事は、以下 3 名による共著です。

  • アマゾン ウェブ サービス ジャパン合同会社 パートナーソリューションアーキテクト 櫻谷 広人
  • 株式会社インサイトテクノロジー 製品本部 副本部長 松尾 拓真氏
  • サイオステクノロジー株式会社 BC & CS Service Line シニアアーキテクト 吉澤 知勇氏

みなさんは、サーバーイメージのビルドやテストをどのように自動化していますか?コンテナやサーバーレスといった比較的モダンな環境では、IaC や CI/CD の活用によってプロセス全体を自動化していることは珍しくないかもしれません。しかし、従来のレガシー環境では、依存関係をすべて含め、あらかじめソフトウェアを構成済みのいわゆるゴールデンイメージを手動で作成していることも多いのではないでしょうか。

これらのイメージには、様々なサードパーティのソフトウェアが含まれるのが一般的です。組織やプロジェクトの要件によっては、セキュリティ保護や監視のためのエージェントをすべてのサーバーに導入することが必須になっている場合もあるでしょう。これらの依存関係を解決し、1 つのゴールデンイメージにまとめ上げる作業は決して楽ではありません。バイナリの取得、インストール、設定ファイルのカスタマイズ、ライセンスキーの入力、起動スクリプトの実行、テストなど、やるべきことは多岐にわたります。

さらに、ソフトウェアの数が増えるごとにこのプロセスは複雑化していくため、手順書は長く難解なものになり、ミスも増え、誰も全体像を把握できず、手動でこれらを管理するのは現実的ではなくなります。また、OS やソフトウェアのバージョンアップに合わせて適切なパッチ適用を定期的に行うことも必要です。これらの負荷がボトルネックになり、コアビジネスの成長が阻害されてしまっては本末転倒です。

これらの課題を解決するために、2024 年 12 月 1 日、AWS Marketplace によるサードパーティの EC2 Image Builder コンポーネントのサポートを発表しました。この記事では、EC2 Image Builder の基本的な概要や使い方、新しくローンチした AWS Marketplace との統合機能について紹介し、効率的なソフトウェアの調達、管理、利用方法に関するガイドを提供します。

EC2 Image Builder とは

EC2 Image Builder は、カスタマイズされたマシンイメージの作成、管理、デプロイの自動化をサポートする AWS のマネージドサービスです。単一のコマンドでイメージを作成することもできますし、パイプラインを定義して更新やパッチ適用を自動化することもできます。いわゆるゴールデンイメージの CI/CD をサポートするようなものをイメージしてください。

EC2 Image Builder を使用することで、以下のような利点が得られます。

  • 開発生産性の向上: EC2 Image Builder は、セキュアでコンプライアンスに従うイメージの構築、維持、デプロイを自動化します。自動化のためのコードを作成して管理する必要はなく、これらの管理タスクに伴う開発者の負担を軽減します。
  • セキュリティの向上: 重要なコンポーネントだけを含むイメージを作成することができるので、セキュリティ上の脆弱性にさらされるリスクを最小化できます。イメージを社内のセキュリティ基準に適合した状態に維持することができます。また、AWS が提供するセキュリティ設定を使用することも可能です。
  • イメージの検証: EC2 Image Builder の機能を使用してイメージを実稼働環境で使用する前にテストできます。ダウンタイムの原因となるようなイメージのエラーを事前に特定し、指定したテストをパスした場合にのみデプロイするというポリシーを設定することもできます。
  • 一元的なポリシーの適用: AWS Resource Access Manager および AWS Organizations と統合することで、組織内の AWS アカウント全体で自動化スクリプト、レシピ、イメージの共有が可能になります。

全体像をより良く理解するために、次に、EC2 Image Builder で登場するいくつかのリソースと用語、それらの関係性を確認しましょう。

EC2 Image Builder コンポーネント

コンポーネントとは、イメージの作成前にインスタンスをカスタマイズするための一連のステップを定義したリソースで、YAML または JSON ドキュメントとして宣言的に記述します。ソフトウェアパッケージのインストールや構成を行うビルドコンポーネントと、正しくインスタンスが構成されているかを検証するテストコンポーネントの 2 種類があります。また、コンポーネントは AWS が管理するパブリックなものを利用することも、自分で独自に作成することもできます。

例: Amazon CloudWatch エージェントをインストールするコンポーネント amazon-cloudwatch-agent-linux の一部

- name: Install 
  action: ExecuteBash 
  inputs: 
    commands: 
    - | 
    EXTENSION='{{ build.FileExtension.outputs.stdout }}' 
    INSTALLER='{{ build.Installer.outputs.stdout }}' 
    if [[ $EXTENSION == 'rpm' ]]; then 
      sudo rpm --upgrade $INSTALLER --force 
    elif [[ $EXTENSION == 'deb' ]]; then 
      sudo dpkg -i -E $INSTALLER 
    else 
      echo 'Installation not defined for $RELEASE. Failing build.' 
      exit {{ build.Fail.outputs.stdout }} 
    fi

EC2 Image Builder イメージレシピ

イメージレシピとは、その名の通り、どのようなイメージを作成するかの設計書のようなものです。ベースイメージと、それに適用するコンポーネントを指定することで、最終的に構築したいイメージの完成図をドキュメントとして定義することができます。また、バージョン管理などの機能にも対応しており、一貫性のあるイメージの管理を可能にします。

EC2 Image Builder イメージパイプライン

イメージパイプラインは、イメージの作成を自動化するパイプラインです。上述のイメージレシピと、ビルドを行うインフラの設定、イメージの配布先、パイプラインを実行する契機 (手動 or スケジュール) を指定して作成します。これにより、イメージ作成のワークフローを完全に自動化することができます。

イメージパイプラインと、それに含まれるイメージレシピ、そしてレシピ内で指定されるコンポーネント、これらの関係性が把握できたところで、次に AWS Marketplace がどのように関連してくるかを見ていきます。

EC2 Image Builder と AWS Marketplace の統合

AWS Marketplace は、サードパーティが提供するソフトウェアやサービス、データを検索、購入、デプロイすることができる AWS のサービスです。ソフトウェアの利用者にとっては、契約や請求を AWS に一元化することで管理を簡素化できるなどのメリットがあります。また、販売者にとっては、自社のソリューションを拡販するチャネルの 1 つとして利用することができ、AWS との共同販売を加速させることができます。

従来、パッケージ型のソフトウェアを AWS Marketplace で販売するには、ソフトウェアをインストールおよび構成済みの AMI (Amazon Machine Images) を丸ごと出品するか、AMI とその他のインフラストラクチャを構成する AWS CloudFormation テンプレートをセットで出品するという方法しかありませんでした。しかし、ベースイメージも含まれた AMI の出品では、冒頭述べたようなゴールデンイメージの作成に関する課題が発生します。この問題を解決するべく、2024 年 12 月 1 日に発表したのが、AWS Marketplace による EC2 Image Builder コンポーネント出品のサポートです。

ソフトウェアベンダーは、従来の AMI からソフトウェアをインストールおよび構成するステップのみを抽出して、EC2 Image Builder コンポーネントとして AWS Marketplace で販売を開始することができるようになりました。これにより、ベースイメージの管理は利用者側に委ねられ、複数のベンダーのコンポーネントを組み合わせたり、カスタムスクリプトを実行して任意の処理を実行したり、柔軟にゴールデンイメージの構成プロセスを組み立てることができるようになりました。ソフトウェアベンダーとしても、様々な利用環境向けに OS バージョンごとに個別に構成した AMI を複数出品しなければならないというような手間がなくなり、よりソフトウェアのコア機能の開発にリソースを割くことができるようになります。

今回の発表では、ローンチパートナーとして日本からも株式会社インサイトテクノロジーサイオステクノロジー株式会社の 2 社が自社製品を EC2 Image Builder コンポーネントとして作成し、AWS Marketplace での提供を開始しています。これらの対応にあたった経緯や、利用に関する注意点など、それぞれパートナーからの声をご紹介します。

株式会社インサイトテクノロジー

我々インサイトテクノロジーではいくつかの自社製品を AWS Marketplace で公開しています。今回は弊社の製品のなかでも AWS Marketplace からの利用が多かった、Amazon RDS や Amazon Aurora のバージョンアップテストを支援する製品である「Insight SQL Testing」を EC2 Image Builder の AWS Marketplace 対応に合わせて出品しました。Insight SQL Testing は Amazon RDS や Amazon Aurora のメジャーバージョンアップの際に必ず必要となるバージョンアップテストを自動化する製品です。本番環境の DB でアプリケーションが発行する SQL を自動収集し、収集した SQL をバージョンアップ後のテスト環境でテスト・評価することで、DB バージョンアップ時のテスト工数を大幅に削減することができます。

これまで Insight SQL Testing は AMI ベースの製品という形で、AWS Marketplace から製品を提供してきました。AMI の利用はデプロイが容易な反面、企業のポリシーなどによっては AMI のようなソフトウェアアプライアンス利用が許可されないケースもあり、そういった企業での導入を困難なものにしていました。EC2 Image Builder のコンポーネントとして提供することで、AMI の利用が困難な企業にも門戸を広げることにつながると期待しています。また、今回は Insight SQL Testing を対象として EC2 Image Builder への対応を行いましたが、今後、弊社で AMI ベースの製品として公開している別の製品についても対応を広げていきたいと思っています。なお、現時点では EC2 Image Builder の AWS Marketplace では Free Trial はサポートしておらず、気軽に試せる状況にはなっていません。今後サポート予定と聞いていますので、AWS Marketplace 自体の今後の機能の更新にも期待しています。

弊社が EC2 Image Builder で提供する製品をご利用いただくにあたり、いくつかの注意事項があります。まず、想定しているディスク構成にあわせてイメージレシピを構成いただいたり、サポートしているインスタンスタイプに合わせてイメージパイプライン実行時のインフラストラクチャの設定を行っていただくなどの必要があります。これらが正しく設定されていないと、イメージパイプラインを開始できても途中で失敗してしまうためご注意ください。また、弊社アプリ専用に Amazon EC2 インスタンスを立てていただくことを想定した製品となっています。そのため、EC2 Image Builder に対応したとはいえ、既存の別のアプリと共存して動作させることは想定していませんのでご了承ください。ご利用の詳細は弊社までお問合せください。

サイオステクノロジー株式会社

従来、弊社のような ISV が AWS Marketplace で自社製品を販売する場合には、特定バージョンの OS 上で自社製品の環境を構築したものを丸ごと AMI 化し、その AMI を販売するのが主流となっていました。しかしこのやり方では、弊社の LifeKeeper という製品が多くの OS をサポートしていることもあり、複数の OS バージョンと LifeKeeper の製品バリエーションのすべての組み合わせの分だけ AMI を出品することとなり、販売と運用に非常に手間がかかっていました。

今回提供が開始された EC2 Image Builder コンポーネントを活用することによって、OS はユーザーが選択するため、弊社側は LifeKeeper コンポーネントのみの提供となり、運用が非常に容易になります。

現段階では AWS Marketplace で提供されている EC2 Image Builder コンポーネントは種類も数も限られていますが、ユーザーが LifeKeeper コンポーネントと保護対象となるアプリケーションのコンポーネントを組み合わせて、より簡単に環境構築および運⽤できるよう、将来的にそのバリエーションが増えることを期待しています。

今回販売を開始したのはシングルサーバー上での可用性向上を図る Single Server Protection です。製品の詳細についてはこちらをご覧ください。また、今後以下のサポートも予定しています。

  • HA クラスター製品 (LifeKeeper for Linux) の EC2 Image Builder コンポーネントの出品
  • 時間料金以外の料金体系の追加
  • Windows 版の提供
  • Amazon Linux 2023 以外の Linux ディストリビューションへの対応

AWS Marketplace と連携した EC2 Image Builder コンポーネントの利用手順

最後に、ユーザーがどのようにこのコンポーネントを利用できるかを確認しましょう。例として、EC2 Image Builder を使用して、サイオステクノロジーが提供する LifeKeeper Single Server Protection for Linux (以下 LKSSP-L) を構成したマシンイメージを作成し、EC2 インスタンスを起動してみます。

製品のサブスクリプション

EC2 Image Builder と AWS Marketplace はシームレスに連携しているため、あらかじめ AWS Marketplace でサブスクライブした製品を利用することも、EC2 Image Builder からコンポーネントを探してサブスクライブすることもできます。ここでは、EC2 Image Builder のコンソールからコンポーネントを探す手順を確認します。

  1. EC2 Image Builder のコンソールのメニューから、[AWS Marketplace] > [製品を探す] に移動して、コンポーネントを検索します。
  2. SIOS LifeKeeper Single Server Protection のコンポーネントを選択し、[View purchase options] をクリックしてサブスクリプションを進めていきます。
  3. 価格を確認し、[Accept Terms] をクリックして製品をサブスクライブします。
  4. サブスクリプションが完了すると、EC2 Image Builder のコンソールでサブスクライブしたコンポーネントを確認できます。

AMI の作成

サブスクライブした LKSSP-L をコンポーネントとして組み込んだ AMI を EC2 Image Builder で作成します。

イメージレシピの作成

  1. レシピの名称とバージョンを入力し、OS を指定します (※現時点では、Amazon Linux 2023 のみがサポートされています)。
  2. レシピに追加するビルドコンポーネントに、サブスクライブしたコンポーネント (LKSSP-L) を選択し、追加します。
  3. [レシピを作成] をクリックすると、イメージレシピが作成されます。

イメージパイプラインの作成

  1. パイプライン名を入力します。今回、ビルドスケジュールは手動を選択します。
  2. レシピは、先ほど作成したイメージレシピを選択します。
  3. その他は、デフォルト設定で、イメージパイプラインを作成します。

イメージパイプラインの実行

  1. 作成したイメージパイプラインを実行します。
  2. 実行が完了するまで 20〜30 分ほど待ちます。正常終了した場合、AMI が作成されます。

EC2 インスタンスの起動

  1. 作成された AMI から EC2 インスタンスを起動します。
  2. AWS Systems Manager Session Manager 経由で接続し、LKSSP-L がインストールされ起動していることが確認できます。

EC2 インスタンスの起動後は、LKSSP-L 関連の設定を行っていくことになります。詳細情報、稼働環境、従来の LKSSP-L との差分等については、LifeKeeper のユーザーポータルで公開しているこちらの記事をご覧ください。

利用するコンポーネントを AWS Marketplace でサブスクライブする以外は、通常の EC2 Image Builder の利用手順とほとんど同じです。ライセンスの管理やソフトウェアの利用料金の支払いについては AWS Marketplace を通じて行われるため、利用者側が意識する必要がないのも嬉しいポイントです。

まとめ

EC2 Image Builder を利用することで、ゴールデンイメージの作成を自動化し、運用負荷の軽減やセキュリティの向上を図ることができます。この度サードパーティが提供する AWS Marketplace の製品をコンポーネントとして利用できるようになったことで、作成できるマシンイメージの幅も広がりました。AWS Marketplace がもたらすソフトウェア調達におけるメリットも併せて享受し、生産性の向上にご活用いただけると幸いです。

AWS Marketplace で提供中の EC2 Image Builder コンポーネント

その他参考ドキュメント