インフラ

CircleCI Orbsを使って、Amazon ECSに効率的にデプロイしよう

doiken

土居です。

本日は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 ECRAmazon 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_URLCircleCIの環境変数に予めプッシュ先のAmazon ECRのURLを設定してください。

【Orbsの機能】JobとCommand

Orbs の機能には CircleCIJob に相当するものとCommand に相当するものが存在し、対応する箇所に記述して利用します。上記の場合はstepsに記載しており、Commandbuild-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を素早く実装してビジネスロジックにより注力できるでしょう。

AUTHOR
どいけん
どいけん
記事URLをコピーしました