Amazon EC2からMongoDB Atlasへの3つの接続方法、利用料金、考慮事項をまとめてみた

2023.06.13

はじめに

Amazon EC2 からMongoDB Atlasへの接続方法には、以下の3つの方法があります。

  • インターネット経由
  • VPC ピアリング経由
  • Private Endpoint経由

どれを選択するとよいか迷うことがあったため、3つの接続方法の概要、利用料金、考慮事項についてまとめました。

接続方法

インターネット経由

インターネット経由では、EC2から直接インターネット経由でMongoDB Atlasに接続します。

セキュリティを強化するためには、MongoDB Atlas側でIP制限を設定する必要があります。

サーバー数が固定の場合

サーバー数が固定の場合、各EC2にElastic IPを付与することで、Atlas側でIP制限を設定できます。

サーバー数が可変の場合

ただし、EC2がAuto Scalingなどでサーバー数が変わる場合、NAT Gatewayを設置してIPを固定する必要があります。

VPC ピアリング経由

VPC ピアリング経由は、下記の構成の通り、自身のアカウントのVPCと、MongoDB Atlas側で作成されるVPCを、ピアリング接続します。

構成図では、左側のVPCは自分のアカウント内のVPCで、右側がMongoDB AtlasのアカウントのVPCです。

MongoDB Atlas側でEC2をアタッチしたセキュリティグループを指定することで、そのセキュリティグループのみを許可できるように設定可能です。

VPC ピアリング経由のMongoDB Atlas への接続方法は、以下のブログで紹介されています。

Private Endpoint経由

Private Endpoint 経由は、下記の構成の通り、自身のアカウント内に作成したEC2からVPCエンドポイント経由で、MongoDB Atlasに接続します。(構成図はMongoDBのドキュメントを引用

構成図では、左側のVPCは自分のアカウント内のVPCで、右側がMongoDB AtlasのアカウントのVPCです。

Private Endpointという言葉は、AWSの用語ではなく、MongoDB Atlasの用語になります。

構成図の右側にあるLoad Balancerは、MongoDB Atlas側で作成され、自身のAWSアカウントのVPCエンドポイントからLoad Balancerに対して、一方向の接続が確立されます。

Private Endpoint経由のMongoDB Atlas への接続方法は、以下のブログで紹介されています。

料金まとめ

料金は、東京リージョンの価格で算出します。

あくまでも比較できるようにするため、EC2の利用料金など、接続方法に関わらず必要な料金は算出しません。

インターネット経由 サーバー数が固定の場合

AWSの料金

Amazon EC2 からインターネットへのデータ転送料金がかかります

  • データ転送送信の料金
    • 0.01 USD/GB

インターネット経由 サーバー数が可変の場合

AWSの料金

NATGatewayの料金がかかります。

  • 利用料金(1台あたり)
    • 0.062 USD/時間
  • 処理データ
    • 0.062 USD/GB

VPC ピアリング経由

AWSの料金

VPC ピアリング接続間の受信側と送信側、それぞれデータ転送料金がかかります。

  • データ転送送信
    • 0.01 USD/GB
  • データ転送受信
    • 0.01 USD/GB

Private Endpoint経由

AWSの料金

VPCエンドポイントの料金がかかります。

  • 利用料金(各AZの1つあたり)
    • 0.014 USD/時間
  • 処理データ
    • 0.01 USD/GB

Atlasの料金

MongoDB AtlasのPrivate Endpointの料金表を参照しました

  • 利用料金
    • 0.0486 USD/時間
    • Private Endpointをデプロイするリージョンごとに時間単位で課金
  • キャパシティユニットでの料金
    • 0.012 USD/ユニット

キャパシティユニットでの料金は、以下の3つのトラフィックタイプのうち、1時間あたりの使用量が最も多いトラフィックタイプに対してのみ料金が請求されます。

3つのトラフィックタイプは以下の通りです

  • 新たに確立されたコネクションまたはフロー:1秒間に新しく確立されたコネクションまたはフローの数。
  • アクティブなコネクションまたはフロー:1分間にサンプリングされる、同時接続数またはフローのピーク値。
  • 処理されたバイト数:プライベートエンドポイントが処理したバイト数をギガバイト(GB)単位で表示します。

TCPトラフィックの場合、キャパシティユニットは以下の通りです

  1. 新しい接続またはフロー:毎秒800個の新しいTCP接続
  2. アクティブな接続またはフロー:100,000個のアクティブなTCPコネクション(1分ごとにサンプリングされます)
  3. 処理バイト数:1時間あたり1GB

例えば、以下の表の場合、ユニット値が一番大きい3.0がキャパシティユニットに適用されますので、
0.012USD/ユニット * 3.0 = 0.036 USDと算出されます。

トラフィックタイプ ユニット値
新しい接続またはフロー 1,600 2.0
アクティブな接続またはフロー 50,000 0.5
処理バイト数 3.0GB 3.0

考慮事項

考慮事項は、細かいところを上げるときりがないので、特筆すべき点に絞りました。

インターネット経由 (サーバー数が可変の場合)

  • NAT Gatewayは、同時接続数が55000です。
    • Public な NAT Gatewayであれば Elastic IP アドレスを付与することで、同時接続最大数を 4400000まで増やすことが可能です。
  • NAT Gatewayは、帯域幅は、5 Gbps の帯域幅をサポートし、100 Gbps まで自動的に拡張します。
  • NAT Gatewayは、1 秒あたり 100 万パケットを処理でき、自動的に 1 秒あたり 1,000 万パケットまで拡張します。

VPC ピアリング経由

  • MongoDB AtlasがホストされたVPCのCIDRと、重複するAWSアカウントのVPCは選択できません
    • MongoDB AtlasがホストされるVPCのCIDRはランダムに選択されます。
  • AWS VPCでは、DNSホスト名とDNS解決を有効にする必要があります

Private Endpoint経由

  • VPCエンドポイントは、最大 10 Gbps の帯域幅をサポートし、最大 100 Gbps まで自動的にスケールアップします。
  • VPCエンドポイントの最大パケット容量は、8500 バイトの MTU までです
    • 最大送信単位(MTU)とは、VPCエンドポイントを通じて送信できる最大のパケットサイズ(バイト単位)を指します。

最後に

料金だけでみると、MongoDB Atlasへの接続方法は、サーバー数が固定の場合、インターネット経由がよく、サーバー数が可変の場合、VPC ピアリング経由がよいです。

考慮事項も踏まえた上で、実際の条件に合わせて選択するのがよいので、ぜひ参考にしてみてください!

参考