[アップデート] AWS CodePipeline から別の CodePipeline を呼び出すアクションが追加されました

[アップデート] AWS CodePipeline から別の CodePipeline を呼び出すアクションが追加されました

Clock Icon2025.03.15

いわさです。

AWS CodePipeline に新しいアクションが追加され、CodePipeline から別の CodePipeline を呼び出しが出来るようになりました。

https://aws.amazon.com/about-aws/whats-new/2025/03/aws-codepipeline-invoking-pipeline-new-action-type/

大規模なワークロード環境になると、複数のパイプラインを連携させて実行したい時があります。
この時、従来だと CodeBuild などからカスタムコマンドを実行する必要があったのですが今回のアップデートで組み込みのアクションで簡単に別のパイプラインを実行できるようになりました。

使ってみる

今回の機能が使えるのは V2 パイプラインとなります。
次のアクションプロバイダーが追加されていることが確認できました。

E8ECB776-9F38-4328-AB76-7A6D662656B8.png

これを使ってふたつのパイプラインを連携してみます。
事前に呼び出し先のパイプラインを作成済みです。次のように選択することが出来ます。

40D758D4-8ED4-4BAF-94DF-402D4DFB6E6A.png

加えて、ターゲットパイプラインを実行する際のソースリビジョンなどを指定したり変数を渡すことが出来ます。
今回は変数の引き渡しを行ってみます。呼び出し元パイプラインで実行時に指定される変数値を、呼び出し先パイプラインの変数にセットします。

86EDC783-5F01-4730-B777-C52D374ED6F6.png

呼び出し先パイプラインでは今回はコマンドアクションを使って変数値の出力だけさせます。

image.png

パイプラインのビジュアルエディター上は次のように「AWS CodePipeline」と表示されました。

322BA55A-DFDB-468B-A30A-A595705073D7.png

早速、実行してみましょう。

88E4235D-92F0-4431-8687-D4DB91962963.png

失敗しました。
呼び出し元に権限がないようです。

権限については以下に記載がありまして、ターゲットパイプラインを実行するcodepipeline:StartPipelineExecution権限が必要になります。

https://docs.aws.amazon.com/ja_jp/codepipeline/latest/userguide/action-reference-PipelineInvoke.html

CodePipeline ですがパイプラインごとにサービスロールが指定されていまして、デフォルトのロール権限だとこの実行権限が設定されていません。
そのため次のように権限を追加してやりましょう。

E6E00D02-45E4-49C6-8184-ED7F5BD4C8A1.png

再度実行すると今度はターゲットパイプラインを呼び出すことができました。

F0C68A05-19E8-4937-B6FE-8AB39B946FEC.png

これ試してみて気がついたのですが、どうやら非同期で実行されるみたいです。
呼び出し先パイプラインの実行中ですが、呼び出し元パイプラインが完了しました。同期させたりステータスを確認したい場合は別の仕組みを考える必要がありそうです。CodeBuild か Command あたりを使うことになりそう。

AD61EBDD-A794-46D9-9E6A-AD6EFAB138A1_4_5005_c.jpeg

呼び出す先パイプラインの実行ログを確認してみると、期待どおり引き渡した変数が使われていることが確認出来ました。

283D456F-6AF8-42D5-9440-841B907EC84E.png

さいごに

本日は AWS CodePipeline から別の CodePipeline を呼び出すアクションが追加されたので使ってみました。

パイプライン連携が必要になる時の選択肢として覚えておきましょう。
アナウンスによるとクロスアカウントでパイプライン呼び出しもできるみたいで、アクション側の設定は出来ました。

2DF95DD9-A4D1-4959-BA5E-F2E5F982C8E0.png

しかし CodePipeline はリソースベースポリシーがないのでどうやってクロスアカウントで権限を与えるのかわからず...Assumeさせる仕組みあったかな。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.