View a markdown version of this page

Image Builder でのパイプラインワークフローの設定 - EC2 イメージビルダー

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

Image Builder でのパイプラインワークフローの設定

イメージワークフローを使用すると、パイプラインが実行するワークフローをカスタマイズして、必要に応じてイメージを構築、テスト、配布できます。定義するワークフローは、Image Builder ワークフローフレームワークのコンテキスト内で実行されます。ワークフローフレームワークを構成するステージの詳細については、「Image Builder イメージのビルド、テスト、およびディストリビューションワークフローを管理する」を参照してください。

ビルドワークフロー

ビルドワークフローは、ワークフローフレームワークの Build 段階で実行されます。パイプラインに指定できるビルドワークフローは 1 つのみです。または、ビルドを完全にスキップして、テスト専用パイプラインを設定することもできます。

テストワークフロー

テストワークフローはワークフローフレームワークの Test 段階で実行されます。パイプラインに 1 つ以上のテストワークフローを追加できます。最大 10 個のワークフローの合計数まで追加でき、ビルドワークフローとディストリビューションワークフローもカウントされます。テストワークフローは、テストグループの定義方法に応じて、並列または一度に 1 つずつ実行できます。パイプラインのみをビルドしたい場合は、テストを完全にスキップすることもできます。

ディストリビューションワークフロー

ディストリビューションワークフローは、ワークフローフレームワークのDistribution段階で実行されます。ディストリビューションワークフローはオプションです。指定しない場合でも、Image Builder はパイプラインまたはイメージにアタッチするディストリビューション設定を実行して AMI を分散します。ディストリビューション設定を異なるディストリビューション設定で上書きする場合、またはディストリビューションプロセスの可視性を高めるために、ディストリビューションワークフローを指定します。パイプラインに 1 つのディストリビューションワークフローを指定できます。コンテナイメージを構築し、ディストリビューションワークフローを指定しない場合、Image Builder は Amazon マネージドコンテナディストリビューションワークフローを追加します。

テストワークフローのテストグループを定義します。

テストグループ内でテストワークフローを定義します。パイプラインに対して複数のテストワークフローを実行できます。合計制限は 10 ワークフローで、これにはビルドワークフローとディストリビューションワークフローが含まれます。テストワークフローを特定の順序で実行するか、できるだけ多くのワークフローを同時に実行するかを決定します。実行方法は、テストグループの定義方法によって異なります。以下のシナリオは、テストワークフローを定義するいくつかの方法を示したものです。

注記

parallelGroup および onFailureの設定は、テストワークフローにのみ適用されます。Image Builder は、 を使用してビルドまたはディストリビューションワークフローでそれらを拒否しますInvalidParameterCombinationException

テストグループの実行方法

Image Builder は、テストグループでテストワークフローを実行します。グループは一度に 1 つずつ実行されます。単一のグループ内のテストワークフローは、同時に (並行して) 実行されます。Image Builder は最大 5 つのテストワークフローを同時に実行します。グループに 5 つ以上のテストワークフローがある場合、Image Builder は各テストワークフローが終了すると次のテストワークフローを開始します。グループの一部ではないテストワークフローは、単独で実行されます。

テストグループの定義方法は、コンソールを使用するか、 AWS CLI および API を使用するかによって異なります。使用するメソッドに一致するタブを選択します。

AWS マネジメントコンソール

コンソールでパイプラインを作成または編集するときは、イメージ作成プロセスのテストワークフローセクションでテストワークフローを定義します。テストを実行するには、テストワークフローを選択するオプションを選択します。テストなしでイメージを構築するには、テストワークフローをスキップするオプションを選択します。

コンソールは、テストワークフローをテストグループに整理します。新しいパイプラインは 1 つのテストグループで始まります。テスト設定を構築するには、以下を実行します。

  • グループにテストワークフローを追加する – グループにテストワークフローを追加し、独自のワークフロー (自分が所有する) または AWS マネージドワークフロー (Amazon が管理) からワークフローを選択します。ワークフローでパラメータが定義されている場合、値を入力できるようにコンソールにパラメータが表示されます。グループは最大 5 つのテストワークフローを保持でき、同時に実行されます。

  • テストグループの追加 – 別のテストグループを追加して、別のテストセットを実行します。最大 10 個のテストグループを追加できます。グループの名前を変更するには、名前の編集を選択します。グループ名は最大 128 文字で、文字、数字、ハイフン (-)、アンダースコア () を含めることができます_

Image Builder は、ウィザードに表示される順序で、テストグループを一度に 1 つずつ実行します。グループ内のテストワークフローは同時に実行されます。グループには、最大 5 つのテストワークフローを含めることができます。テストを一度に 1 つずつ実行するには、各テストワークフローを独自のグループに配置します。

注記

テストワークフローとグループを追加または削除することはできますが、順序を変更することはできません。テストグループを作成する前に、テストグループの順序を計画します。

AWS CLI

AWS CLI または Image Builder API を使用する場合、テストグループを直接定義しません。代わりに、workflowsリスト内の各テストワークフローに parallelGroup 属性を設定します。同じparallelGroup値を持つテストワークフローは 1 つのグループを形成し、同時に実行されます。parallelGroup 値のないテストワークフローは、単独で実行されます。どのテストワークフローにもparallelGroup値を設定しないと、Image Builder はそれらを一度に 1 つずつ実行します。

AWS CLI および API は、グループ内のテストワークフローの数を制限しません。唯一の制限はワークフローの合計数で、10 を超えることはできません (ビルドワークフローとディストリビューションワークフローを含む)。コンソールは、グループを 5 つのテストワークフローに制限します。

Image Builder は常に最初にビルドワークフローを実行し、次にテストワークフローを実行し、次にディストリビューションワークフローを実行します。この順序は、一覧表示方法に関係なく適用されます。

テストステージ内で、Image Builder はテストワークフローを次のように順序付けます。

  • グループは、各グループがworkflowsリストに最初に表示される位置順に並べられます。parallelGroup 値では順序付けされません。

  • これにより、グループがリストされた位置にない各ワークフローが保持されます。

  • グループ内のワークフローは、そのグループが最初に表示される位置で一緒に実行されます。

この順序で 5 つのテストワークフローを一覧表示し、その一部に parallelGroup値を設定するとします。

  • テストワークフロー A – グループなし

  • テストワークフロー B – parallelGroup: tests-1

  • テストワークフロー C – グループなし

  • テストワークフロー D – parallelGroup: tests-1

  • テストワークフロー E – parallelGroup: tests-2

Image Builder は次の順序でそれらを実行します。

  1. ワークフロー A を単独でテストします。

  2. ワークフロー B とワークフロー D を同時にテストします。tests-1 グループを共有し、最初にテストワークフロー B に表示されます。

  3. ワークフロー C を単独でテストします。

  4. tests-2 グループ内でワークフロー E を単独でテストします。

テストワークフロー D は、グループ間でテストワークフロー C をリストした場合でも、グループを共有するため、テストワークフロー B と一緒に実行されます。という名前のグループは より前にtests-1実行されます。これは、 がリストの先頭tests-1に表示されるtests-2ためです。グループの順序は、parallelGroup値ではなくリストの順序に従います。

シナリオ 1: 一度に 1 つのテストワークフローを実行する

すべてのテストワークフローを一度に 1 つずつ実行するには、テストワークフローごとに個別のテストグループを設定し、合計 10 個のワークフロー (ビルドワークフローとディストリビューションワークフローを含む) の合計制限を設定します。Image Builder はテストグループを一度に 1 つずつ実行します。これは、テストワークフローが特定の順序で 1 つずつ実行されるようにするための 1 つの方法です。

シナリオ 2: 複数のテストワークフローを同時に実行する

順序は重要ではなく、できるだけ多くのテストワークフローを同時に実行したい場合は、1 つのテストグループを設定し、そのグループに最大数のテストワークフローを設定できます。Image Builder は同時に最大 5 つのテストワークフローを起動し、各テストワークフローが完了すると新しいテストワークフローを開始します。テストワークフローをできるだけ速く実行することが目標であれば、これがその方法の 1 つです。

シナリオ 3: 混合と組み合わせ

同時に実行できるテストワークフローと 1 つずつ実行する必要があるテストワークフローが混在するシナリオでは、この目標を達成するようにテストグループを設定できます。テストグループの設定方法に関する唯一の制限は、パイプラインで実行できるテストワークフローの最大数です

コンソールでの Image Builder パイプラインのワークフローパラメータの設定

ワークフローパラメータは、ビルド、テスト、およびディストリビューションワークフローでも同じように機能します。パイプラインを作成または更新するときは、含めるビルド、テスト、およびディストリビューションのワークフローを選択します。選択したワークフローのワークフロードキュメントでパラメータを定義した場合、Image Builder は [パラメータ] パネルにそのパラメータを表示します。パネルは、パラメータが定義されていないワークフローでは非表示になります。

各パラメータには、ワークフロードキュメントで定義されている以下の属性が表示されます。

  • [名前] (編集不可) – パラメータの名前。

  • (編集不可) - パラメータ値のデータ型。

  • – パラメータの値。パラメータ値を編集してパイプラインに設定できます。

Image Builder がワークフローアクションを実行するために使用する IAM サービスロールを指定します。

カスタムイメージワークフローをパイプラインにアタッチする場合、またはログ記録設定を設定する場合は、実行ロールも指定する必要があります。これは、Image Builder がワークフローアクションを実行するために引き受ける IAM ロールです。ロールは 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 マネジメントコンソール

でパイプラインを作成または更新すると AWS マネジメントコンソール、イメージパイプラインの作成ウィザードには、パイプラインが実行するワークフローを選択するワークフローステップが含まれます。カスタムイメージワークフローを関連付けるには、そのステップで次の手順を実行します。

  1. ビルドワークフローで、パイプラインを実行するビルドワークフローを選択します。

  2. テストワークフローでは、1 つ以上のテストワークフローを追加してテストグループに整理し、実行する順序を制御します。詳細については、「テストワークフローのテストグループを定義します。」を参照してください。

  3. ディストリビューションワークフローで、アタッチされたディストリビューション設定を上書きするか、ディストリビューションプロセスをより詳細に可視化する場合は、ディストリビューションワークフローを選択します。これはオプションです。

  4. 実行ロール で、ワークフローアクションを実行するために Image Builder が引き受ける IAM ロールを選択します。カスタムイメージワークフローを関連付けるときは、実行ロールが必要です。詳細については、「Image Builder がワークフローアクションを実行するために使用する IAM サービスロールを指定します。」を参照してください。

  5. 選択したワークフローでパラメータが定義されている場合は、パラメータパネルでその値を設定します。詳細については、「コンソールでの Image Builder パイプラインのワークフローパラメータの設定」を参照してください。

完全なイメージパイプライン作成ウィザードのstep-by-stepのチュートリアルについては、「」を参照してくださいAMI イメージパイプラインの作成と更新

AWS CLI

パイプラインの作成時にカスタムイメージワークフローを関連付けるには、 create-image-pipeline コマンドを使用します。--execution-role パラメータを使用して実行ロールを指定し、 --workflowsパラメータを使用してビルド、テスト、ディストリビューションのワークフローを一覧表示します。次の例では、1 つのビルドワークフロー、1 つのテストワークフロー、1 つのディストリビューションワークフローを使用してパイプラインを作成します。

aws imagebuilder create-image-pipeline \ --name example-pipeline \ --image-recipe-arn arn:aws:imagebuilder:us-west-2:111122223333:image-recipe/example/1.0.0 \ --infrastructure-configuration-arn arn:aws:imagebuilder:us-west-2:111122223333:infrastructure-configuration/example \ --execution-role arn:aws:iam::111122223333:role/ImageBuilderWorkflowExecutionRole \ --workflows '[ {"workflowArn":"arn:aws:imagebuilder:us-west-2:111122223333:workflow/build/example-build/1.0.0"}, {"workflowArn":"arn:aws:imagebuilder:us-west-2:111122223333:workflow/test/example-test/1.0.0","parallelGroup":"group-1","onFailure":"CONTINUE"}, {"workflowArn":"arn:aws:imagebuilder:us-west-2:111122223333:workflow/distribution/example-distribute/1.0.0"} ]'