2021/03/1

AWSにおけるDockerのサービスとは?AWS Copilotの設定方法を紹介!

 
  

AWSにおけるDockerのサービスとは?


Dockerは、今や仮想化技術としてシステム開発には欠かせない技術となっています。

AWSでは、Dockerを利用した様々なサービスがリリースされています。今回は、AWSのDockerサービスを解説していきます。

Amazon Elastic Container Service (ECS)

Amazon Elastic Container Service (ECS) とは、フルマネージド型のDockerコンテナサービスです。ECSを利用すると、Dockerコンテナのアプリケーションを簡単にデプロイすることが可能です。

裏では、EC2インスタンスが稼働しており、マネジメントコンソールから各種設定ができます。また、Amazon Elastic Container Registry (Amazon ECR) をサポートしており、安全にプライベートレジストリを使用できます。

ECSでは、タスク定義と呼ばれるJSONテンプレートを利用して、タスクの定義ができます。タスク定義により、Dockerコンテナクラスタの作成/削除、Dockerコンテナの起動/終了などが可能です。

また、ECSはDockerコンテナの自動復旧を備えており、デプロイしているコンテナに異常が発生した場合にも、自動で復旧し、システムの稼働を継続することが可能となっています。

AWS Fargate

AWS Fargate とは、Amazon Elastic Container Service (ECS) と Amazon Elastic Kubernetes Service (EKS) 用の、サーバレスコンピューティングサービスです。

Fargateは、ECSと異なり、EC2の稼働状況を気にすることなく、コンテナアプリケーションをデプロイすることが可能です。また、Fargateはコンテナの実行に必要なリソース分のみ料金が発生するため、無駄な料金を抑えられます。

Fargateは、Amazon SageMaker や、 AWS CodePipeline などのサービスと連携して、機械学習アプリケーションを実装したり、CI/CD パイプラインを開発したりも可能です。

Amazon Elastic Kubernetes Service (EKS)

Amazon Elastic Kubernetes Service (EKS) とは、フルマネージド型のKubernetes のサービスです。

AWSでフルマネージドのKubernetes サービスを利用する利点はいくつかあります。

AWS Fargate を利用して、サーバレスコンピューティング上で稼働させることで、インフラストラクチャを気にすることなく、Kubernetes を運用できます。

また、CloudWatchやIAMなどの各種AWSサービスと連携しているため、モニタリングやスケーリングなど、既存のAWSリソースを利用することが可能です。

コマンド一つで、Kubernetes クラスタのバージョンアップができるので、新たにクラスタを作成する必要もありません。

Amazon Elastic Container Registry (ECR)

Amazon Elastic Container Registry (ECR) は、フルマネージド型のコンテナレジストリサービスです。ECRを利用すると、プライベートコンテナイメージを簡単にデプロイできます。また、ECRとECSは統合されているので、開発から稼働までを一貫して管理できます。

フルマネージドなので、インフラストラクチャを管理する必要がなく、スケーリングも自動で行われるため、管理が不要になります。

ECRでは、コンテナイメージはS3に保存されるため、高可用性が担保されます。

AWS Batch

AWS Batch は、大規模なバッチ実行向けサービスです。送信されたバッチジョブの量や、リソース要件に基づき、自動的にプロビジョニングします。AWS Batch を利用することで、バッチ実行ソフトウェアや、サーバインスタンスを管理する必要がなくなります。

アンマネージド型にも対応しており、自前のLinux インスタンスや、Docker クラスタなどを利用することも可能です。また、EC2 起動テンプレートとも統合されている為、事前にカスタマイズしたテンプレートを利用してAWS Batchを利用できます。

AWS Copilot

AWS Copilot とは、コンテナアプリケーションをAWSへ素早くデプロイする、コマンドラインインターフェース(CLI)です。Copilot は、レジストリへのプッシュ、タスク定義の作成、クラスタの作成などのサイクルを自動化します。

AWSコパイロットをはじめよう

AWS Copilotの設定方法

AWS Copilot を設定してみましょう。
なお、マシンはmacOSを想定しています。

Copilot のインストール

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

copilotのヘルプは以下のとおりです。

$ copilot
👩‍✈️ Launch and manage applications on Amazon ECS and AWS Fargate.

Commands
Getting Started 🌱
init Create a new ECS application.
docs Open the copilot docs.

Develop ✨
app Commands for applications.
Applications are a collection of services and environments.

env Commands for environments.
Environments are deployment stages shared between services.

svc Commands for services.
Services are long-running Amazon ECS services.

Release 🚀
pipeline Commands for pipelines.
Continuous delivery pipelines to release services.

deploy Deploy your service.

Settings ⚙️
version Print the version number.
completion Output shell completion code.

Flags
-h, –help help for copilot
-v, –version version for copilot

Examples
Displays the help menu for the “init” command.
`$ copilot init –help`

事前に、`aws configure` を実行し、AWS CLi の設定を終わらせておく必要があります。

上記のコマンド群を利用して、Dockerアプリケーションをデプロイしていくことになります。

まとめ

いかがでしたでしょうか。

AWSでDockerを利用するには、いろいろなサービスを利用する方法があります。サービスによってメリット・デメリットがありますので、それぞれのサービスの特徴をよく考慮して、利用するサービスを選定しましょう、

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

この記事の監修者・著者

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

おすすめの動画

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

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

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