AWS Fargateとは
AWS Fargateとは、AWSが提供するコンテナ向けのサーバーレスコンピューティングエンジンを指します。読み方は、ファーゲートです。動作環境は、Amazon Elastic Container Service (ECS) と Amazon Elastic Kubernetes Service (EKS) の2種類に対応しています。
【参考】:AWS Fargate
AWS Fargateは 、インスタンスの選択やクラスター容量のスケーリングなどの設定をすることなく、適切なコンピュート資源が割り当てられます。わかりやすく言うとAWS Fargateとは、サーバー管理不要のコンテナ実行環境で、アプリケーション開発や構築の効率向上を可能にするAWSのサービスを意味します。
AWS Fargateの特徴
AWS Fargateの特徴ですが、コンテナ実行環境の管理が不要な点が挙げられます。具体的には、サーバー運用で必要となるOSのメンテナンスやパッチ管理が不要となります。リソース要求に基づき、コンピューティングのスケールが自動的に行われます。
AWS Fargateはサーバーレスのため、ワークロード使用量に応じて課金されます。そのため料金プランは無駄がなく、オーバープロビジョニングが発生しません。
AWS Fargateの想定用途
AWS Fargateでは、コンテナの一般的な用途全般に対応しています。具体的には、コンテナを活用し、既存アプリケーションのリフト&シフトによる移行が可能となります。また、定型的なジョブを反復実行することが可能で、バッチ処理に活用することもできます。マイクロサービスに対応するアプリケーションを分散実行することも主要用途の1つです。
このように、コンテナを活用したアプリケーション開発と運用を効率的に行い、CI/CD(継続的インテグレーション/継続的デリバリー)を実践することができます。
AWS Fargateの料金体系
AWS Fargateの料金体系は従量課金制となっており、使用量に応じた料金が発生します。具体的にはコンテナ化されたアプリケーションで消費される vCPU およびメモリリソース・ストレージリソースに対する料金が発生します。
Savings Plans を利用して、1年間または 3年間、特定量のコンピューティング使用量契約により、使用料金を最大 50% 節約することも可能です。
【参考】:AWS Fargate の料金
AWS Fargateの提供リージョン
AWSの提供サービスは、リージョン毎に異なります。AWS Fargateの提供リージョンですが、Amazon ECSについてはアジアパシフィック(東京)、アジアパシフィック(大阪)ともにサービス提供されており、LinuxコンテナおよびWindowsコンテナともに支障なく利用することができます。
【参考】:AWS リージョン別のサービス 【参考】:Supported Regions for Amazon ECS on AWS Fargate
Amazon EKSは提供リージョンが限定されており、2022年8月時点ではアジアパシフィック(東京)で利用できますが、アジアパシフィック(大阪)ではまだ提供されていません。
AWS Fargateの関連知識
AWS Fargateを利用するにあたり、Amazonのサービスと連携する必要があります。そのため、いくつか関連するサービスについて用語の理解が求められます。ここでは、それぞれの用語とその違いについて解説していきます。
Amazon EC2とは
Amazon EC2とは、Amazon Elastic Compute Cloudの略で、AWSの主要コンピューティングサービスを指します。AWSはサーバーサービスで用いるコンピュータ資源の種類が豊富で、ニーズに合わせた関連サービスが多数提供されています。
【参考】:Amazon EC2
Amazon EC2では、コンピュートリソースを仮想サーバーとして切り出し、サービス提供します。SLAに応じて幅広いインスタンスが提供されており、業務に応じたキャパシティとスケールを確保することができます。
AWS FargateとAmazon EC2との違い
Amazon ECSならびにAmazon EKSがコンテナを起動する方法としては、Amazon EC2とAWS Fargateのいずれかが必要です。AWS FargateとAmazon EC2ともにコンテナの実行環境(データプレーン)に使用します。
違いですが、Amazon EC2は通常の仮想サーバーとしてコンテナ実行環境に利用します。AWS Fargateの場合は、サーバーレスコンテナとしてホストマシンを意識せずにコンテナを実行することができる点に違いがあります。
Amazon ECSとは
Amazon ECSとは、Amazon Elastic Container Serviceの略で、Amazon EC2インスタンスやAWS Fargateを用いてDockerコンテナを管理するサービスを指します。
【参考】:Amazon Elastic Container Service (Amazon ECS)
マネージドクラスターでアプリケーションを実行しますので、自前でクラスター管理ソフトウェアのインストールや管理を行う必要がありません。ECSでは関連するAWSサービスと連携し、可用性を高めることもできます。
Amazon EKSとは
Amazon EKSとは、Amazon Elastic Kubernetes Serviceの略で、オープンソースのKubernetesを用いてDockerコンテナを管理するサービスを指します。自前でKubernetesのコントロールプレーンやワーカーノードをインストールすることなく、管理を容易にします。
【参考】:Amazon Elastic Kubernetes Service (EKS)
オープンソースのKubernetesが用いられているため、通常のKubernetes環境で動作するアプリケーションと互換性があります。
Amazon ECSとEKSの違い
Amazon ECSとEKSの違いですが、ともにコンテナをコントロールする機能(コントロールプレーン)として使用し、コンテナの稼働や停止などの管理を行います。コンテナのスケールやロードバランスを行い、アプリケーション構築や運用を簡素化し、環境を適切に維持します。ご使用の環境に合わせて選択することができます。
選択方法の違いは、Dockerコンテナを管理する際にはECSを使い、Kubernetesを用いる場合はEKSを使う点が異なります。すでにAWSを利用しており、AWSの環境を最大限活用する場合も、ECSが候補となります。EKSはオンプレミス環境でKubernetesをすでにお使いの方や、Kubernetes向けアプリケーションをクラウド環境へ移行する際に有効です。
AWS Fargateの使い方
AWS Fargateの使い方ですが、あくまでコンテナの実行環境ですので、コンテナをコントロールするAmazon ECSまたはEKSが必要です。EKSはKubernetesを用いるため、Kubernetes自体の知識が必要となります。ここではECSを用いてAWS Fargateの使い方を解説していきます。
【参考】:AWS スタートアップのためのコンテナ入門 – AWS Fargate 編 【参考】:AWS Fargateとは?
AWS Fargateを始める
AWS Fargateを始めるために、ECSでクラスター作成を行います。AWS マネジメントコンソールから作業を開始します。Amazon ECSでは、Amazon Linux 2およびWindows Server 2019 Full・Windows Server 2019 Coreのコンテナがサポートされています。
【参考】:Amazon ECS User Guide for AWS Fargate 【参考】:AWS マネジメントコンソール
クラスターのセットアップ
Fargateを用いたクラスターのセットアップを行います。Amazon ECS コンソールを開き、「クラスター」「クラスターの作成」を選択します。CLIを利用するには、先行してAmazon ECS CLIをインストールしておきます。
【参考】:Amazon ECS デベロッパーガイド チュートリアル: Amazon ECS CLI を使用して Fargate タスクのクラスターを作成する 【参考】:Amazon ECS デベロッパーガイド Amazon ECS CLI をインストール
クラスターテンプレートの選択
クラスターの作成を簡略化するために、クラスターテンプレートが用意されています。テンプレートで「AWS Fargateを使用」の記載がある「ネットワーキングのみ」を選択し、「次のステップ」をクリックします。
クラスターの設定
クラスター名を設定し、「作成」をクリックします。「起動ステータス」が表示され、クラスター作成が完了します。その後、コンテナのイメージをAmazon ECR(Elastic Container Registry)に格納するか、Docker Hubを活用します。
【参考】:Amazon Elastic Container Registry (Amazon ECR) 【参考】:Docker Hub
ECSのタスク定義
Amazon ECS コンソールを開き、「タスク定義」で起動タイプに「FARGATE」を選択し、「次のステップ」をクリックします。そこで「タスク定義名」を設定し、「コンテナの追加」をクリックします。「コンテナの追加」では、ECRのリポジトリあるいはDocker Hubに格納したイメージを指定します。同様に、コンテナで実行するコマンドを記載します。
ECSのタスク実行
Amazon ECSマネジメントコンソールを開き、「タスク定義」に表示されている作成済みのタスク定義を選択し、「タスクの実行」をクリックします。起動タイプは「FARGATE」を選択し、「タスクの実行」をクリックします。これでタスクが実行されました。実行結果は、タスクの詳細から確認できます。
サーバーレスのメリットを享受できます
AWS Fargateでは、サーバーレスのコンテナ実行環境が提供されます。ホストマシンを意識せずにコンテナを実行でき、OSの管理やパッチ運用から開放されます。ワークロードのキャパシティ要件に応じてスケールするので、コンテナアプリケーションの構築と管理に専念できます。Dockerの知識習得とともに、AWS Fargateの情報収集をおすすめします。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから