LoginSignup
14
13

More than 1 year has passed since last update.

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

Last updated at Posted at 2022-12-05

この記事は、「Relic Advent Calendar 2022」の6日目の記事です!

はじめに

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

第1弾はこちら→【re:Invent】Amazon EventBridge Pipesの検証と今後について

Amazon CodeCatalystとは

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

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

セットアップ

AWS Builder IDの作成

スクリーンショット_2022-12-05_18_39_19.png

  • 指定したアドレス宛に検証コードが送信されるのでコピーして「サインイン」を押下する

スクリーンショット_2022-12-05_18_39_36.png

スクリーンショット_2022-12-05_18_41_15.png

  • パスワードと文字認証をそれぞれ入力して「プロフィールを作成」を押下する
    スクリーンショット 2022-12-05 18.41.41.png

MFA設定

スクリーンショット_2022-12-05_20_19_33.png

  • AWS Builder IDの画面左より「Security」を選択して、[Register Device]を押下
    スクリーンショット_2022-12-05_20_21_24.png

  • デバイス登録画面に従いMFA認証設定を実施
    スクリーンショット 2022-12-05 20.22.01.png

スクリーンショット 2022-12-05 20.22.16.png

スクリーンショット_2022-12-05_20_22_48.png

スペース作成

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

スクリーンショット_2022-12-05_18_44_09.png

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

スクリーンショット 2022-12-05 18.58.00.png

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

スクリーンショット_2022-12-05_18_44_33.png

  • アカウントが確認されたことを確認
    スクリーンショット_2022-12-05_18_44_45.png

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

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

スクリーンショット 2022-12-05 19.05.46.png

画面確認

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

Project

文字通りProjectを管理する画面のようです。
your projectsall projectsとフィルタリングが可能
スクリーンショット 2022-12-05 19.13.31.png

Activity

見たところ、スペース上で行われた各履歴が確認出来る画面

確認出来る内容

  • プロジェクトの作成
  • プロジェクトの更新
  • プロジェクトへの参加
  • プロジェクトからの離脱
  • プロジェクトの削除
  • リポジトリの作成
  • ブランチの作成
  • プルリクエストの作成
  • プルリクエストのマージ
  • プルリクエストへのコメント
  • Issueの作成
  • Issueへのコメント
  • Issueへの再割当て
  • Issueのステータス変更
  • ワークフロー実行成功
  • ワークフロー実行失敗

スクリーンショット 2022-12-05 19.13.58.png

Members

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

ロールの種類と権限

  • Space administrator
    • CodeCatalystのすべての権限を持つ
    • スペースの作成やスペースに関する管理権限あり
    • 詳細はこちら
  • Project administrator
    • プロジェクト内のすべての権限を持つ
    • プロジェクトの設定編集、プロジェクト権限の管理、プロジェクトの削除など
    • 詳細はこちら
  • Contributor
    • プロジェクトで作業するために必要な権限を持つ
    • コード、ワークフロー、Issue、アクションの操作など
    • 詳細はこちら
  • Project member
    • 権限が関連付けられない
    • プロジェクトにユーザを追加すると、自動的にこのロールを付与

スクリーンショット_2022-12-05_19_16_34.png

Installed extensions

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

スクリーンショット 2022-12-05 19.16.53.png

スクリーンショット 2022-12-05 19.17.04.png

AWS Accounts

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

スクリーンショット_2022-12-05_19_17_20.png
スクリーンショット_2022-12-05_19_32_02.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

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

スクリーンショット 2022-12-05 19.37.38.png

Billing

Billing画面ではCodeCatalystの請求ティアやアカウントステータス、リソース使用状況が確認可能。
スクリーンショット_2022-12-05_19_17_38.png

料金形態

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

スクリーンショット 2022-12-05 19.18.18.png

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

スクリーンショット 2022-12-05 19.18.26.png

スクリーンショット 2022-12-05 19.18.30.png

チュートリアル+α

画面感をおおよそ掴めたところで、早速チュートリアルを実施。
本チュートリアルでは、以下のようなサーバーレスWeb3層アプリケーションをCodeCatalystを使って開発していくもののようです。※画像はドキュメントより参照

modern-app-overview (1).png

プロジェクトの作成

  • プロジェクト作成画面でStart with a blueprintを選択

  • Modern three-tier-webapplicationを選択してNextを押下
    スクリーンショット 2022-12-05 21.22.24.png

  • Project名を指定
    スクリーンショット 2022-12-05 21.23.20.png

  • AWSアカウントを入力

  • Add IAM roleをクリックしてデプロイ用のRoleを作成

  • ComputePlatformはLambdaを選択

  • 任意のリージョン、アプリケーション名を指定
    スクリーンショット_2022-12-05_21_23_32.png

  • Create CodeCatalyst deployment administrator role in IAMにチェックを入れてCreate deployment roleをクリック
    スクリーンショット 2022-12-05 21.23.57.png

  • プロジェクトが作成され、以下画面に遷移
    スクリーンショット 2022-12-05 21.25.06.png

ソースコード確認

ナビゲーションペインよりCodeSource repositoriesから対象のアプリケーションを選択

デプロイ

  • CI/CDWorkflowsより「ApplicationDeploymentPipeline」を選択
    • workflow定義ファイルに基づいてCI/CDが実行される
      スクリーンショット 2022-12-06 3.11.21.png
  • 画面右の「Run」を押下
    スクリーンショット 2022-12-06 3.12.27.png

アクセス確認

  • デプロイが完了後、「ApplicationDeploymentPipeline」ワークフローの「Latest status」タブよりワークフロービジュアルの「Deploy_Frontend」を選択
  • 詳細より「Variables」タブからendpointUrlを確認

スクリーンショット_2022-12-06_3_14_26.png

  • ブラウザよりエンドポイントURLへアクセスし以下画面が表示されることを確認
    スクリーンショット 2022-12-05 22.43.02.png

Issueの追加

  • ナビゲーションペインよりIssueを選択、Create Issueを押下
    スクリーンショット 2022-12-05 21.28.06.png
    • タイトル、説明、status、優先度、対応者をそれぞれ指定してCreate Issueをクリック
      スクリーンショット 2022-12-05 21.29.05.png
  • IssueBoardより起票したIssueが表示される
    スクリーンショット 2022-12-05 21.29.52.png

ブランチ作成

  • SourceRepositoryから対象のアプリケーションを選択、CreateBranchを押下

スクリーンショット 2022-12-06 3.35.56.png

  • Branch名、元Branchを指定してCreateを押下
    スクリーンショット 2022-12-06 3.37.42.png

リポジトリをローカルにクローン

  • SourceRepositoryより対象のアプリケーションリポジトリを選択してClone repositoryを押下
    スクリーンショット 2022-12-06 5.56.22.png
  • HTTPS clone URLをコピーしてローカルでgit cloneを実行
  • passwordが要求されるのでpersonal access token(password)をコピーして貼り付け
    スクリーンショット_2022-12-06_5_56_36.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"
    },
git commit -am "Making an example change"
git push

プルリクエスト作成

  • ナビゲーションペインよりPullRequestを選択しCeate PullRequestを押下
    スクリーンショット 2022-12-05 22.46.06.png
  • SourceRepository、SourceBranch、DestinationBrancg、Pull RequestTitleをそれぞれ設定して[Create]を押下
    スクリーンショット 2022-12-05 22.47.55.png
  • 作成されたPull Requestを確認
    スクリーンショット 2022-12-05 22.49.22.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

  • 対象のPRのStatusがMergedになっている事を確認
    スクリーンショット 2022-12-05 22.51.07.png

デプロイ確認

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

スクリーンショット_2022-12-05_22_59_55.png

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

おまけ

GitHubとCodeCatalystを接続

  • スペースのInstalled extensionsを選択
  • MarketPlaceよりGithub repositoriesをインストール
    スクリーンショット 2022-12-06 4.26.53.png
  • インストール後、Connect GitHub accountをクリック
    スクリーンショット 2022-12-06 4.27.11.png
  • Authorize Amazon CodeCatalystをクリック
    スクリーンショット 2022-12-06 4.27.23.png
  • アクセス許可するRepositoryを選択するか、All repositoriesにチェックを入れてInstallをクリック
    スクリーンショット_2022-12-06_4_28_06.png
  • 一覧より接続したGitHubアカウントが確認出来る
    スクリーンショット_2022-12-06_4_28_53.png
  • プロジェクトに移動して、SourceRepository画面よりAdd repositoryをクリックLink repositoryを選択
    スクリーンショット 2022-12-06 4.29.25.png
  • Repository ProviderGitHub accountGitHub repositoryをそれぞれ指定してLinkをクリック
    スクリーンショット_2022-12-06_4_29_46.png

VSCodeでCodeCatalyst上のリポジトリに接続

※ローカルではなく、クラウドベース開発環境のIDEとしてVSCodeを使用する場合の設定になります。

VSCodeでCodeCatalystの使用するために必要なもの

  • AWS Builder ID
  • VSCode
    • Toolkit for VS Codeのインストール
    • Remote-SSHのインストール

AWSToolkitとCodeCatalystの接続

  • DEVELOPER TOOLSCodeCatalystよりStartを選択

スクリーンショット_2022-12-05_23_06_15.png

  • コンソールより確認画面が表示されるのでAllowを押下
    スクリーンショット_2022-12-05_23_06_26.png

スクリーンショット_2022-12-05_23_06_39.png

  • DEVELOPER TOOLSCreate Dev Environmentをクリック
  • Source CodeProjectBranchの各セクションでそれぞれ任意のものを指定
  • Create Dev Environmentを押下
    • 作成完了までやや時間がかかりました

スクリーンショット_2022-12-05_23_08_23.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

クォータ

CodeCatalystのクォータ

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

CodeCatalystの開発環境クォータ

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

AWS CLI

最新のcliバージョンにアップデートした後、こちらを参照してCodeCatalystに関するCLI操作が可能。

おわりに

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

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

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

参照

14
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
13