AWS ECS の配置は、プライベートサブネットとパブリックサブネットのどっちがいいの?

この記事では、AWS ECS の配置をプライベートサブネットに置くべきか、パブリックサブネットに置くべきか悩んでいる人に、どちらに置くべきかの判断基準をお伝えできればと思います。

せひ、最後までお読み頂ければと思います。

結論

基本方針としてはパブリックサブネットに置くことを検討し、情報漏えいしたら困るようなデータがあるのであればプライベートサブネットを選択するという流れで問題ないと思います。

理由は、パブリックサブネットの方が構成もシンプルでコストも安いからです。

また、構成がシンプルなので、構築に掛かる工数や管理工数も安くてなります。

どちらかが毎回必ず正解というわけではないので、自分がどういう状況に置かれているのかを考えて配置を変えれれば良いと思います。

私の場合の判断基準となるポイントは下記の通りです。

  1. セキュアな環境である必要があるか?
  2. コスト(人件費やインフラ費)が許容範囲内であるか?
  3. 個人のスキルアップに繋がるか?

背景

現在、ECS を利用してインフラを構築しているのですが、ECS のクラスターをプライベートサブネットに配置するのがいいのか、パブリックサブネットに配置するのがいいのかが分かりませんでした。
自分が検索した感じでは、プライベートサブネットに配置しているパターンが多かったように見受けられたのですが、そうしている理由が分からなかったので調べてみました。

ちなみにパブリックサブネットに ECS を配置した構成は下記の様になります。

プライベートサブネットに配置した場合は下記の様になります。

理由

  1. パブリックサブネットに配置してもセキュリティグループやネットワークアクセスコントロールリストをしっかり設定しておけば、問題になることはないから。
  2. NAT Gateway の料金が高いから。0.062 USD/hour x 配置先のパブリックサブネット数 に加え、データの転送量も 0.062 USD/GB 掛かる。(オンプレに比べれば安いんですが)

パブリックサブネットに配置するのはアンチパターンなのかとも思ったのですが、そうではないようです。
公式のにベストプラクティスにもパブリックサブネットに配置するパターンが記載されていました。
https://aws.amazon.com/jp/blogs/compute/task-networking-in-aws-fargate/

また、結論の部分にはこんな感じの記載がありました。

For running workloads that require privacy and security, use a private subnet with public internet access locked down. Or, for simplicity with an internet workload, you can just use a public subnet and give your containers a public IP address.

Google 翻訳さんで訳すと、プライバシーやセキュアな環境である必要があればプライベートサブネットを、インターネットアクセスを簡単にするためにパブリックサブネットを使用するといいんじゃないかみたいなことが書かれていました。

プライベートサブネットに配置すると NAT Gateway も置かないといけないし、ECS から外部への通信をきちんと把握していないと料金が高くなるしで、インフラの管理の難易度が上がる割にはメリットが少ないように感じました。
そのため、個人的にはパブリックサブネットでいいんじゃないかなと思った次第です。

出典

Task Networking in AWS Fargate | Amazon Web Services
AWS Fargate is a new compute engine for containers that allows you to focus on running your application without needing ...

コメント

タイトルとURLをコピーしました