[アップデート] EC2 Image Builderでイメージのビルド状況をリアルタイム参照できる様になりました

2023.04.07

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

しばたです。

前の記事を書いてるときに気が付いたのですが、EC2 Image Builderにおいてマネジメントコンソール上でイメージのビルド状況をリアルタイムに参照できる様になっていました。

これは先週適用されたアップデートでAWSからのアナウンスはこちらになります。

どういうことか?

内容としてはタイトル通りで、パイプラインの実行画面(ビルドイメージ詳細画面)に新たに「ワークフロー」タブが増えてビルドおよびテストの各ステップごとの詳細を参照できる様になりました。

ビルド中は各ステップの状況がリアルタイムで更新されます。
これまで分かりにくかった各ステップの全体像と進捗状況が非常にこまかく参照できる様になっています。

また、アナウンスによるとワークフローを最適化したそうで、AWS内部のテストでは最大35%ビルド速度が改善されたそうです。

試してみた

それでは実際に試してみます。
今回は私の検証用AWSアカウントの東京リージョンを使用しています。

1. AMIビルドのパイプライン

はじめにAMIのビルドパイプラインを確認してみます。
今回はシンプルにWindows Server 2022にAWS CLIをインストールするだけの簡単なパイプラインを用意しておきました。

このパイプラインを実行すると「ワークフロー」タブで各ステップの状況が確認できる様になっています。

ワークフローは大きく「build-image (ビルド)」「test-image (テスト)」の2フェーズで切り替え可能となっており、ビルドフェーズは以下の7ステップ参照可能です。

No ステップ名 内容
1 LaunchBuildInstance ビルド用EC2インスタンスの起動
2 ApplyBuildComponents レシピを実行し各ビルドコンポーネントを適用
3 InventoryCollection 拡張メタデータの収集
4 RunSanitizeScript (Linuxのみ) 一時ファイルクリアなどのサニタイズ処理
5 RunSysPrepScript (Windowsのみ) Sysprepによる一般化処理
6 CreateOutputAMI AMIの作成
7 TerminateBuildInstance ビルド用EC2インスタンスの削除

各ステップごとの詳細も確認可能です。
下図はApplyBuildComponentsステップの詳細画面ですが、関連付けられているSSM Run CommandのIDと出力結果や、CloudWatch Logsに出力されるアプリケーションログの確認が可能です。

CloudWatch Logsに関しては直接ログストリームを参照可能で、ログストリームには全フェーズ・全ステップのログが記録されています。

テストフェーズは以下の4ステップ参照可能です。

No ステップ名 内容
1 LaunchTestInstance テスト用EC2インスタンスの起動
2 CollectImageScanFindings 未確認。たぶんセキュリティスキャンの実施
3 ApplyTestComponents テストコンポーネントの適用
4 TerminateTestInstance テスト用EC2インスタンスの削除

こちらも各ステップごとの詳細を確認できます。

2. コンテナビルドのパイプライン

次にコンテナイメージのビルドパイプラインを確認してみます。
今回はAmazon Linux 2ベースイメージにAWS CLIをインストールするパイプラインを用意しておきました。

コンテナビルドのワークフローは「build-container (ビルド)」「test-container (テスト)」「distribute-conainter (配布)」の3フェーズで切り替え可能となっており、ビルドフェーズは以下の3ステップ参照可能です。

No ステップ名 内容
1 LaunchBuildInstance ビルド用EC2インスタンス(Dockerホスト)の起動
2 BootstrapBuildInstance EC2インスタンスで必要な前処理およびDockerデーモンの起動を実施
3 ApplyBuildComponents ビルドコンポーネントの適用

こちらもAMIのビルド同様各ステップの詳細を確認できます。

テストフェーズは以下の3ステップ参照可能です。

No ステップ名 内容
1 VerifyTestInstance インスタンスの稼働チェック (単純なSSM Run Commandが成功するか判定している)
2 CollectImageScanFindings 未確認。たぶんセキュリティスキャンの実施
3 ApplyTestComponents テストコンポーネントの適用

配布フェーズは以下の3ステップ参照可能です。

No ステップ名 内容
1 VerifyReplicateInstance インスタンスの稼働チェック (単純なSSM Run Commandが成功するか判定している)
2 PushToECR ECRへイメージをPush
3 TerminateInstance ビルド用EC2インスタンスの削除

最後に

以上となります。

Image Builderを触るのは久しぶりだったのですが、昔と比べてマネジメントコンソールのUIがだいぶこなれてきたという印象です。
とはいえレシピやイメージのバージョン管理にまだ煩雑さを感じるところがあるのでさらなる改善に期待したいですね。