Pocket

まずはNAT Gatewayの膨大な通信費を見てほしい….(驚愕)

ECS/FargateECS Scheduled Tasksを運用していると、NAT Gatewayの通信費が膨大にかかってしまうことがあると思います。今回はこちらをどのようにコストを削減したのかブログしたいと思いますので、ぜひ参考にしてみてください。まずは経緯から!


経緯

改善する前の構成図を書いてみました。ECS/Fargateで動作しているAppコンテナ(Private subnet)ですが、デプロイ時やECS Scheduled TasksでのバッチはNAT Gateway経由してECRからDocker imageをpullしてきます。例えば、ECS Scheduled Tasks毎分のバッチを動かすと、イメージのサイズが1GBあると想定して、1分おきに実行すると1GBのダウンロード通信費が発生してしまうわけです。

また、CloudWatch Logsで出力されるログもコストがかかります。EC2では特に考えなくていいのですが、ECS/Fargateの場合はホストがそもそもないということから、この問題に大打撃するわけですね。これをほっておくと月何十万という費用が発生してしまうので対策を調べてみました。

ちなみにコンテナからECRにnslookupで確認すると確かにグローバル見てますね..


そのトラフィック、NATゲートウェイを通す必要ありますか?適切な経路で不要なデータ処理料金は削減しましょう

https://dev.classmethod.jp/articles/reduce-unnecessary-costs-for-nat-gateway/

  • VPC エンドポイントの利用

・ゲートウェイタイプ
VPC エンドポイント料金およびデータ処理料金は無料です

・インタフェースタイプ
VPC エンドポイントあたり $0.014/h
データ処理料金 $0.01/GB
NAT Gateway 同様にデータイン/データアウトに関わらず発生しますが、NAT Gateway の 6分の1 のデータ処理料金に削減できます
多くの AWS サービスで同一リージョン、同一 AZ 間の通信は無料で利用できますが、VPC エンドポイント経由の場合は $0.01/GB の料金がかかります

  • 改善後の構成

ECSとECRがPrivateLinkに対応していることから、VPCエンドポイントをかますことで外部のネットワークを経由せずに、プライベートからECRにアクセスできるようになります。コストもNAT Gatewayの 6分の1 のデータ処理料金に削減できるので、手っ取り早く設定できそうです。早速Terraformからいってみよう!


Terraform

https://docs.aws.amazon.com/ja_jp/AmazonECR/latest/userguide/vpc-endpoints.html

  • security-group.tf

  • vpc_endpoint.tf

  • com.amazonaws.region.ecr.api
  • com.amazonaws.region.ecr.dkr
  • com.amazonaws.ap-northeast-1.s3
  • com.amazonaws.ap-northeast-1.logs

上記4つエンドポイントプライベートサブネットに設定しましょう。また、Private DNSを有効にしましょう。S3はGateway型セキュリティーグループは新規で作成し、HTTPSを許可しないとECRにログインできないので忘れずに!


    結果

    • プライベート向いてるか確認

      大成功!!


      まとめ

      とりあえずECS/Fargateを運用している方は必須の設定になりますね。これはなかなかの盲点でした…気づいてよかった!VPCエンドポイントを設定せずに毎分でバッチ回してたらとんでもないことになりますので、この機会にNAT Gatewayの通信費をコスト削減しましょう!皆さんもお気をつけて!!!

      ※毎分バッチでも外部通信しているものは通信費用増えるので注意

      参考:https://noname.work/?p=2386

      Pocket

      カテゴリー: AWSECS/Fargate

      adachin

      1989年生まれのSRE。ホスティングから大規模なアドテクなどのインフラエンジニアとして携わる。現在はサービスの信頼性向上、DevOps、可用性、レイテンシ、パフォーマンス、モニタリング、オブザーバビリティ、緊急対応、AWS/Azureでのインフラ構築、Docker開発環境の提供、Kubernetes保守、インフラコード化、新技術の検証、リファクタリング、セキュリティ強化などを担当している。個人事業主では数社サーバー保守とベンチャー企業のSREインフラコンサルティングやMENTAで未経験者にインフラのコーチング/コミュニティの運用を実施している。また、「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。

      0件のコメント

      コメントを残す

      このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください