[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, コンポーネントとテストを定義するレシピを作成します.
OSとしてAmazon Linuxを使用することを選択した上で, AMIとしてAmazon Linux2を選択します.
進んでいくとコンポーネントと呼ばれる, ソフトウェアや設定などが定義されたものが出てきます.
それを選択します.今回はPython3のみを入れてみました.
最後にOSイメージが問題なく動作するかのテストを選択します. 今回は単純にブートできるかのテストのみ行います.
IAM ロールの作成
EC2 Image Builderでは実際にEC2インスタンスを作成してイメージの検証などを行なっていきます.
なのでEC2インスタンスへ対する適切なロールを設定する必要があるので, まずはIAM ロールを作成します.
AWSが必要なポリシーを「EC2InstanceProfileForImageBuilder」として提供しているので, これを元に作成します.
またEC2 Image Builderがインスタンスを操作する際にSSMを使用するため, 合わせて「AmazonSSMManagedInstanceCore」を付与します.
あとはIAM ロールにタグと名前をつけてささっと作ります.
パイプラインの作成
IAM ロールを作成して準備が整ったのでパイプラインを作成します.
まずはパイプラインをの名前を決めて, 先ほど作成したIAM ロールを設定します.
まずはパイプラインの名前を設定します.
ビルドスケジュールも手動やCronでの設定などが可能です.
また検証で使用するEC2インスタンスサイズや作成先VPC,イベント通知先のSNS Topic, ログの出力先バケットなども設定できますが, 今回は省略します.
ここではライセンスマネージャーとの紐付けや, 出力するAMIにつける名前, タグなどを設定していきます.
また今回は設定しませんが, 複数リージョンへの作成やアカウントでの共有などもできる設定もあります.
最後にパイプラインのレビューをして準備完了です.
パイプラインを動かす
先ほど作成したパイプラインを実際に実行してAMIを作成してみます.
Actionsから「Run Actions」を選択して「Run Pipelines」を実行します.
またパイプラインの実行タイミングでEC2インスタンスが作成されていることもマネジメントコンソール上で確認できます.
しばらく時間が経ったのちにAMIが作成されるとパイプラインが完了し, ステータスの変更も確認できます.
またパイプライン上からAMI IDの確認もできます.
本当にサクサク作れて便利です.
最後に
AWSはどんどん便利な機能を発表するので本当にアップデートの検証が楽しいです. パイプラインでやりたいことを一通り実装できてまた, コンポーネントの管理, テストともにマネージドでも提供されているので非常に実装しやすいです. 今回はさらっと触れましたが, 別リージョンへの作成や, 別アカウントとの共有は非常に便利そうな機能なので機会があればぜひ試してみたいです.