View a markdown version of this page

Image Builder イメージのビルド、テスト、およびディストリビューションワークフローを管理する - EC2 イメージビルダー

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Image Builder イメージのビルド、テスト、およびディストリビューションワークフローを管理する

イメージワークフローは、イメージ作成プロセスの 1 つの段階で EC2 Image Builder が実行するステップのシーケンスを定義します。ワークフローを YAML ドキュメントとして作成し、バージョニングされた再利用可能なリソースとして作成します。その後、Image Builder はイメージの構築、テスト、配布時にワークフローを実行します。

ワークフローを使用すると、イメージ作成プロセスを直接制御できます。どのステップをどの順序で実行するか、失敗したときに各ステップが何をするか、Image Builder が失敗したステップをロールバックするかどうかを決定します。Amazon マネージドワークフローから開始したり、クローンを作成してカスタマイズしたり、ゼロから独自のワークフローを記述したりできます。

イメージワークフローの利点
  • イメージワークフローを使用すると、イメージ作成プロセスの柔軟性、可視性、制御性が向上します。

  • ワークフロードキュメントを定義するときにカスタマイズされたワークフローステップを追加することも、Image Builder のデフォルトワークフローを使用することもできます。

  • Image Builder がデフォルトのイメージワークフローに含めるワークフローステップを除外できます。

  • ビルドプロセスを完全にスキップするテスト専用のワークフローを作成できます。ビルドのみまたはディストリビューションのみのワークフローを作成する場合も同様です。

注記

既存のワークフローは変更できませんが、クローンを作成したり、新しいバージョンを作成することはできます。

ワークフローフレームワーク: ステージ

Image Builder は、イメージ作成プロセスを 3 つのステージに整理します。各ステージは、一致するタイプのワークフローを実行します。ステージは固定順序で実行され、ステージは前のステージが正常に終了した後にのみ開始されます。

次の表に、各ステージのデフォルトの動作を示します。各ワークフローのステップを定義するため、ステージの動作をカスタマイズできます。

Image Builder ワークフローステージ

Order

ステージ

ワークフロータイプ

動作 (デフォルト)

1

Build

BUILD

ビルドインスタンスを起動し、ビルドコンポーネントを実行し、インスタンスからイメージ (AMI またはコンテナイメージ) を作成します。

2

Test

TEST

新しいイメージからテストインスタンスを起動し、テストコンポーネントを実行し、オプションでイメージスキャンの検出結果を収集します。

3

配信

DISTRIBUTION

ターゲットリージョンとアカウントにイメージをコピーし、イメージ属性を変更し、起動テンプレートやライセンス設定などの配布後設定を適用します。

ワークフローは、一部のステージでのみ実行できます。たとえば、ビルドステージをスキップして既存のイメージをテストまたは配布したり、テストステージをスキップしてテストなしでビルドおよび配布したりできます。ビルドまたはテストステージをスキップするには、パイプラインまたはイメージリクエストからそのタイプのワークフローを省略します。

注記

ディストリビューションワークフローはオプションです。これを省略しても、Image Builder はディストリビューションをスキップしません。パイプラインまたはイメージにアタッチするディストリビューション設定を実行して AMI を分散します。ディストリビューション設定を異なるディストリビューション設定で上書きする場合、またはディストリビューションプロセスの可視性を高めるために、ディストリビューションワークフローを追加します。ディストリビューションを完全にスキップするには、null または空のディストリビューション設定を指定します。

注記

イメージパイプラインまたはイメージリクエストには、最大 1 つのビルドワークフローと 1 つのディストリビューションワークフローを含めることができます。また、1 つ以上のテストワークフローを含めることもできます。ワークフローの合計数は 10 を超えることはできません。たとえば、1 つのビルドワークフローと 1 つのディストリビューションワークフローを最大 8 つのテストワークフローとペアリングできます。

ワークフローの実行方法

ワークフローは、YAML ドキュメントで定義した順序でステップを実行します。各ステップは、インスタンスの起動やコンポーネントの実行など、1 つのアクションを実行します。

ステップの結果

各ステップは、次のいずれかの状態で終了します。

ワークフローステップの結果

State

意味

COMPLETED

ステップは正常に終了しました。

SKIPPED

ステップの条件ifステートメントが に評価されたためfalse、Image Builder はステップをスキップしました。

FAILED

ステップは正常に完了しませんでした。

WAITING

WaitForAction ステップは一時停止され、外部アクションを待機します。

TIMED_OUT

ステップはtimeoutSeconds値よりも長く実行されました。

障害処理

各ステップの onFailure 属性は、ステップが失敗したときにどうなるかを制御します。

  • Abort (デフォルト) – Image Builder はステップを失敗させ、ワークフローを失敗させ、それ以上ステップを実行しません。ロールバックが有効になっている場合、ロールバックは失敗したステップで開始され、前のステップで逆算されます。

  • Continue — Image Builder はステップに失敗しますが、残りのステップを実行します。ロールバックは行われません。

ロールバック

onFailure: Abort および rollbackEnabled: true (デフォルト) でステップが失敗した場合、Image Builder は失敗したステップから順に完了したステップをロールバックします。すべてのアクションをロールバックできるわけではありません。ロールバックがないアクションは、 のステータスを記録しますNO_ROLLBACK

Amazon EventBridge でワークフロー実行をモニタリングする

Image Builder は、ワークフローの実行時に Amazon EventBridge イベントを出力するため、進行状況や注意が必要なステップに対応できます。たとえば、WaitForActionステップは、 詳細タイプのイベントをデフォルトのイベントバスEC2 Image Builder Workflow Step Waitingに発行します。このイベントを Lambda 関数や Amazon SNS トピックなどのターゲットにルーティングして、承認プロセスを推進できます。Image Builder と EventBridge の連携の詳細については、「」を参照してくださいImage Builder における Amazon EventBridge の統合

ステップレベルの進捗状況をプログラムで追跡するには、ListWorkflowExecutions、、GetWorkflowExecutionListWorkflowStepExecutions、および GetWorkflowStepExecution API オペレーションを使用します。

ワークフローリソースの制約

ワークフロードキュメントと設定は、次のデフォルトの制限内にとどまる必要があります。

ワークフローリソースの制約

制約

デフォルトの制限

注意事項

ワークフロードキュメントあたりのステップ

15

ステップはドキュメントの順序で実行されます。

ワークフロードキュメントあたりの出力

25

後のワークフローに値を渡します。

ワークフロードキュメントあたりのパラメータ

25

発信者が設定できる入力。

パラメータ値の長さ

1,024 文字

パラメータ値ごと。

インラインドキュメントサイズ (data)

16,000 バイト

大きなドキュメントには uri (Amazon S3) オプションを使用します。

イメージまたはパイプラインあたりのワークフロー

10

最大 1 つのビルドと 1 つのディストリビューション、および合計 10 のテストワークフロー。

ワークフローリソースはイミュータブルです。ワークフローを変更するには、新しいバージョンを作成するか、クローンを作成します。Image Builder はすべてのバージョンを保持するため、各イメージを生成したワークフローを追跡できます。

サービスアクセス

イメージワークフローを実行するには、Image Builder にワークフローアクションを実行する権限が必要です。このアクセス許可は、Image Builder がユーザーに代わって引き受ける実行ロールで付与します。次のように実行ロールを割り当てます。

重要

AWSServiceRoleForImageBuilder サービスにリンクされたロールを実行ロールとして渡さないことをお勧めします。代わりに、カスタム IAM ロールを作成し、 EC2ImageBuilderExecutionPolicy AWS 管理ポリシーをアタッチします。このポリシーは、Image Builder が AWS のサービス ユーザーに代わって呼び出すのと同じアクセス許可を付与します。カスタムロールを使用すると、Image Builder が使用するアクセス許可を完全に制御できます。また、Image Builder がユーザーに代わって実行するオペレーションに対して、サービスコントロールポリシー (SCPs) とリソースコントロールポリシー (RCPs) が有効になります。

  • コンソール – パイプラインウィザードのステップ 3 イメージ作成プロセスを定義するで、サービスアクセスパネルの IAM ロールリストからカスタムロールを選択します。

  • Image Builder APICreateImage アクションリクエストで、カスタムロールを executionRoleパラメータの値として指定します。

カスタム実行ロールを作成するには、「 AWS Identity and Access Management ユーザーガイド」の「 AWS サービスにアクセス許可を委任するロールの作成」を参照してください。

イメージにマネージドワークフローを使用する

AWS は、マネージドワークフローを作成および維持します。イメージパイプラインまたは 1 回限りのイメージ作成でマネージドワークフローを使用する場合は、使用するマネージドワークフローの Amazon リソースネーム (ARN) を選択できます。Amazon では、パッチやその他の更新が適用された最新バージョンを提供しています。マネージドワークフローのリストを取得するには、「」を参照しイメージワークフローを一覧表示する所有者 = Amazon (コンソール) でフィルタリングします。

ビルド速度と検証要件に基づいてマネージドワークフローを選択できます。マネージドワークフロータイプの例を次に示します。

標準マネージドワークフロー (デフォルト)

標準マネージドワークフローには、完全な EC2 ステータスチェックを使用してイメージを構築、テスト、検証するための包括的なステップが含まれています。

標準マネージドワークフローは次のとおりです。

  • build-image – Amazon が管理するデフォルトの AMI ビルドワークフロー。

  • test-image – Amazon が管理するデフォルトの AMI テストワークフロー。

  • build-container – Amazon が管理するデフォルトのコンテナビルドワークフロー。

  • test-container – Amazon が管理するデフォルトのコンテナテストワークフロー。

Express マネージドワークフロー

Express マネージドワークフローには、重要なステップのみが含まれており、イメージの作成時間を短縮できます。

エクスプレスマネージドワークフローは次のとおりです。

  • express-build-image – ビルド時間を短縮する Express Amazon マネージド AMI ビルドワークフロー。完全な EC2 ステータスチェックではなく、インスタンスの実行状態のみを待機し、イメージメタデータ収集をスキップします。

  • express-build-container – ビルド時間を短縮する Express Amazon マネージドコンテナビルドワークフロー。完全な EC2 ステータスチェックではなく、インスタンスの実行状態のみを待機します。

  • express-test-image – テスト時間を短縮する Express Amazon マネージド AMI テストワークフロー。完全な EC2 ステータスチェックではなく、インスタンスの実行状態のみを待機し、セキュリティスキャンの検出結果の収集をスキップします。