はじめに
こんにちは、SB C&Sの鈴木です。
最近、お客様とお話ししている中で、「AWS Fargate(以下、Fargate)を保護する製品はあるか?」というご質問をいただく機会が増えてきました。
Palo Alto Networks社のPrisma Cloudでは、Fargateを保護することが可能なのですが、Fargateがどんなものかというところから調べなおしてみました。
今回の記事では調べた内容のポイントをまとめつつ、AWS Fargate(以下、Fargate)のデプロイ手順まで解説していきます。
※Prisma Cloudについてはこちらの記事をご覧ください。
目次
- Fargateとは?
- Fargateを使ってECS の利用を開始する手順
Fargateとは?
Fargateを一言で表すと「AWS上でコンテナをサーバーレスで実行することができる機能」です。
サーバーレスとは、サーバーの構築や保守などを意識することなく、サーバー上でプログラムを実行できる仕組みであり、アプリケーション開発に全集中できるというメリットがあります。
Fargateはこの機能をAWS上で提供するのですが、他にも以下のような特徴があります。
- データプレーンとしてECSやEKSと組み合わせて利用
- AWSマネージドで、EC2インスタンスのプロビジョニング、スケール、管理が不要
- 仮想マシンを意識しないシームレスなスケーリングができる
- コンテナの起動時間、使用リソースに応じた従量課金
- 他のAWSサービス(VPCネットワーキング、ELB、IAM、Cloud Watchなど)と連携可能
データプレーンとコントロールプレーン
Fargateを理解する際のポイントとして「データプレーン」という言葉がありますので、こちらについても解説していきます。
「データプレーン」と「コントロールプレーン」という言葉はいろんな場面で見かけますが、AWSでは「コンテナを管理するサービス」を語るときに出てきます。
AWS上でのそれぞれの役割は以下です。
- データプレーン:コンテナの実行環境。FargateとEC2がこの機能に該当する。
- コントロールプレーン:コンテナをコントロールする機能。ECSとEKSがこの機能に該当する。
上述したFargateの特長に「ECSやEKSと組み合わせて...」と記載いたしましたが、以下のようにデータプレーンとコントロールプレーンを組み合わせることができます。
- Fargate+ECS
- Fargate+EKS
- EC2+ECS
- EC2+EKS
実際に、ECSやEKSを作成しデータプレーンを選択する際には「起動タイプ」という項目で選択する形になっています。
ここまでお読みいただきますと、「EC2と組み合わせた時とは何が違うの?」とか「ECS、EKSって何?」という疑問が湧いてくるかと思いますので、こちらについても以下で解説いたします。
データプレーンでEC2を選ぶ場合との違いは?
データプレーンはFargateかEC2どちらか選べますが、両者の違いを端的にお伝えすると「Fargateでは細かい設定や管理が不要。EC2では細かい設定や管理が必要。」というものになります。
あくまで一例になりますが、具体的な違いは以下です。
データプレーン・起動タイプ | Fargate | EC2 |
OS/パッチ更新 | 不要 | 必要 |
スケーリング | 簡単 | EC2インスタンス数のスケーリングが必要 |
ネットワークモード | awsvpcモードのみ | awsvpcモード、bridgeモード、hostモード、noneモード |
データボリューム | Fargateでのバインドマウント、EFSボリューム | EC2でのバインドマウント、EFSボリューム、Dockerボリューム |
コンテナのデバック | 不可 | 可能 |
※コストについては、AWSの公式ドキュメントで「ECS Fargate/EC2 起動タイプでの理論的なコスト最適化手法」がありますので、こちらをご覧ください。
上表の各機能の説明については割愛させていただきますが、「Fargateは細かい設定や管理を気にすることなく利用することが可能」ということがわかってきます。
知識を身に付けたり詳しい人を雇わず「まずはコンテナ環境で開発を始めてみよう」という方法をとれるのが、Fargateの大きなメリットになります。
ECSとEKSの違いは?
コントロールプレーンではECSとEKSを選べますが、それぞれの役割を端的にお伝えすると以下のようになります。
- ECS(Elastic Container Service):AWSが提供するコンテナ管理サービス
- EKS(Elastic Kubernetes Service):AWSでKubernetesを実行・管理できるサービス
両者の大きな違いは、「Kubernetesベースで実行・管理できるか」という点ですので、両者を選定する際のポイントとしては、「AWS上でKubernetesを使うか、使わないか」というところになります。
※Kubernetesの詳細については、こちらの記事をご覧ください。
Kubernetesは、他のKubernetes環境(オンプレ、他パブリッククラウド)から移行しやすいというのがメリットになりますが、AWS上でKubernetesを使わないのであれば、EKSを使う必要もありません。
なので、「AWSでコンテナを使いたいが、Kubernetesの知見はなく、今後Kubernetesを使うという予定もない。」ということであれば、ECSを選択して問題ないでしょう。
Fargateを使ってECSの利用を開始する手順
それではここから、ECSとFargateの組み合わせで利用開始する手順を記載していきます。
こちらを実装するにあたっては、AWSの提供するECSのチュートリアルがわかりやすいので、こちらを利用していきます。
1.チュートリアルにアクセスし、ECSを作成したいリージョンを選択してください。
2.利用したいコンテナイメージを選択します。本記事では「sample-app」を選んで作成していきます。
3.タスク定義を確認します。「編集」をクリックすると設定を変更できますが、デフォルトのままで問題ありません。「次へ」をクリックします。
4.「サービスを定義する」の「ロードバランサーの種類」にて、「Application Load Balancer」を選択し、「次へ」をクリックします。
5.クラスター名に「default」と入力されています。このままでも問題ありませんので「次へ」をクリックします。
6.確認画面になりますので、「次へ」をクリックします。
7.起動ステータスの画面になりますので、すべて起動完了すれば作成完了です。
8.AWSコンソール画面からECS > クラスター > 作成したクラスタ > タスク > 作成したタスク の順に選択し、表示された「パブリックIP」を確認します。
9.ブラウザから確認したIPアドレスに接続し以下のような画面が表示されれば、無事作成完了です。
まとめ
ECSの概要から、チュートリアルで簡単にFargateを使ってECSを利用開始する手順を説明させていただきました。
開発者の方々にとって、コンテナの知識をつけたり管理をしなければならないと聞くと、気が引けてしまうかもしれませんが、ECSだとそういった手間が省けますので、コンテナの利用を検討される際には、ECSも調べてみていただければと思います。
冒頭でPrisma Cloudについても触れさせていただきましたが、別の記事でPrisma CloudでFargateを保護する方法についても解説していきます。
他のおすすめ記事はこちら
著者紹介
SB C&S株式会社
テクニカルマーケティングセンター
鈴木 孝崇
テクニカルサポート、サーバー運用保守、RPA開発、パブリッククラウドのプリセールスを経て、現在ゼロトラスト領域のソリューションSEとして活動中。
PMP、Prisma Certified Cloud Security Engineer、Google Professional Cloud Architectなど20個の資格を取得。
CSPM、CWPPのプロフェッショナルを目指して、日々奮闘しています。