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を素早く実装してビジネスロジックにより注力できるでしょう。