CodePipelineのパイプラインタイプ(V1/V2)を比較してみた

2023.11.19

こんにちは、つくぼし(tsukuboshi0755)です!

先日の話になりますが、CodePipelineで以下のようなアップデートがありました。

これらのアップデートについてですが、どうやらCodePipelineにパイプラインタイプという概念が追加され、今までのV1タイプとは異なる新しいV2タイプでのみ上記機能を使用可能との事です。

そこで本記事では、上記のパイプラインタイプについて、どのような相違点があるか比較してみます!

パイプラインタイプとは

以下の公式ドキュメントに、パイプラインタイプに関する概念の記載があります。

こちらの公式ドキュメントを読む限り、V1タイプとV2タイプでは機能や価格の面で違いがあるみたいですね。

以降では、機能面及び価格面に分けて、相違点を比較してみます。

機能面

V1タイプとV2タイプの機能面の相違点は、以下の通りです。

機能 V1 V2
アクションレベル変数 サポート対象 サポート対象
パイプラインレベル変数 サポート外 サポート対象
Gitタグによるトリガー設定 サポート外 サポート対象

なお以下の設定画面の通り、CodePipelineのパイプラインタイプは、パイプライン作成後でも切り替える事が可能なようです。

本記事ではパイプラインレベル変数について試してみます。


V1タイプでもアクションレベル変数は使用可能ですが、以下の通り使用できる変数は決まっています。

これらの変数以外で、自身でカスタマイズした変数を使用したい場合、今回のアップデートで追加されたパイプラインレベル変数が使用できます。

ただし、ビルドアクションで良く利用されるCodeBuildでは、以下のブログの通り既に様々な手法で変数を指定する事ができます。

そのため今回のアップデートで追加されたパイプラインレベル変数は、主に承認アクションやデプロイアクションで使用する機会が多くなりそうです。


では実際にパイプラインレベル変数を使用したCodePipelineを試してみましょう。

以下の通り、パイプラインタイプをV2に設定し、パイプラインレベル変数を以下で指定したパイプラインを作成します。

  • 名前:sample
  • デフォルト値:hoge

まずソースアクションは以下の通り、mainブランチを対象としたCodeCommitを指定します。

次に承認アクションは以下の通り、コメントにComment: #{variables.sample}という形で変数を埋め込みます。

最後にデプロイアクションは以下の通り、S3バケットを対象に、#{variables.sample}.txtという名前で変数を埋め込んだオブジェクトキーを指定します。

この状態で、リポジトリにtxtファイルをコミットします。

パイプラインに移動し、「変更をリリースする」ボタンをクリックします。

するとこのような形で、リリース時にパイプライン変数の値をデフォルトから変更する事が可能です。

今回はデフォルトのまま実行します。

まずApprovalステージでパイプラインが止まるので確認すると、コメントに想定通りhogeという変数が埋め込まれている事が確認できます!

続けて内容問題なければ、「承認します」ボタンをクリックします。

デプロイ対象のS3バケットを確認すると、hoge.txtというオブジェクトが作成され、こちらも変数が埋め込まれている事が確認できました!

価格面

V1タイプとV2タイプの価格面の相違点は、以下の通りです。

価格 V1 V2
課金形態 アクティブパイプライン(※)あたり毎月1.00USD アクション実行時間1分あたり0.002 USD
無料利用枠 1か月あたり1つのアクティブパイプライン パイプラインごとに1か月あたり100分間

※アクティブパイプライン:30日以上存在していて、その月に少なくとも1つのコード変更が発生したパイプライン

参考:AWS CodePipeline の料金

上記の通りパイプラインタイプにより料金の計算方法が異なるため、利用状況に合わせて計算すると良さそうです。

ざっくり考えると、アクティブパイプラインが1つだけ、またはパイプラインの実行時間が多い場合、基本的にV1タイプの方が安くなりやすそうです。

逆にアクティブパイプラインが2つ以上あり、かつそれぞれのパイプラインの実行時間が少なければ、V2タイプの方が安くなる場合もあります。

最後に

今回はCodePipelineのパイプラインタイプを比較してみました!

CodePipelineのパイプラインタイプは、パイプライン作成後でも切り替える事が可能なので、利用状況に合わせて使い分けると良さそうですね。

現在CodePipelineを使用している方は、必要に応じてV2の使用を検討してみても良いかもしれません。

以上、つくぼし(tsukuboshi0755)でした!