2021/04/26

「AWS Copilot」とは?その概要とデプロイ方法も紹介します!

 
  

「AWS Copilot」とは?


「AWS Copilot」とは、Dockerコンテナの管理サービスである「Amazon Elastic Container Service(Amazon ECS)」の高機能デプロイツールです。

具体的には、「Amazon ECS」上のコンテナに、ソースコードの状態からアプリケーションをデプロイすることが可能です。デプロイとは、モジュールを利用可能な状態として配置することです。

ポイントとしては、AWSと「Amazon ECS」の様々なコンポーネント(「パブリックサブネット」、「Application Load Balancer」、「サービス」、「タスク」、「クラスター」等)を理解していなくても、「AWS Copilot」で必要な処理を代行してくれる点です。

「AWS Copilot」の機能概要

「AWS Copilot」は、AWS上のリソース管理の負荷を軽減してくれる「オールインワン」のCLI(コマンドラインインターフェース)ツールのため、自社アプリケーションの開発業務に集中することができます。

具体的には、自社向けに構築するクラウドサービス設計(負荷分散されたWebサービス、バックエンドサービス等)をベースにして、「AWS Copilot」が各種AWSリソースを生成し、コンテナ化されたアプリケーションが本番稼働できる環境を構築してくれます。

また「AWS CodePipeline パイプライン」を利用することで、複数の「アカウント」や「リージョン」に横断的にデプロイすることが可能です。

他にも、「ログ表示」や「サービスの正常性」等のシステム運用作業を実行することも可能です。

「AWS Copilot」のインストール方法


「AWS Copilot」のインストール方法としては、「Homebrew(※mac OSのパッケージ管理ツール)」を利用する、もしくは手動でバイナリパッケージをダウンロードします。

インストール可能な環境としては、「macOS」と「Linux」になります。

「Homebrew」を利用してインストールする場合は、以下のコマンドを実行します。


brew install aws/tap/copilot-cli

「macOS」と「Linux」の場合は、以下のコマンドを実行します。


sudo curl -Lo /usr/local/bin/copilot https://github.com/aws/copilot-cli/releases/latest/download/copilot-darwin \
   && sudo chmod +x /usr/local/bin/copilot \
   && copilot --help

「Windows」の場合は、PowerShell を利用して、以下のコマンドを実行します。


PS C:\> New-Item -Path 'C:\copilot' -ItemType directory; `
  Invoke-WebRequest -OutFile 'C:\copilot\copilot.exe' https://github.com/aws/copilot-cli/releases/latest/download/copilot-windows.exe

「AWS Copilot」のコンセプト


「AWS Copilot」のコンセプトとして、「Application (アプリケーション)」、「Environment(環境)」、「Service(サービス)」の3点があります。

それぞれのコンセプトについて、解説していきます。

「AWS Copilot」のコンセプト1:Application

「AWS Copilot」のコンセプト1として、「Application(アプリケーション)」があります。

具体的には、「アプリケーション」とはシステムの構成要素を「グルーピング」する仕組みやメカニズムを意味します。

例としては、「コンウェイの法則(※「システム設計は、組織構造を反映させたものになる」という概念)」に則して考えると、組織内に複数チームが存在する場合は、システムも複数の「Copilot アプリケーション」から構成されます。

組織が比較的小規模で、単一の開発チームのみでシステムを担当している場合は、単一、または複数サービスから構成される単一「Copilot アプリケーション」で整理可能です。

しかし、複数チームが各システムを担当し、チームの横断的なやり取りが少ない場合では、各開発チームが「Copilot アプリケーション」を1個担当するのが妥当となります。

「AWS Copilot」のコンセプト2:Environment

「AWS Copilot」のコンセプト2として、「Environment(環境)」があります。

具体的な「環境」とは、アプリケーションをデプロイする際の「ステージ(アプリケーションが動作する場所)」のことです。

例としては、アプリケーションをテストで確認する際には「QA(Quality Assurance)環境」にデプロイして実施します。

「QA環境」で想定通りにアプリケーションが動作することをテストで確認したら、次のステージの「本番環境」にアプリケーションをデプロイする、という流れになります。

「AWS Copilot」のコンセプト3:Service

「AWS Copilot」のコンセプト3としては、「Service(サービス)」があります。

ここでの具体的な「サービス」とは、あるコンテナ上で動作している「常駐型プロセス」のことです。

1個のアプリケーションは、1個以上のサービスから構成されています。つまり「モノリシック」なアーキテクチャの場合には、1個のアプリケーションに1個のサービス、「分散アーキテクチャ」の場合には、1個のアプリケーションは複数のサービスで構成されます。

AWS外部からアクセス可能なロードバランサーを持つ「website」サービス、サービスディスカバリを経由した内部通信による「API」サービス、キュー型ジョブの「background worker」サービスがある場合、これらをコンポーネントとしてまとめるとアプリケーションになります。

「AWS Copilot」のデプロイ方法


「Amazon ECS」アプリケーションを「AWS Copilot」を利用してデプロイする方法を紹介します。

前提条件として、AWSアカウントの設定と「AWS CLI」のインストールが完了していることとします。

デプロイ1:コマンドの使用

最初にコマンドを利用して、アプリケーションをデプロイします。

具体的には、次のコマンドを実行します。


git clone git@github.com:aws-samples/amazon-ecs-cli-sample-app.git demo-app && \
cd demo-app &&                               \
copilot init --app demo                      \
  --name api                                 \
  --type 'Load Balanced Web Service'         \
  --dockerfile './Dockerfile'                \
  --port 80                                  \
  --deploy

デプロイ2:アプリケーションのデプロイ

次に、認証情報を設定した後、デモアプリのクローンを作成します。

具体的には、以下のコマンドを実行します。


aws configure
git clone git@github.com:aws-samples/amazon-ecs-cli-sample-app.git demo-app

デプロイ3:アプリケーションのセットアップ

続いて、必要なアプリケーションのセットアップを行っていきます。

具体的には、以下のコマンドを実行します。


copilot init
What would you like to name your application? [? for help]

以降も、インターフェースの画面の指示に沿ってセットアップを進めていきます。

「AWS Copilot」のユースケース


「AWS Copilot」のユースケースとしては、「CI/CD パイプライン」を自動的に構築し、コードを「Git リポジトリ」プッシュすることでデプロイする、「Amazon S3」 バケット、ストレージ、「NoSQL/SQL」のデータベースをセットアップする、等があります。

つまり「AWS Copilot」はすぐに実行できるサービスを数回のコマンド実行でデプロイできるようになります。

この「AWS Copilot」を活用して、コンテナサービスの管理の効率化を目指してみてはいかがでしょうか?

ITエンジニアへのキャリアチェンジならキャリアチェンジアカデミー

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞

おすすめの動画

  • 【未経験からIT業界へ転職するなら】相談窓口とスキルの獲得はここで解決!IT転職が一気に有利に!【キャリアチェンジアカデミー】

  • 【費用一切不要】未経験からIT業界へ転職するならまずはここへ相談!【キャリアチェンジアカデミー】

  • 【何のエンジニアになれるのか?】未経験からITエンジニアを目指すとこんな道がある【キャリアチェンジアカデミー】