【完全に】統合型ソフトウェア開発サービス「Amazon CodeCatalyst」【理解した】

この記事は、「[Relic Advent Calendar 2022](https://qiita.com/advent-calendar/2022/relic)」の6日目の記事です！

# はじめに
re:Inventでリリースされたサービスを試してみる第2弾は「**Amazon CodeCatalyst**」。
チュートリアルを活用しサーバーレスWeb3層アプリケーションのデプロイして「**CodeCatalyst、完全に理解した**」って状態を目指しました。また、ドキュメントを読んでいった過程で追加で実施してみた内容を+αで書いていきます。

第1弾はこちら→[【re:Invent】Amazon EventBridge Pipesの検証と今後について](https://qiita.com/hedgehog051/items/3479d4fec43d01fd30f1)

# Amazon CodeCatalystとは
**ソフトウェア開発に必要な環境一式を迅速に構築**できる新しいAWSのサービスで、以下の機能を提供しています。

- クラウドベースの開発環境
- ブループリント(組み込みのテンプレート)
- ソースコード管理
- Issue管理
- CI/CDパイプライン
- ダッシュボード
- ユーザ管理
- 統合検索
- 監視＆通知

# セットアップ
## AWS Builder IDの作成
- [こちらにアクセス](https://profile.aws.amazon.com)して「AWS Builder ID」を作成
    - メールアドレスと名前を入力

![スクリーンショット_2022-12-05_18_39_19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/424beeb3-1575-885e-7ad5-caba5915052a.png)
- 指定したアドレス宛に検証コードが送信されるのでコピーして「サインイン」を押下する

![スクリーンショット_2022-12-05_18_39_36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/203c1b8a-6a17-899b-fafc-7d7430bc87ec.png)

![スクリーンショット_2022-12-05_18_41_15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/d939548a-f421-b4dc-96ae-ac2d290f89fb.png)

- パスワードと文字認証をそれぞれ入力して「プロフィールを作成」を押下する
![スクリーンショット 2022-12-05 18.41.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/f57b097e-19f0-c541-b0a7-404ef95c6419.png)

## MFA設定
- [CodeCatalyst コンソール](https://codecatalyst.aws/)を開く
- 画面右上のイニシャルアイコンをクリック
- [Manage profile and security]を押下

![スクリーンショット_2022-12-05_20_19_33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/c5772409-d118-1527-adfd-e3e174e7a96d.png)

- AWS Builder IDの画面左より「Security」を選択して、[Register Device]を押下
![スクリーンショット_2022-12-05_20_21_24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/955641fe-ed15-1f2e-1a61-c72510799806.png)

- デバイス登録画面に従いMFA認証設定を実施
![スクリーンショット 2022-12-05 20.22.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/4667a54b-aafc-56fa-1579-181136e75f8e.png)

![スクリーンショット 2022-12-05 20.22.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/4d782c82-df6b-d899-9477-10f7b6db6340.png)

![スクリーンショット_2022-12-05_20_22_48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/4c694361-5196-65db-342c-ef051cc38a16.png)


# スペース作成

- CodeCatalystの画面に遷移したのち、ユーザ名のAliasとSpace名、CodeCatalystを使用するAWSアカウントをそれぞれ入力する
- 「AWS account verification token」よりTokenをコピー

![スクリーンショット_2022-12-05_18_44_09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/0bafbcc0-eecc-d3e7-e42c-79ca153ea94f.png)

- 対象のAWSAccountにログインしてCodeCatalystのコンソールより「Verify space」をクリック

![スクリーンショット 2022-12-05 18.58.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/2ccdb35e-b077-efb1-1d1a-dc79e41768c3.png)

- コピーした検証トークンを貼り付け、「スペースを確認」をクリック

![スクリーンショット_2022-12-05_18_44_33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/8fbb5d55-fce1-9361-5236-5d512f3194e5.png)

- アカウントが確認されたことを確認
![スクリーンショット_2022-12-05_18_44_45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/62b4eabd-6f5f-213b-c7c6-d369b0502a9d.png)

- 「AWS account verification token」のstatusが「Verified」になっている事を確認し、「Create Space」を押下する

-  作成したスペースの画面を確認🎉

![スクリーンショット 2022-12-05 19.05.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/2cbd69dd-765d-c5e7-f449-2b0510ec1740.png)

# 画面確認
慣れてないのでそれぞれの画面が何を表しているのかざっと確認

## Project
文字通りProjectを管理する画面のようです。
**your projects**と**all projects**とフィルタリングが可能
![スクリーンショット 2022-12-05 19.13.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/bdb2ec78-4826-bd4b-9583-d18584b5fa1d.png)

## Activity
見たところ、スペース上で行われた各履歴が確認出来る画面
### 確認出来る内容
- プロジェクトの作成
- プロジェクトの更新
- プロジェクトへの参加
- プロジェクトからの離脱
- プロジェクトの削除
- リポジトリの作成
- ブランチの作成
- プルリクエストの作成
- プルリクエストのマージ
- プルリクエストへのコメント
- Issueの作成
- Issueへのコメント
- Issueへの再割当て
- Issueのステータス変更
- ワークフロー実行成功
- ワークフロー実行失敗

![スクリーンショット 2022-12-05 19.13.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/9618598e-9ac4-1b04-a743-de0ec1b716e4.png)

## Members
こちらでスペース内のメンバーの招待やメンバーの権限管理などが可能

### ロールの種類と権限
- **Space administrator**
    - CodeCatalystのすべての権限を持つ
    - スペースの作成やスペースに関する管理権限あり
    - [詳細はこちら](https://docs.aws.amazon.com/codecatalyst/latest/userguide/ipa-role-space-administrator.html)
- **Project administrator**
    - プロジェクト内のすべての権限を持つ
    - プロジェクトの設定編集、プロジェクト権限の管理、プロジェクトの削除など
    - [詳細はこちら](https://docs.aws.amazon.com/codecatalyst/latest/userguide/ipa-role-administrator.html)
- **Contributor**
    - プロジェクトで作業するために必要な権限を持つ
    - コード、ワークフロー、Issue、アクションの操作など
    - [詳細はこちら](https://docs.aws.amazon.com/codecatalyst/latest/userguide/ipa-role-contributor.html)
- **Project member**
    - 権限が関連付けられない
    - プロジェクトにユーザを追加すると、自動的にこのロールを付与


![スクリーンショット_2022-12-05_19_16_34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/3e864606-0d57-947b-88ea-c30dca93c89d.png)

## Installed extensions
インストール可能なものは現在2種のExtensionしか確認できませんでしたが、拡張機能をインストール＆管理できる画面。GitHubリポジトリと接続するにはここでExtensionをインストールする必要がありそうです。

![スクリーンショット 2022-12-05 19.16.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/e83b0f7e-5d61-b06e-d596-73b2275b4eb3.png)

![スクリーンショット 2022-12-05 19.17.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/38fdfcae-5be8-eb52-4dae-dee0fcef7738.png)

## AWS Accounts
ここでこのスペースに紐づくAWSAccountやIAMロールの管理が可能な画面。

![スクリーンショット_2022-12-05_19_17_20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/a471304f-faa5-be6e-9161-ab4e74ab9bc6.png)
![スクリーンショット_2022-12-05_19_32_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/83dd9160-0df6-c627-913d-f09b377ccec8.png)

## Space Setting
スペースの名前やパス、リージョン、スペースID、説明はここで確認。
また、**スペースの削除も対応**。
以下警告にあるように**復元も出来ないのでうっかり削除しないように注意が必要**ですね。。

> If you delete this space, all projects that are managed by this space will be deleted for all members. You cannot recover a deleted space.

![スクリーンショット_2022-12-05_19_17_27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/1661909b-1eeb-e567-8428-e4520c9788b1.png)

因みに恐る恐る「Delete」を押すと、ちゃんと削除確認画面が表示されたので一安心
※CodeCatalystは「delete」か…東京リージョンに来たら「削除」か「delete」どっちになるやら

![スクリーンショット 2022-12-05 19.37.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/178974bd-3563-ebb5-25e7-3b8a670e9901.png)

## Billing
Billing画面ではCodeCatalystの請求ティアやアカウントステータス、リソース使用状況が確認可能。
![スクリーンショット_2022-12-05_19_17_38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/d87f988b-7097-105b-4ab2-01ca995251df.png)

### 料金形態
フリーとスタンダードの2種、それぞれの違いは以下の通り

![スクリーンショット 2022-12-05 19.18.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/3c7ae00c-c216-c70d-6d70-e7be95fa0739.png)

スタンダードティアでリソース上限を超えた場合のそれぞれの追加コスト
クラウド開発環境1ヶ月起動しっぱなしだと＄86.4/月とそこそこコストが掛かる印象なので、使うにしてもローカル開発＆GithubリポジトリとCodeCatalystを連携させるパターンだなという印象です。
フルフルでCodeCatalystに環境を寄せるのは相当リッチ。

![スクリーンショット 2022-12-05 19.18.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/acb43a1e-95bb-c982-fd1c-fe5f2c540504.png)

![スクリーンショット 2022-12-05 19.18.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/88159108-9f48-e759-5f99-8fb678e9fef6.png)

# チュートリアル+α
画面感をおおよそ掴めたところで、早速[チュートリアル](https://docs.aws.amazon.com/codecatalyst/latest/userguide/getting-started-template-project.html#getting-started-template-project-proj-create)を実施。
本チュートリアルでは、以下のようなサーバーレスWeb3層アプリケーションをCodeCatalystを使って開発していくもののようです。※画像はドキュメントより参照

![modern-app-overview (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/a7abe11e-f400-ad0f-da31-21f6f50c6863.png)

## プロジェクトの作成
- プロジェクト作成画面で`Start with a blueprint`を選択
- `Modern three-tier-webapplication`を選択して`Next`を押下
![スクリーンショット 2022-12-05 21.22.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/fe2fe56c-3876-03fb-c401-2c75a4b3a258.png)

- Project名を指定
![スクリーンショット 2022-12-05 21.23.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/64fd487c-ae10-df2d-3155-14aa9f80d148.png)

- AWSアカウントを入力
- `Add IAM role`をクリックしてデプロイ用のRoleを作成
- ComputePlatformは`Lambda`を選択
- 任意のリージョン、アプリケーション名を指定
![スクリーンショット_2022-12-05_21_23_32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/48683c38-c2cf-d270-bfae-74a30537eb37.png)

- `Create CodeCatalyst deployment administrator role in IAM`にチェックを入れて`Create deployment role`をクリック
![スクリーンショット 2022-12-05 21.23.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/404c9f1a-67a4-9828-80d5-cc378cef4efa.png)
- プロジェクトが作成され、以下画面に遷移
![スクリーンショット 2022-12-05 21.25.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/ceeeca87-81b5-78ca-98bf-74f2848ab6c8.png)

## ソースコード確認
ナビゲーションペインより`Code`、`Source repositories`から対象のアプリケーションを選択
- `.codecatalyst`
    - workflow定義ファイルが格納
    - [workflow定義ファイルの書き方についてこちら](https://docs.aws.amazon.com/codecatalyst/latest/userguide/workflow-reference.html)を参照
- `cdkStacks`
    - CDK関連ファイルが格納
- `src`
    - Backend関連ファイルが格納
- `web`
    - Frontend関連ファイルが格納
![スクリーンショット 2022-12-06 3.59.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/e7fef4dd-9e90-90ec-52ca-949f36dc2bca.png)


## デプロイ
- `CI/CD`の`Workflows`より「ApplicationDeploymentPipeline」を選択
    - workflow定義ファイルに基づいてCI/CDが実行される
![スクリーンショット 2022-12-06 3.11.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/d058b026-36f4-f9ff-1007-ffa81856b508.png)
- 画面右の「Run」を押下
![スクリーンショット 2022-12-06 3.12.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/669c84ba-76a0-7ad9-6737-e99d6b6240cc.png)

## アクセス確認
- デプロイが完了後、「ApplicationDeploymentPipeline」ワークフローの「Latest status」タブよりワークフロービジュアルの「Deploy_Frontend」を選択
- 詳細より「Variables」タブから`endpointUrl`を確認
    - https://xxxxxxxxxxxx.cloudfront.net/

![スクリーンショット_2022-12-06_3_14_26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/e4f86088-0e9a-9516-4fcd-b0efa2cfa3f5.png)
- ブラウザよりエンドポイントURLへアクセスし以下画面が表示されることを確認
![スクリーンショット 2022-12-05 22.43.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/6133dc91-98fb-6fcf-08cf-7623a59d9515.png)

## Issueの追加
- ナビゲーションペインよりIssueを選択、`Create Issue`を押下
![スクリーンショット 2022-12-05 21.28.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/790261e6-6e15-c195-7b20-3c95b7c36ee6.png)
    - タイトル、説明、status、優先度、対応者をそれぞれ指定して`Create Issue`をクリック
![スクリーンショット 2022-12-05 21.29.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/926b200d-985a-af38-1499-0682c79a15c4.png)
- IssueBoardより起票したIssueが表示される
![スクリーンショット 2022-12-05 21.29.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/80b2a0d0-7d38-f8ae-872b-ee08d16427e6.png)

## ブランチ作成
- SourceRepositoryから対象のアプリケーションを選択、`CreateBranch`を押下

![スクリーンショット 2022-12-06 3.35.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/4a3d9cb5-314e-6130-e8eb-2e4f4bac17e5.png)
- Branch名、元Branchを指定して`Create`を押下
![スクリーンショット 2022-12-06 3.37.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/3f4f7378-13e2-2c58-decb-e73adaea99cc.png)

## リポジトリをローカルにクローン
- SourceRepositoryより対象のアプリケーションリポジトリを選択して`Clone repository`を押下
![スクリーンショット 2022-12-06 5.56.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/a31b74f2-ba5c-d28e-42c2-4b6c57c7a956.png)
- `HTTPS clone URL`をコピーしてローカルで`git clone`を実行
- passwordが要求されるので`personal access token(password)`をコピーして貼り付け
![スクリーンショット_2022-12-06_5_56_36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/00f1e56c-f75e-51c3-147f-214ceeebb81c.png)

## コード変更

- `src/mysfit_data.json`を編集
- 13行目を`Age:2`から`Age:5`に変更してpush

```
    {
        "Age": 2,
        "Description": "Naturally needy and tyrannically temperamental, Pauly the infant cyclops is searching for a parental figure to call friend. Like raising any precocious tot, there may be occasional tantrums of thunder, lightning, and 100 decibel shrieking. Sooth him with some Mandrake root and you'll soon wonder why people even bother having human children. Gaze into his precious eye and fall in love with this adorable tyke.",
        "GoodEvil": "Neutral",
        "LawChaos": "Lawful",
        "Name": "Pauly",
        "ProfileImageUri": "https://deyn4asqcu6xj.cloudfront.net/3tierapp/img/cyclops_hover.png",
        "Species": "Cyclops",
        "ThumbImageUri": "https://deyn4asqcu6xj.cloudfront.net/3tierapp/img/cyclops_thumb.png"
    },
```

```
    {
        "Age": 5,
        "Description": "Naturally needy and tyrannically temperamental, Pauly the infant cyclops is searching for a parental figure to call friend. Like raising any precocious tot, there may be occasional tantrums of thunder, lightning, and 100 decibel shrieking. Sooth him with some Mandrake root and you'll soon wonder why people even bother having human children. Gaze into his precious eye and fall in love with this adorable tyke.",
        "GoodEvil": "Neutral",
        "LawChaos": "Lawful",
        "Name": "Pauly",
        "ProfileImageUri": "https://deyn4asqcu6xj.cloudfront.net/3tierapp/img/cyclops_hover.png",
        "Species": "Cyclops",
        "ThumbImageUri": "https://deyn4asqcu6xj.cloudfront.net/3tierapp/img/cyclops_thumb.png"
    },
```
```sh
git commit -am "Making an example change"
git push
```

## プルリクエスト作成
- ナビゲーションペインより`PullRequest`を選択し`Ceate PullRequest`を押下
![スクリーンショット 2022-12-05 22.46.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/ae6a8e63-f00d-c042-dac7-7d6d721f4cea.png)
- SourceRepository、SourceBranch、DestinationBrancg、Pull RequestTitleをそれぞれ設定して[Create]を押下
![スクリーンショット 2022-12-05 22.47.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/d1a17aa7-6751-3741-3303-d7754879e17e.png)
- 作成されたPull Requestを確認
![スクリーンショット 2022-12-05 22.49.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/ff87cfe8-9b4a-480b-b7cb-8e79141663f6.png)

## Pull Requestのマージ
- 対象のPull Requestの画面右の`Merge`をクリック
- Merge Strategyを選択
    - Fast forward merge
    - squash and merge
- Merge後にBranchを削除する場合は`Deleteing this branch〜`にチェック
- `Merge`をクリック

![スクリーンショット 2022-12-05 22.50.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/a57feb92-f910-e2fa-82ef-1d5fe6c086b6.png)
- 対象のPRのStatusがMergedになっている事を確認
![スクリーンショット 2022-12-05 22.51.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/f0ce914f-9ec7-7cd2-2d65-4f4835661fc0.png)

## デプロイ確認
- Mergeをトリガーに「ApplicationDeploymentPipeline」ワークフローでCI/CDが自動実行される
- Deploy完了後に再度ブラウザにてendpointUrlへアクセス
- Cyclopsの`Ageが５`になっている事を確認

![スクリーンショット_2022-12-05_22_59_55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/18896c57-f2f8-3ea1-49a0-6fd3b38a77e6.png)

無事、変更が反映されましたね！

# おまけ
## GitHubとCodeCatalystを接続
- スペースの`Installed extensions`を選択
- MarketPlaceより`Github repositories`をインストール
![スクリーンショット 2022-12-06 4.26.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/e54ed4a4-b798-6707-4141-b0d25d9acc6c.png)
- インストール後、`Connect GitHub account`をクリック
![スクリーンショット 2022-12-06 4.27.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/f167b0ab-9e05-8a04-56ec-e67f2288688b.png)
- `Authorize Amazon CodeCatalyst`をクリック
![スクリーンショット 2022-12-06 4.27.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/b597ae0a-8199-de8a-3969-d59cf3e5a6a2.png)
- アクセス許可するRepositoryを選択するか、`All repositories`にチェックを入れて`Install`をクリック
![スクリーンショット_2022-12-06_4_28_06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/b04a0cff-2b92-f68e-213f-d4aa1c578d93.png)
- 一覧より接続したGitHubアカウントが確認出来る
![スクリーンショット_2022-12-06_4_28_53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/555a96cb-0596-4d3c-36ae-951417ea8d91.png)
- プロジェクトに移動して、SourceRepository画面より`Add repository`をクリック`Link repository`を選択
![スクリーンショット 2022-12-06 4.29.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/17bb17a3-7e3d-afdb-bddc-db7f7477f4d4.png)
- `Repository Provider`、`GitHub　account`、`GitHub repository`をそれぞれ指定して`Link`をクリック
![スクリーンショット_2022-12-06_4_29_46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/d19a66b5-97a6-9f90-e95e-9aeb43999ecf.png)

## VSCodeでCodeCatalyst上のリポジトリに接続
※ローカルではなく、`クラウドベース開発環境`のIDEとしてVSCodeを使用する場合の設定になります。

### VSCodeでCodeCatalystの使用するために必要なもの
- AWS Builder ID
- VSCode
    - Toolkit for VS Codeのインストール
    - Remote-SSHのインストール

### AWSToolkitとCodeCatalystの接続
- `DEVELOPER TOOLS`で`CodeCatalyst`より`Start`を選択

![スクリーンショット_2022-12-05_23_06_15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/b33f5b2e-b4be-720e-95b4-6b13915153c8.png)

- コンソールより確認画面が表示されるので`Allow`を押下
![スクリーンショット_2022-12-05_23_06_26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/6ecdba97-4223-a3f2-df33-82cad0dad58e.png)

![スクリーンショット_2022-12-05_23_06_39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/3550d4d0-a686-9630-924a-cee5ad8aee8b.png)

- `DEVELOPER TOOLS`で`Create Dev Environment`をクリック
- `Source Code`、`Project`、`Branch`の各セクションでそれぞれ任意のものを指定
- `Create Dev Environment`を押下
    - 作成完了までやや時間がかかりました

![スクリーンショット_2022-12-05_23_08_23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/49bce2a8-d507-3286-2aaf-1764ce5c5aa1.png)


## 検索
検索バーではソースコード、Issue、プロジェクト、ユーザなどを検索可能。
また、検索クエリでタイプ、分野、ブール演算子、プロジェクトで絞り込みも可能

### 検索例
- タイプ別の検索方法
    - `type:code AND abc`で、「abc」を含むコードを表示
    - `type:issue AND abc`で、「abc」を含むIssueを表示
- 分野別の検索方法
    - `title:abc`で、タイトルに「abc」が含まれる結果を表示
    - `username:abc`で、ユーザ名に「abc」が含まれる結果を表示
- ブール演算子による絞り込み方法
    - `AND` `OR` `NOT`が使用可能
- プロジェクトによる絞り込み
    - `project:name AND abc`でプロジェクト名に「abc」が含まれる結果を表示

![スクリーンショット_2022-12-06_0_50_59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/9c7eaf6f-607d-1ea2-2f6c-c06a2e622a35.png)


## クォータ
### CodeCatalystのクォータ
|リソース|クォータ|
|---|---|
|ユーザ名|3-100文字。使用不可:? ^ * [ \ ~ :|
|ユーザあたりのパーソナルアクセストークン最大数|100|
|パスワード|8-64。大、小文字、数字。英数字以外も可能|
|プロジェクトのメンバー招待期限|24時間|
|スペースメンバー招待期限|24時間|
|メール認証有効期限|10分|

### CodeCatalystの開発環境クォータ
|リソース|クォータ|
|---|---|
|1 か月あたりの無料利用枠のDev Environment時間数|60|
|スペースあたりの無料利用枠Dev Environmentストレージの量|64GiB|
|無料利用枠のDev Environmentコンピューティングの量|2vCPU、4GBRAM|

## AWS CLI
最新のcliバージョンにアップデートした後、[こちら](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/codecatalyst/index.html)を参照してCodeCatalystに関するCLI操作が可能。

# おわりに
今回はCodeCatalystによるスペースとプロジェクトの作成から実際にサンプルアプリケーションのデプロイ、Issue管理、プルリクエストからのマージ、変更の反映確認と一連の開発フローを実施してみました。インフラで展開されたリソースのパラメータをそのままアプリケーションに渡しているなど、1つのWorkflowにアプリケーションコードとインフラを含めたCI/CDをまるっと扱えるのは中々面白いなと感じました。

今回のサンプルでは意識していなかったですがCodeBuildやCodeDeploy、CodePipelineと複数のサービスに跨って定義していたCI/CDレイヤをWorkflow定義に纏められるのはもしかしたら楽かもしれないというのと、これが何処まで融通の効くものなのか(ぱっと思いつくのだとCodePipelineにはある手動承認ステップとかはCodeCatalystでは無理?)、複数環境でのCI/CDや管理面、リージョンを跨ぐAWSサービスとの連携などがどの程度対応、簡易化出来るかなども気になるポイントでもあるので追加の調査が必要だなと感じました。

Slack通知も出来るようなので気が向いたらそちらも確認出来たら追記したい。他ドキュメントを漁って何か見つけたらまた書いていこうと思います。

# 参照
https://docs.aws.amazon.com/codecatalyst/latest/userguide/welcome.html