【AWS】用語を整理しながら学ぶAWS Amazon CodeCatalyst

はじめに
この記事では AWSが提供するAmazon CodeCatalyst（以下、CodeCatalyst）を学習していく記事です。主な内容としては実践したときのメモを中心に書きます。（忘れやすいことなど）
誤りなどがあれば書き直していく予定です。

## 去年のことですが、覚えていますか

CodeCatalystとはre:Invent 2022で発表されたサービスです。2022年4月のAWS Summit開催中にGAとなりました。

あと1ヶ月で登場してから1年経過するサービス、`Amazon CodeCatalyst`を見ていきましょう。

## Amazon CodeCatalystとは

簡単にいえば、`ソフトウェア統合開発サービス`と言えます。
AWSの公式サイトには下記のように表現されています。

> デベロッパーツール
> AWS での計画、開発、配信のライフサイクルを高速化する

> ソースコードからサービス設定まで、必要なものをほぼすべて備えたブループリントを使用して、新しいプロジェクトを数分で開始できます。

> プロジェクト用に完全に構成されたクラウドベースで個人用の開発環境をすばやく作成し、一般的な統合開発環境 (IDE) と連携できます。

> 継続的インテグレーションおよびデリバリー (CI/CD) パイプラインを簡単に定義し、スケーラブルなマネージドコンピューティング環境で自動的に実行できます。

[参考](https://aws.amazon.com/jp/codecatalyst/)

つまり、AWSが提供するデベロッパーツールです。ブループリントを使用するとすぐにプロジェクトをデプロイできて、統合開発環境（IDE）を利用できます。
また、CI/CDパイプラインを構築してスケーラブルでマネージドコンピューティング環境を自動で実行できます。

んー、ナニモわからないですね。順番に見ていきましょう。

※CI/CDについては[過去の記事](https://qiita.com/ymd65536/items/2df94e472beece2fc215)を読んでいただければと思います。

## Blueprint（ブループリント）とは

用途毎にインフラを定義したテンプレートのようなものです。
設計済みのインフラを設計図（ブループリント）から呼び出してインフラを構築します。
つまり、インフラ構築にかかる工数を省けます。

[参考](https://docs.aws.amazon.com/codecatalyst/latest/userguide/projects-templates.html)

こういった構築済みのインフラをプロジェクトという単位で管理できます。

## プロジェクトとは

CodeCatalystではインフラおよびアプリケーションをプロジェクトで管理します。
アプリケーションも含め管理できる単位と覚えておくと良いでしょう。
別の言い方をするとプロジェクトはリポジトリになりますので実質、リポジトリと言っても問題ありません。

なお、プロジェクトはスペースという単位で保存されます。

## space（スペース）とは

CodeCatalystではspaceという単位でプロジェクト集約します。spaceを作ってプロジェクトを格納するというイメージです。

## Amazon CodeCatalyst機能一覧

CodeCatalystがどんなものかわかったところで機能を見ていきましょう。
まとめると以下のような機能を備えています。ちなみにAWSの方からも説明がありました。

https://twitter.com/masaosaan/status/1598434290165219328?s=20&t=aSLSAQjlpH85DQe9Zh4g4g

### Gitリポジトリとしての機能を提供する

PRなどの機能を備えており、Gitリポジトリの機能がついています。

### CI/CDを構成する

Workflowが実行可能であり、CI/CDのパイプラインを作成/実行/管理できます。
CI/CDの定義はyaml形式でリポジトリでコードと一緒に管理します。
Visual Editorを活用することで視覚的にワークフローを確認、編集、commitすることも可能です。

実際の処理はactionとして定義します。

事前に定義されたactionが存在し、実行環境はCodeCtalyistが管理している環境となりますが、Compute Typeで現在はEC2とLambdaを選択可能です。
※Lambdaの方が立ち上がりが早いが制限もあるのでactionによって使い分けると良いです。(2022/12/03時点)

### プロジェクトを管理する

spaceという単位でチームや組織、個人など共に活動する人をまとめることができます。
spaceにはprojectを作ることができます。projectには複数のrepositoryを登録できます。

また、projectにissueを登録し、boardにして管理できます。projectにはよくある構成の`今すぐデプロイ出来るサンプル`が入ったBlueprintも用意されています。

### 開発環境をブランチごとに作成できる

CodeCtalyistが管理するコンピュートリソースにリポジトリがクローンされた状態で立ち上がる開発環境をBranchごとに作成できます。
開発環境はCloud9やVSCode，JetBrainsのIDEから接続して利用できます。

### Extensionを提供する

他のツールとの連携や機能拡張の仕組みとしてExtensionの機能も持っています。JiraとGitHubのExtensionがあります。

### 他

Workflowの中でGitHub actionを呼べます。
※他、色々細かい点はありますが、とりあえず機能を確認したい人は手軽なblueprintを触ってみると良いです。

### 利用時の注意点

AWSとの連携時、Amazon CodeCatalystはAWSのアカウントとは別のAWS Builder IDというIdでログインします。AWSと連携する際はspaceにAWS connectionという形でアカウントを紐づけます。

account connectionにはIAM roleを付与すること可能であり、そのアカウントのIAM roleに対して信頼ポリシーにCodeCatalystを追加することによってworkflowからそのIAM roleを使用できるようになります。

また、利用料の請求をそのAWSアカウントの請求に送ることができます。

### 料金

細かく設定されていますが、基本的には1ヶ月単位、user単位です。料金に関しては公式ドキュメントをご確認ください。

[参考](https://codecatalyst.aws/explore/pricing)

## まとめ

今回はAWSが提供するデベロッパーツール、Amazon CodeCatalystを見ていきました。
GitHubと連携できるのはとても魅力的です。
既存の開発環境と統合できるのもとても良いポイントです。

ただ、`AWS Builder ID`の発行が必要というところは注意点の一つと言えるでしょう。

手前味噌ですが、実際にハンズオンした内容を書籍化していますのでもしご興味がありましたら
ダウンロードしていただけますと幸いです。

[PR - CodeシリーズでハッピーなCI/CDを構築しよう【AWSハンズオン虎の巻シリーズ】: 知識がなくても手を動かしながらCI/CDをAWS上に実装できる一冊！ Kindle版](https://amzn.asia/d/bbmOtuF)

## おわり