[アップデート] EC2 Image Builderでイメージのビルド状況をリアルタイム参照できる様になりました
しばたです。
前の記事を書いてるときに気が付いたのですが、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がだいぶこなれてきたという印象です。
とはいえレシピやイメージのバージョン管理にまだ煩雑さを感じるところがあるのでさらなる改善に期待したいですね。