Cloud Service
Amazon CodeCatalyst
プロジェクト計画からソース管理、CI/CD までを1つの場所で扱える統合開発サービス。
- 1.計画・コード・ビルド・デプロイをまたぐ開発作業を1つのサービスに集約する。
- 2.ブループリントから定型的なプロジェクト雛形を生成し、立ち上げを高速化する。
- 3.ワークフローで CI/CD を組み、AWS リソースへのデプロイまで一気通貫で扱える。
解決する課題
ソフトウェア開発では、課題管理・ソースリポジトリ・CI/CD・環境構築といったツールが別々に存在し、それぞれの連携設定やアカウント管理に手間がかかります。CodeCatalyst はこれらを1つのサービスにまとめます。
- 計画から CI/CD、デプロイまでを1つの場所で扱い、ツール間の連携設定の負担を減らす
- プロジェクトの**雛形(ブループリント)**から定型構成を自動生成し、立ち上げを速くする
- チームでの作業をプロジェクト単位でまとめ、メンバー招待やアクセス管理を一元化する
主要概念と用語
- スペース: 組織やチームに相当する最上位の単位。請求やメンバー、プロジェクトをまとめる
- プロジェクト: 開発作業の単位。ソースリポジトリ、ワークフロー、課題などを内包する
- ブループリント: プロジェクトの雛形。言語やフレームワーク、CI/CD 構成を含む定型を生成する
- ソースリポジトリ: コードを格納する Git リポジトリ。外部の Git ホスティングと接続することもできる
- ワークフロー: ビルド・テスト・デプロイの自動化フロー。CI/CD を構成する中核
- 環境(デプロイ先): ワークフローのデプロイ対象。接続した AWS アカウント上のリソースを指す
- Dev Environment: クラウド上に用意される統合開発環境。ローカルに環境を構築せず開発を始められる
- 課題(Issue): 作業項目を管理するボード。計画と実装を同じプロジェクト内で結びつける
仕様・制限・クォータ
- スペースの下に複数のプロジェクトを持ち、プロジェクトがソース・ワークフロー・課題などを束ねる
- AWS アカウントを接続し、ワークフローのデプロイ先や実行環境として利用する
- ワークフローはソースの変更などをトリガーに起動し、アクションを順に実行する
- 1つのスペース・プロジェクトに所属できるメンバー数や、同時に動かせるワークフローの並列数などにクォータが存在する
- ビルド等の実行に使うコンピュートには区分があり、用途に応じて選択する
具体的な上限値・対応リージョン・利用できる機能の範囲は時期によって変わるため、最新値は公式ドキュメントで確認してください。
内部の仕組み
CodeCatalyst は、計画・ソース・CI/CD・開発環境といった機能をプロジェクトという器にまとめて提供するサービスです。ワークフローはソースの変更を検知して起動し、各アクションを順に実行します。
- ワークフローはブランチへのプッシュやプルリクエストなどをトリガーに開始される
- 各アクション(ビルド・テスト・デプロイ)は、用意されたコンピュート上で実行される
- デプロイ先は、接続した AWS アカウント内のリソースであり、IAM ロールを通じて操作される
- Dev Environment はクラウド側にプロビジョニングされ、ブラウザや IDE から接続して開発する
新しいプロジェクトはゼロから組むより、ブループリントから生成すると、リポジトリ・ワークフロー・サンプル構成が一括で用意されます。型を揃えたい組織ほど効果が大きくなります。
設計パターン / ベストプラクティス
- ブループリントで標準化: 組織で繰り返す構成を雛形にし、プロジェクト間の品質とばらつきを抑える
- 計画と実装を同じプロジェクトに: 課題ボードとソース・ワークフローを同居させ、文脈の行き来を減らす
- 環境ごとにデプロイを分ける: 開発・ステージング・本番を分け、ワークフローで段階的に進める
- Dev Environment の活用: ローカル構築の差異をなくし、誰でも同じ環境で開発を始められるようにする
運用・監視
- ワークフローの実行履歴: 各実行がどのアクションで成功・失敗したかを画面や API で追える
- 通知: ワークフローの結果やプルリクエストの動きをチャット連携などでチームへ知らせる
- 失敗時の切り分け: 失敗したアクションのログを確認し、ビルド・テスト・デプロイのどこで詰まったかを特定する
- AWS アカウントとの連携: デプロイ先アカウント側の CloudWatch や CloudTrail とあわせて状況を把握する
コスト
料金は利用するプラン(ティア)を基本に、ビルドなどのコンピュート利用時間や Dev Environment の稼働時間、ストレージといった従量要素が加わる体系です。一定の無料利用枠が用意されている一方、実際のデプロイ先となる AWS リソースの費用は別途発生します。
- 使っていない Dev Environment は停止し、稼働時間による無駄を避ける
- ビルドは必要なコンピュート区分を選び、過大なサイズを常用しない
- デプロイ先リソースの費用が全体に占める比重も意識する
正確な単価やプランの内容は時期によって変動するため、断定的な金額は公式の料金ページで確認してください。
セキュリティ
- AWS アカウント接続と IAM ロール: デプロイには接続先アカウントのロールを使い、アクセスキーのハードコードを避ける
- スペース・プロジェクト単位のアクセス管理: メンバーに付与する権限を役割に応じて絞る
- 機密値の扱い: 認証情報やトークンはシークレットとして管理し、ワークフロー定義に平文で書かない
- 最小権限: デプロイ用ロールには、対象リソースに必要な権限だけを与える
ワークフローのデプロイ用ロールに過剰な権限を与えると、想定外のリソースまで操作できてしまいます。デプロイ対象に絞り、トークン類はシークレットとして扱ってください。
Well-Architected の観点
- 運用上の優秀性: 計画から CI/CD までを1つのサービスに集約し、ツール連携や環境構築の手作業とばらつきを減らせる。ブループリントとワークフローでリリース手順をコード化・標準化できる
- 開発環境をクラウド側で統一することで、メンバー間の環境差に起因するトラブルを抑えられる
試験で問われるポイント
- 「計画から CI/CD までを1つの統合サービスで扱いたい」→ CodeCatalyst
- プロジェクトの雛形を一括生成する仕組み → ブループリント
- クラウド上で統一された開発環境 → Dev Environment
- デプロイ先は接続した AWS アカウントで、操作は IAM ロール経由
- 個別の CI/CD 部品(CodePipeline や CodeBuild)を束ねる従来構成との位置づけの違いを押さえる
関連サービス・比較
個別の CI/CD サービスである CodePipeline と、扱う範囲の広さで対比すると違いが明確になります。
| 観点 | CodeCatalyst | CodePipeline |
|---|---|---|
| 扱う範囲 | 計画・ソース・CI/CD・開発環境を統合 | ソースからデプロイまでの工程の連結 |
| 立ち上げ | ブループリントで雛形を一括生成 | パイプライン定義を個別に組む |
| 開発環境 | クラウド上の Dev Environment を提供 | 提供しない |
| 位置づけ | 統合開発サービス | CI/CD のオーケストレーター |
ハンズオン / CLI例
# 所属するスペースの一覧を取得
aws codecatalyst list-spaces
# 指定スペース内のプロジェクト一覧を取得
aws codecatalyst list-projects --space-name my-space
# プロジェクト内のソースリポジトリを一覧表示
aws codecatalyst list-source-repositories \
--space-name my-space \
--project-name my-app
AWS Service
Amazon CodeCatalystを実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
開発者ツール
比較で見る軸
クラウド: AWS / カテゴリ: 開発者ツール / 難易度: basic
導入後に効く点
ブループリントから定型的なプロジェクト雛形を生成し、立ち上げを高速化する。
先に潰すリスク
サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。
- クラウド
- AWS
- カテゴリ
- 開発者ツール
- 難易度
- basic
- 関連資格
- DOP-C02
- 設計柱
- operational
判断チェックリスト
- 自社の用途が「開発者ツール / operational」に近いか確認する。
- 強みである「計画・コード・ビルド・デプロイをまたぐ開発作業を1つのサービスに集約する。」が本当に評価軸になるか確認する。
- 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。