AWS CodePipelineのステージとアクション入門 - パイプラインの基本構成要素を理解しよう
CodePipelineでアプリケーションを自動でデプロイするとき、「ステージ」と「アクション」という2つの重要な要素があります。これらはパイプラインの核となる部分で、どんな作業をどの順番で実行するかを決める仕組みです。
この記事では、初めてCodePipelineを使う方でも分かるように、ステージとアクションの基本的な考え方と、よく使われる6つのアクションタイプについて図解を交えて説明します。
ステージとアクションの基本的な考え方
まず、ステージとアクションの関係を理解しましょう。これらは建物の建築工程と同じような考え方です。
ステージとは
ステージは「工程」のようなものです。例えば「準備する工程」「作る工程」「公開する工程」といった具合に、作業を大きくまとめたグループのことです。
アクションとは
アクションは「具体的な作業」のことです。例えば「ソースコードを取得する」「アプリケーションをビルドする」「テストを実行する」といった、実際に行う作業のことです。
6つのアクションタイプを理解しよう
CodePipelineでは、6つの異なるアクションタイプを使い分けることで、様々な作業を自動化できます。それぞれどんな役割を持っているのか、分かりやすく説明していきましょう。
1. Sourceアクション - 「材料を集める」作業
Sourceアクションは、パイプラインの最初に実行される「材料集め」の作業です。料理で例えると、冷蔵庫から野菜を取り出すような作業ですね。
どんなことができる?
- GitHubからソースコードを取得: 開発者が作ったプログラムを取ってくる
- CodeCommitからソースコードを取得: AWSの中に保存されているプログラムを取ってくる
- S3から設定ファイルを取得: アプリの設定情報を取ってくる
なぜ重要?
Sourceアクションがないとパイプラインは何も作業できません。材料がなければ料理ができないのと同じで、ソースコードがなければアプリケーションをビルドできないからです。
2. Buildアクション - 「作る・確認する」作業
Buildアクションは、ソースコードから実際に動くアプリケーションを作る作業です。パン作りで例えると、小麦粉と水を混ぜてパンを焼くような工程ですね。
どんなことができる?
- コードをコンパイル: プログラムを機械が理解できる形に変換する
- テストを実行: 作ったプログラムが正しく動くか確認する
- 依存関係の解決: プログラムが必要とする他の部品を準備する
- 最適化処理: プログラムをより高速に動くように調整する
なぜ重要?
開発者が書いたコードは、そのままでは動きません。Buildアクションによって初めて、実際にユーザーが使えるアプリケーションの形になるのです。
3. Testアクション - 「品質をチェックする」作業
Testアクションは、作ったアプリケーションがちゃんと動くか確認する作業です。新車の検査で、ブレーキやライトが正常に動くかチェックするのと同じですね。
どんなことができる?
- 機能テスト: ボタンを押したら正しく反応するかチェック
- セキュリティテスト: 悪い人に攻撃されても大丈夫かチェック
- パフォーマンステスト: たくさんの人が使っても遅くならないかチェック
- 品質チェック: コードが読みやすく書かれているかチェック
なぜ重要?
問題のあるアプリケーションを本番環境に公開してしまうと、ユーザーに迷惑をかけてしまいます。Testアクションで事前にチェックすることで、安心してアプリを公開できるのです。
4. Deployアクション - 「公開する」作業
Deployアクションは、テストが完了したアプリケーションを実際にユーザーが使える場所に設置する作業です。本屋さんで新しい本を棚に並べるのと同じような作業ですね。
どんなことができる?
- ウェブサイトの公開: 作ったウェブサイトをインターネットで見られるようにする
- アプリケーションの更新: すでに動いているアプリを新しいバージョンに置き換える
- サーバーの設定: アプリが動くために必要なサーバー環境を準備する
- 段階的な公開: 一部のユーザーから試してもらって、問題がなければ全員に公開する
なぜ重要?
どんなに素晴らしいアプリケーションを作っても、Deployアクションがなければユーザーは使うことができません。最終的にユーザーの手に届けるための、とても大切な工程なのです。
5. Approvalアクション - 「確認してもらう」作業
Approvalアクションは、重要な作業の前に人間が「本当に実行していいか?」を確認する作業です。手術の前に医師が最終確認をするのと同じような、安全のためのチェックポイントですね。
どんなときに使う?
- 本番環境への公開前: ユーザーが実際に使う環境に変更を加える前
- 重要なデータベースの変更前: データが失われる可能性がある作業の前
- 費用が発生する作業の前: 大きなコストがかかる可能性がある操作の前
- 緊急時の対応: 問題が発生したときの緊急対応の前
なぜ重要?
自動化はとても便利ですが、時には人間の判断が必要な場面があります。特に本番環境では、ミスが大きな問題につながる可能性があるため、Approvalアクションで最後の安全確認を行うのです。
6. Invokeアクション - 「特別な処理をする」作業
Invokeアクションは、標準的な作業では対応できない「特別な処理」を実行する作業です。コンビニで例えると、通常の商品販売以外に「宅配便の受付」や「チケット販売」といった特別なサービスを提供するようなイメージですね。
どんなことができる?
- カスタム通知の送信: SlackやTeamsに特別なメッセージを送る
- 独自のバリデーション: 会社特有のルールに基づいたチェックを行う
- 外部システムとの連携: 他のシステムにデータを送ったり情報を取得したりする
- レポートの作成: デプロイ結果をまとめたレポートを自動生成する
なぜ重要?
すべての会社や プロジェクトには、それぞれ独自の要件があります。Invokeアクションを使うことで、標準的な機能だけでは対応できない特別なニーズに応えることができるのです。
アクションの実行順序について
パイプラインでは、アクションを順番に実行したり、同時に実行したりできます。これは料理の手順と同じで、「材料を切る」→「炒める」→「盛り付ける」のように順番が決まっているものもあれば、「野菜を切る」と「お米を炊く」のように同時にできるものもあります。
実際のパイプライン例
これまで学んだ6つのアクションタイプを組み合わせると、こんなパイプラインができます:
まとめ
この記事では、CodePipelineの基本的な仕組みである「ステージ」と「アクション」について学びました。
覚えておきたいポイント
- ステージ: 作業をグループ分けする「工程」のようなもの
- アクション: 実際に行う「具体的な作業」のこと
- 6つのアクションタイプ: それぞれ異なる役割を持った作業の種類
6つのアクションタイプ
- Source: 材料を集める(ソースコード取得)
- Build: 作る・確認する(ビルド・コンパイル)
- Test: 品質をチェックする(テスト実行)
- Deploy: 公開する(デプロイメント)
- Approval: 確認してもらう(承認制御)
- Invoke: 特別な処理をする(カスタム処理)
これらの基本を理解することで、CodePipelineを使った自動化の第一歩を踏み出すことができます。次の記事では、承認プロセスについてより詳しく学んでいきましょう。