AWS
docker
ECS
Fargate

AWS Fargateとは?

More than 1 year has passed since last update.

本記事は個人の意見であり、所属する組織の見解とは関係ありません。

こちらはAWS Fargate Advent Calendar 2017の12/1分の記事です。

AWS re:Invent 2017のKeynoteにて、Andy Jassy CEOからAWS Fargateの発表が行われました。以下がリリースブログからの抜粋になります。

AWS Fargateは、コンテナをデプロイする最も簡単な方法です。端的に言うと、FargateはEC2に似ていますが、仮想マシンを提供する代わりに、コンテナを提供します。これにより、下回りとなるインスタンス群の管理をせずとも、コンテナを基本的な計算単位として利用することができる技術です。やるべきことは、コンテナイメージ構築し、CPUやメモリの要件を指定し、ネットワークやIAMポリシーを定義し、そしてコンテナを起動することです。Fargateでは、アプリケーションの要件に対して最も近い設定を柔軟に行うことができ、請求は秒単位となります。

AWS Fargateの紹介 – インフラストラクチャの管理不要でコンテナを起動

誤解を恐れずに言えば、サーバレスでコンテナが実行できる技術であり、タスク(コンテナの実行単位)に割り当てたvCPUとメモリの量に応じて秒単位での課金でコンテナを実行できます1

そして、Amazon Elastic Container Service (Amazon ECS)ではLaunch TypeをFargateに切り替えるだけで、今までEC2上で実行していたのとほぼ変わりなくFargateでコンテナが利用できます。それはつまり、Amazon ECSが既に持っている以下のような機能をすぐにそのまま利用できるということです:

  • IAMロール
    • タスク毎にIAMロールを割当可能
    • EC2のInstance Profileと同等の機能性
  • awsvpcネットワーキング
    • タスク毎にElastic Network Interfaceが割当
    • Security Groupを自由に設定可能
    • VPCのRoute tableやNACLを自然と利用
      • Amazon RDS等のVPC内でのみ使うリソースにもアクセス可能
    • FargateではパブリックIPアドレスの割当も可能
  • サービス
    • タスクの数を管理するスケジューラがそのまま利用可能
      • Blue/Greenデプロイが1-clickで可能
    • オプションで、Application Load BalancerかNetwork Load Balancerと連携可能
    • オプションで、負荷に応じてタスク数のAuto Scalingも可能
  • ログ・監視
    • コンテナの標準出力・標準エラー出力をAmazon CloudWatch Logsに自動的に転送可能
    • サービスレベルでCPU・メモリの利用率がAmazon CloudWatch Metricsに保存される

ECSのFargate Launch Typeを使えば、上記の機能を使いながらも、必要な時間だけ、必要な大きさのタスク(コンテナ)2を、必要な数だけ起動して実行することができます。まるでEC2インスタンスのように、Amazon ECSのタスクでビジネスを構築していくことが可能であることが分かるかと思います。これまでのAmazon ECSとの比較は、ブログにもある以下の図がわかりやすいです。Fargateでは利用者がEC2インスタンスを準備する必要は一切ありません。AWS Fargateの詳細については、AWS Fargate: サービス概要も合わせてご覧になると良いと思います。

AWS FargateはAmazon ECSから今すぐ利用することができます。現在の対応リージョンはUS East(北部バージニア)となっていますが、他のリージョンへの展開もすぐに予定されています。

明日からは、簡単なユースケースで実際にAWS Fargateを使ってみた記事をご紹介したいと思います。


  1. 価格体系の詳細はこちらをご覧下さい 

  2. タスクに割り当てるvCPUとメモリはこちらの組み合わせの中から選択できます。