[アップデート] AWS CodePipeline から別の CodePipeline を呼び出すアクションが追加されました
いわさです。
AWS CodePipeline に新しいアクションが追加され、CodePipeline から別の CodePipeline を呼び出しが出来るようになりました。
大規模なワークロード環境になると、複数のパイプラインを連携させて実行したい時があります。
この時、従来だと CodeBuild などからカスタムコマンドを実行する必要があったのですが今回のアップデートで組み込みのアクションで簡単に別のパイプラインを実行できるようになりました。
使ってみる
今回の機能が使えるのは V2 パイプラインとなります。
次のアクションプロバイダーが追加されていることが確認できました。
これを使ってふたつのパイプラインを連携してみます。
事前に呼び出し先のパイプラインを作成済みです。次のように選択することが出来ます。
加えて、ターゲットパイプラインを実行する際のソースリビジョンなどを指定したり変数を渡すことが出来ます。
今回は変数の引き渡しを行ってみます。呼び出し元パイプラインで実行時に指定される変数値を、呼び出し先パイプラインの変数にセットします。
呼び出し先パイプラインでは今回はコマンドアクションを使って変数値の出力だけさせます。
パイプラインのビジュアルエディター上は次のように「AWS CodePipeline」と表示されました。
早速、実行してみましょう。
失敗しました。
呼び出し元に権限がないようです。
権限については以下に記載がありまして、ターゲットパイプラインを実行するcodepipeline:StartPipelineExecution
権限が必要になります。
CodePipeline ですがパイプラインごとにサービスロールが指定されていまして、デフォルトのロール権限だとこの実行権限が設定されていません。
そのため次のように権限を追加してやりましょう。
再度実行すると今度はターゲットパイプラインを呼び出すことができました。
これ試してみて気がついたのですが、どうやら非同期で実行されるみたいです。
呼び出し先パイプラインの実行中ですが、呼び出し元パイプラインが完了しました。同期させたりステータスを確認したい場合は別の仕組みを考える必要がありそうです。CodeBuild か Command あたりを使うことになりそう。
呼び出す先パイプラインの実行ログを確認してみると、期待どおり引き渡した変数が使われていることが確認出来ました。
さいごに
本日は AWS CodePipeline から別の CodePipeline を呼び出すアクションが追加されたので使ってみました。
パイプライン連携が必要になる時の選択肢として覚えておきましょう。
アナウンスによるとクロスアカウントでパイプライン呼び出しもできるみたいで、アクション側の設定は出来ました。
しかし CodePipeline はリソースベースポリシーがないのでどうやってクロスアカウントで権限を与えるのかわからず...Assumeさせる仕組みあったかな。