CircleCI Orbsを使って、Amazon ECSに効率的にデプロイしよう
土居です。
本日はCircleCI Orbs を活用し、使わない場合よりも簡潔な設定ファイルで Amazon ECS へアプリケーションをデプロイする方法をご紹介いたします。
Orbs とは?
Orbs とは、CircleCIの設定の記述をまとめてパッケージ化し、誰でも簡単に再利用可能とするために共有されているものです。下記のOrbs Registryのページより、連携したいアプリケーションの言語や、AWSのサービス名などのキーワードで検索すると多くのOrbsが見つかります。
Orb Registry
公式ドキュメント
このうちCERTIFIED のマークが付いているものはCircleCIチームによって実装・テストされたもので、掲載されているドキュメントやサンプルコードも充実いるので安心して利用できるでしょう。

そうでないサードパーティ製のものは、利用するために予め設定で許可が必要になります。

※Organization Settings > Security > Orb Security Settings より許可
ドキュメントが不親切な物もありますが、中にはCERTIFIEDには無いニッチな目的をカバーしているものがあります。各Orbsのページにはソースコードも記述されていますので、中でやっていることを確認した上で利用することを検討しても良いでしょう。

※CERTIFIEDのものであっても、中でどのような処理が行われているのか気になるときにすぐにソースコードを確認できるのは嬉しいですね。
なぜOrbsを使うのか?
Orbsを活用すれば自前で設定ファイルを記述する分量が軽減されます。CI/CDの設定にかける時間を節約でき、効率的に開発できるようになります。
Orbs の導入方法
まずは以下のように、orbs キーに導入したいものを記載します。
準備としてはこれだけです。
version: 2.1
orbs:
aws-ecr: circleci/aws-ecr@6.15.3
aws-ecs: circleci/aws-ecs@2.0.0
※ここでは CERTIFIEDの物から Amazon ECR、Amazon ECSと連携するものを選択
Amazon ECRへのコンテナイメージのプッシュ
ビルドしたアプリケーションのコンテナイメージをAmazon ECRにプッシュします。
- コンテナイメージのビルド
Amazon ECRへのログイン- コンテナイメージの
Amazon ECRへのプッシュ
のステップが必要になりますが、Orbsなら以下のように記述するだけです。
push_and_deploy:
<<: *defaults
steps:
- checkout
- aws-ecr/build-and-push-image:
account-url: AWS_ECR_ACCOUNT_URL
repo: "リポジトリ名"
tag: "タグ名"
※ account-url の AWS_ECR_ACCOUNT_URL はCircleCIの環境変数に予めプッシュ先のAmazon ECRのURLを設定してください。
【Orbsの機能】JobとCommand
Orbs の機能には CircleCI の Job に相当するものとCommand に相当するものが存在し、対応する箇所に記述して利用します。上記の場合はstepsに記載しており、Commandのbuild-and-push-image機能を利用していることになります。
詳しくは各 Orbs のページを参照ください。
Amazon ECSへのアプリケーションのデプロイ
最後はアプリケーションをAmazon ECS にデプロイします。
以下のstepを追加します。
push_and_deploy:
<<: *defaults
steps:
- aws-ecr/build-and-push-image:
~ (省略) ~
- aws-ecs/update-service:
cluster-name: "クラスター名"
family: "タスク名"
service-name: "サービス名"
まとめ
このように、Orbs を活用することで効率的に設定ファイルを記述できるようになります。うまく使いこなせれば、CI/CDを素早く実装してビジネスロジックにより注力できるでしょう。
