Amazon CodeCatalyst を使ったので概念などを整理してみた

2022.12.25

いわさです。

AWS re:Invent 2022 で新サービス Amazon CodeCatalyst が発表されました。

本日時点ではまだプレビューですが、パブリックプレビューなので US West (Oregon)リージョンのみになりますが誰でも利用可能です。

本日は実際に一連の基本機能を使ってみたのでどんな使い勝手なのかを中身を紹介します。
その過程で概念や全体像がわかったのでまとめたものも紹介したいと思います。

Amazon CodeCatalyst は本日時点でパブリックプレビューです。GA 時には仕様やドキュメントが変わっている可能性がありますのでご注意ください。

概要と機能

Amazon CodeCatalyst の概要について冒頭の速報記事にて紹介されていますのでそちらもご参照ください。

サービスの公式サイトでは以下のような図で表現されています。
AWS へサービスをデプロイする統合開発サービスという位置づけです。
課題の管理・コードリポジトリ・プルリクエストやCI/CD ワークフローと Amazon CodeCatalyst でチーム開発に必要な機能の一通りを提供してくれます。
特徴としては通常の AWS サービスとは独立したサービスとなっていて AWS アカウントの外で動くものとなっており、認証部分は AWS Builder ID を使います。
また、ブループリント機能ですぐに動くプロジェクトのベースを用意することが出来ます。

引用元:統合開発サービス – Amazon CodeCatalyst – Amazon Web Services

全体像のまとめ

実際の利用した様子は長々と後述しますので先に全体像をまとめておきます。
ざっくりいうと CodeCatalyst にはスペースとプロジェクトという概念があります。

プロジェクトは Issue や Git リポジトリやワークフローを作成・管理する単位です。1 プロジェクト内に複数のリポジトリ・ワークフローを作成することが出来ます。

スペースの中に複数のプロジェクトを作成し、AWS アカウントを関連付けするのはスペースです。スペースごとに発生する料金は請求アカウントとして設定されている AWS アカウントで請求されるという仕組みのようです。

また、先程少し触れましたが、CodeCatalyst では IAM ユーザーではなく AWS アカウントや IAM とは別の概念の AWS Builder ID というものを使って認証を行います。
参考:AWS Builder ID でも MFA を有効化する | DevelopersIO

認証されたユーザーはスペースあるいはプロジェクトに Catalyst 上のユーザーとして管理することが出来ていくつかの組み込みのロールを設定することが出来ます。

CI/CD ワークフローでは何らかの環境に最終的にはデプロイ出来るわけですが、スペースに関連付けした AWS アカウントに対してデプロイすることが出来ます。
デプロイする場合はそれぞれの AWS アカウント上で Catalyst に権限委譲するための IAM ロールを作成し、Catalyst から AWS アカウントリソースを操作するような仕組みになっています。

CodeCatalyst には実際の開発環境との統合機能も用意されていて、関連付けした AWS アカウント上で Cloud9 を起動してその中で開発したり、あるいは AWS Toolkit for Visual Studio Code の拡張機能を使って CodeCatalyst リソースを操作したりなどいくつかのオプションが用意されています。

プレビューの本日時点ではまだ少ないのですが、拡張機能を使って外部リポジトリと統合したり、あるいは AWS 以外へデプロイしたりなどの拡張性も備わっているようです。

まとめ後の見解

基本機能をざっと触っての見解です。

機能の大部分は GitHub に近い感じで Git プロバイダー + CI/CD + コラボレーション機能という感じでしょうか。
Azure でいえば Azure DevOps ですね。

まだプレビューなので、既に GitHub で開発を行っているチームが Amazon CodeCatalyst を採用するのかどうなのかみたいなのは、今後議論されていきそうです。
請求を AWS 利用費にまとめれるのと AWS アカウントと統合するたびに OIDC の構成をしたりしなくて良いのでそのあたりの管理上の利点はあるかなと思いました。

Code シリーズ感のあるサービス名ですが CodeCommit, CodeBuild, CodePipeline, CodeStar とは明確に違いますね。
従来の Code シリーズのサービスは多くが個別のコンポーネントとして動作していてうまく組み合わせて使っていた感じですが CodeCatalyst は統合されたサービスという形でそれだけで完結しています。
CodeCatalyst は AWS アカウントの外で動作していて、ワークフローでデプロイする際に関連付けられた AWS アカウントへデプロイする形になるので、複数アカウントにデプロイを行う際にはかなり管理しやすいと思います。

CodeStar を使うと Code シリーズの各サービスが展開されますが、CodeCatalyst はそうではないという点は使ってから気が付きました。

基本機能使ってみた

ここから、使い方を調べながら実際に基本機能を使ってみたのでキャプチャ付きで紹介します。

まず、実際に AWS Builder ID を作成してスペースとプロジェクトを構成する流れと、ブループリント + Cloud9 のあたりについては既に以下の記事があるのでこちらをご参照ください。

この記事ではそれ以外の基本機能について以下に記載します。

issue とカンバン

課題を作成・管理することが出来ます。
ステータスやラベル、優先度の他にカスタムフィールドを使うことも出来ます。

ボード機能でカンバンで issue 管理が可能です。

リポジトリ

Git リポジトリを作成することが出来ます。
作成されるリポジトリはプライベートリポジトリです。
拡張機能をインストールすることで外部リポジトリをリンクすることも出来るようです。

本日時点では HTTPS のみで PAT を発行して認証させる方法のみ提供されていそうでした。
SSH とかは使いたいですね。

プルリクエスト・レビューとマージ

リモートブランチを更新後にプルリクエストを作成し、Catalyst ユーザーをレビューアとして指定することが出来ます。

レビューアはプルリクエストをレビューしコメントをしたり承認・マージしたり出来ます。

ワークフロー

プッシュやプルリクエストのマージをトリガーにワークフローを実行してビルドやテスト・デプロイを行うことが出来ます。
ビジュアルエディターあるいは YAML でもワークフローファイルを定義することが出来ます。

組み込みのアクションをプロパティベースで設定出来るのでビジュアルエディターは初めてワークフローを使う方でも使いやすいと思います。
ビジュアルエディターで設定した内容は YAML ファイルに反映され、リポジトリにプッシュされます。

スペース設定

こちら基本機能とは少し違いますがスペースの設定画面でプランの選択が可能です。
デフォルトでは無料の Free プランが選択されていますが、Standard プランを選択出来ます。

Catalyst は通常のサービスと異なっているという点もあり、料金ページを私はどこを見たらわかりませんでしたがこちら見たほうが早そうです。

さいごに

本日は Amazon CodeCatalyst を使ってみたので概念などを整理してみました。

繰り返しになりますがまだプレビュー状態での整理になりますのでご注意ください。

使ってみた所感としては本日時点で細かいカスタマイズはまだ出来ないのですが一通り必要な機能は揃ってるなという印象です。
ユーザー数で料金が変わるようなのでイシューとカンバンだけ利用出来るステークホルダーだとかそういうのが出てきてもおもしろそうかなと個人的には思いました。
拡張機能もまだ少ないのですが拡張が用意されているので GitHub Actions のような可能性を感じますね。

私は普段検証を行うことが多く、実は CodeStar を多用していたのですが、CodeStar のブループリントがなかなか新しいサービスに対応していなくて悩んでいたのですが、CodeCatalyst のブループリントはよりモダンな構成が多かったのでこちらに切り替えようかなと個人的には思ってます。