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

みなさんおはようございます.
Re:Inventが始まり, 徐々にアップデートが発表されてきましたね.
初日で私がいいなと思った機能である, 「EC2 Image Builder」が 発表 されたので, ブログに記載していきます。

EC2 Image Builder とは

OSイメージの作成, 保守, 検証, 共有および, デプロイを行うためのサービスです.
いままではAMIの作成から保守, 運用まで非常に大変でしたがこの新サービスを使うことでこれらの作業を簡単に行えるようになります.
またEC2のみならず, AWS VM Import/Exportと組み合わせることで, VHDXやVMDK, OVFなどといった仮想マシンのイメージ作成も可能です.

EC2 Image Builderの料金はなんと, OSイメージの作成時に使用されるEC2インスタンスやAMIの料金などを除き, EC2 Image Builderの料金は無料です.

これは試すしかないですね. 実際にやってみました.

レシピの作成

最初にベースとなるOSやAMI, コンポーネントとテストを定義するレシピを作成します.

alt

OSとしてAmazon Linuxを使用することを選択した上で, AMIとしてAmazon Linux2を選択します. alt

進んでいくとコンポーネントと呼ばれる, ソフトウェアや設定などが定義されたものが出てきます.
それを選択します.今回はPython3のみを入れてみました. alt

最後にOSイメージが問題なく動作するかのテストを選択します. 今回は単純にブートできるかのテストのみ行います. alt

IAM ロールの作成

EC2 Image Builderでは実際にEC2インスタンスを作成してイメージの検証などを行なっていきます.
なのでEC2インスタンスへ対する適切なロールを設定する必要があるので, まずはIAM ロールを作成します.

alt

AWSが必要なポリシーを「EC2InstanceProfileForImageBuilder」として提供しているので, これを元に作成します.
またEC2 Image Builderがインスタンスを操作する際にSSMを使用するため, 合わせて「AmazonSSMManagedInstanceCore」を付与します.

alt

あとはIAM ロールにタグと名前をつけてささっと作ります.

alt

alt

パイプラインの作成

IAM ロールを作成して準備が整ったのでパイプラインを作成します.
まずはパイプラインをの名前を決めて, 先ほど作成したIAM ロールを設定します.

まずはパイプラインの名前を設定します.
ビルドスケジュールも手動やCronでの設定などが可能です. また検証で使用するEC2インスタンスサイズや作成先VPC,イベント通知先のSNS Topic, ログの出力先バケットなども設定できますが, 今回は省略します.

alt

ここではライセンスマネージャーとの紐付けや, 出力するAMIにつける名前, タグなどを設定していきます.
また今回は設定しませんが, 複数リージョンへの作成やアカウントでの共有などもできる設定もあります.

alt

alt

最後にパイプラインのレビューをして準備完了です.

alt

alt

パイプラインを動かす

先ほど作成したパイプラインを実際に実行してAMIを作成してみます.
Actionsから「Run Actions」を選択して「Run Pipelines」を実行します.

alt

またパイプラインの実行タイミングでEC2インスタンスが作成されていることもマネジメントコンソール上で確認できます.

alt

しばらく時間が経ったのちにAMIが作成されるとパイプラインが完了し, ステータスの変更も確認できます.
またパイプライン上からAMI IDの確認もできます.

alt

本当にサクサク作れて便利です.

最後に

AWSはどんどん便利な機能を発表するので本当にアップデートの検証が楽しいです. パイプラインでやりたいことを一通り実装できてまた, コンポーネントの管理, テストともにマネージドでも提供されているので非常に実装しやすいです. 今回はさらっと触れましたが, 別リージョンへの作成や, 別アカウントとの共有は非常に便利そうな機能なので機会があればぜひ試してみたいです.

参考