セッションマネージャーを利用してローカル PC と パブリックサブネットにある EC2 間でデータ転送したときのデータ転送料を調べてみた
前回、プライベートサブネットにある EC2 へ、セッションマネージャーを越しに SCP や rsync でデータ転送すると費用はいくらかかるのか調べていました。検証した結果、インターネットから Systems Manager 間に AWS からのインターネットへのアウト料金はかからないことがわかりました。そこから新たな疑問が生まれたためまた検証しました。
新たな疑問
パブリックサブネットにある EC2 へ、セッションマネージャーを越しに SCP や rsync でデータ転送すると転送料金はいくらかかるのか?を検証した記録です。
確認結果
公式ドキュメントからは判断つかなかったため、データ転送した結果の請求額から判断しています。
- セッションマネージャーを経由させるとAWS からのインターネットアウトの料金は発生しない
- セッションマネージャーを経由させると転送速度が顕著に低下する
- 価格は東京リージョン(
ap-northeast-1
)の2022年7月4日時点の料金を表記しています
ファイル転送してみる
プライベートサブネットの検証と同じくローカル PC で10GB サイズのダミーファイルを作成し、EC2 へアップロード、ダウンロードして課金される対象を CloudWatch のメトリクスと、請求書から確認します。
$ ls -lh total 20971520 -rw-rw-r-- 1 ohmura.yasutaka staff 10G 6 11 11:27 10GB.dummy
Internet Gateway 編
ローカル PC からパブリックサブネットの EC2 へセッションマネージャーで接続する経路は図の状態です。
アップロード
セッションマネージャー + rsync でアップロードしました。プライベートサブネットの検証のときと同様に転送速度は遅いです。
$ rsync -ahv --partial --append --progress -e "ssh -i ../../sandbox-key.pem" ./10GB.dummy ec2-user@i-0e33034b31ae0949f:/scratch building file list ... 1 file to consider 10GB.dummy 10.74G 100% 833.93kB/s 3:29:33 (xfer#1, to-check=0/1) sent 10.74G bytes received 42 bytes 853.67K bytes/sec total size is 10.74G speedup is 1.00
ダウンロード
EC2 へアップロードしたファイルを今度はダウンロードします
$ rsync -ahv --partial --append --progress -e "ssh -i ../../sandbox-key.pem" ec2-user@i-0e33034b31ae0949f:/scratch/10GB.dummy ./10GB.dummy.down receiving file list ... 1 file to consider 10GB.dummy 10.74G 100% 921.64kB/s 3:09:37 (xfer#1, to-check=0/1) sent 38 bytes received 10.74G bytes 943.64K bytes/sec total size is 10.74G speedup is 1.00
確認結果
CloudWatch のメトリクスから前半のアップロード、後半のダウンロードのグラフを確認します。Internet Gateway のメトリクスがないため、EC2 のネットワークインタフェースを確認してみます。
メトリクス | 説明 |
---|---|
NetworkIn | すべてのネットワークインターフェイスを通じ、このインスタンスによって受信されたバイトの数。このメトリクスは、1 つのインスタンスへの受信ネットワークトラフィックの量を表しています。 |
NetworkOut | すべてのネットワークインターフェイスを通じ、このインスタンスから送信されたバイトの数。このメトリクスは、1 つのインスタンスからの送信ネットワークトラフィックの量を表しています。 |
インスタンスの利用可能な CloudWatch メトリクスのリスト表示 - Amazon Elastic Compute Cloud
青い線はローカル PC から EC2へファイルをアップロードしたときのトラフィックを確認できます。
オレンジの線は EC2 からローカル PC へファイルをダウンロードしたときのトラフィックを確認できます。
プライベートサブネットの検証と同様に Systems Manager とオンプレ間のインターネットアウトの料金は適用されていません。
Before
After
EC2 が起動代は請求書に載っているため、明細が更新されたことは確認できました。
判明したこと
- Internet Gateway と Systems Manager 間で転送料は発生しない
- Systems Manager とオンプレ間のインターネットアウトは発生しない
- プライベートサブネットの検証と同様
セッションマネージャーを使わないで転送
EC2 のパブリック IP を指定してセッションマネージャーを利用せず、インターネット経由のファイル転送します。インターネットから AWS への転送は無料ですので AWS からインターネットへのインターネットアウトを確認したくダウンロードのみ試します。
転送速度は格段に早いです。約10倍の速度差があります。転送時間も約10分の1になりました。
$ rsync -ahv --partial --append --progress -e "ssh -i ../../sandbox-key.pem" ec2-user@54.168.244.141:/scratch/10GB.dummy ./10GB.dummy.down receiving file list ... 1 file to consider 10GB.dummy 10.74G 100% 9.10MB/s 0:18:45 (xfer#1, to-check=0/1) sent 38 bytes received 10.74G bytes 9.53M bytes/sec total size is 10.74G speedup is 1.00
確認結果
CloudWatch の EC2 のネットワークインタフェースのメトリクスからダウンロードのグラフを確認します。セッションマネージャー + rsync と比較するとトラフィック量は約1.7倍の値を記録しています。転送時間が10分の1でしたしね。
Before
After
EC2 からローカル PC へファイルを転送(ダウンロード)したので AWS からのインターネットアウトが適用されました。しかし、無料枠に吸収され費用は発生しませんでした。
判明したこと
- Systems Manager とインターネットの堺のところで帯域制限されているものと思われる
まとめ
セッションマネージャーを経由させるとAWS からのインターネットアウトの料金は発生しないことを活かし、パブリックサブネットの EC2 を利用してファイル転送すると、AWS からのデータイン・アウトの転送料が発生しなくなる。その反面、セッションマネージャーを経由させると転送速度が顕著に低下する。
セッションマネージャーの転送速度低下については、以下の3パターンとも一律同じ速度のため接続経路による問題ではなくセッションマネージャーで接続先の Systems Manager 側に帯域制限が入っているものと推測される。
- Internet Gateway
- NAT Gateway
- VPC エンドポイント
おわりに
プライベートサブネットの EC2 とセッションマネージャー経由でファイル転送したときの転送料金を検証をしてみて、パブリックサブネットの場合も気になったので確認してみました。今回の検証で転送速度は低下することを確認できたのが新たな収穫です。
インターネットから System Manager への接続する主なユースケースはシェルアクセス、フリートマネージャによるリモートアクセス、オンプレのサーバに SSM Agent をインストールして Systems Manager で管理するといったところではないでしょうか。
これらの通信はインターネット帯域を大きく消費しないこともあり、帯域に制限があってもおかしくはないかなといった感想です。