Amazon CodeCatalystのblueprintで、コンテナ化したAPIを爆速でDeployする
Qiita 「CI/CD Advent Calendar 2022」 4日目の記事です。
はじめに
AWS re:Invent 2022で発表されたAmazon CodeCatalystを使用して、コンテナ化したAPIをAWSにDeployします。
CodeCatalystのBluePrintにNode.js API with AWS Fargate
が用意されていますので、それをそのまま使います。
CodeCatalystはこちらから使用できます。
やってみた
Builder IDを作る → Spaceを作る
まずCodeCatalystを使う為のBuilder IDを作り、その後にSpaceを作ります。
画面に従ってやれば問題なく出来ますし、クラスメソッドさんが記事に出しているのでやり方の記載は省略します。
プロジェクトを作る
-
Spaceに入り、右上の
Create Project
を押します。
-
Choose a blueprintで
Node.js API with AWS Fargate
を選択して、Next
-
projectの設定をします
- プロジェクト名を決める
- CodeCatalyst上のプロジェクト名
- デプロイするAWS Accountを選択する
- 未接続の場合は、
Add an AWS account.
から追加する
- 未接続の場合は、
- 各種Roleを設定する
- 適切なRoleを作っていなければ、
Create or add an AWS role
から追加
- 適切なRoleを作っていなければ、
- Regionを入力する
- 日本は、
ap-northeast-1
- 日本は、
- ApplicationName
- AWSアカウント上のアプリケーション名
- プロジェクト名を決める
- 設定を全て入力したら、
Create project
でプロジェクトができます。
CI/CDを構築して、deployする
インフラ構築
-
CI/CDのWorkflowを開くと、すでにインフラ構築が始まっています
-
しばらく待つとインフラ構築が完了します
アプリをデプロイする
- CI/CDのWorkflowに
Deploy
がありますので、こちらをRunします
- しばらく待つとデプロイが完了します
確認
AWS上のリソース
各種必要なリソースが作られていますので、AWSコンソール上から確認できます。
API Gateway
NLB
ECS
ECR
ブラウザから接続
API GatewayのURLをブラウザで開くと無事にAPIが動いていました。
という感じで、いくつか設定を入れつつ画面でポチポチ操作するだけで、20分弱でコンテナのAPIをDeployすることが出来ました。これは凄いぞ。
その他、CodeCatalystに関するトピック
コードをcloneしてローカルで開発する
CodeCatalystはgitのレポジトリになっていますので、当然cloneしてローカル環境で開発することができます。
APIのレポジトリをcloneする
今回のアプリは、2つのレポジトリで構成されています。
- infrastructure : cdkによるawsのIaC
- app : コンテナーのAPI
appの方を選びcloneボタンを押下すると、URLとtokenを取得できるので、ローカルにcloneできます。
後は、好きに開発することが出来ます。
CI/CDのカスタマイズ
仕様をちゃんと読んでいませんが、リポジトリ内の.codecatalyst/workflows
配下にCI/CDの定義ファイルがあるようです。こちらのyamlをカスタマイズすれば良いと思われます。
CodeCatarylstとGitHubの連携
CodeCatalystのSpaceにGitHubのextensionをインストールすることで、GitHubのレポジトリと連携が可能となるようです。
感想
めちゃくちゃ簡単にデプロイ出来ました。これは凄く便利です。
BluePrintが充実すれば、ほとんどのアプリ開発でインフラ構築の手間がなくなりそうですね。
今後、AWS上に構築するアプリはGitHubでなくてCodeCatalystを使用することを検討したいです。もしくはextentionでGitHub連携する前提で、codeとissue管理はGitHubに残してCI/CDはCodeCatalystというのもありかもしれません。GitHub Actionsもなんだかんだでお金かかるので、、、
とりあえずは以上です。
もう少し触ってみて、何か面白そうなことがあれば改めて記事に書きます。
おまけ
re:inventで貰った、CodeCatalystのステッカー
NCDC株式会社( ncdc.co.jp/ )のエンジニアチームです。 募集中のエンジニアのポジションや、採用している技術スタックの紹介などはこちら( github.com/ncdcdev/recruitment )をご覧ください! ※エンジニア以外も記事を投稿することがあります
Discussion