ネット回線が遅いので AWS(Amazon Web Services) でネットサーフィンする

自宅に光回線を引き込めないのでネットが遅くて辛い。ふと「AWS 上でインスタンスつくって、そこでネットサーフィンすればよくね?」と思った。そうしたら AWS のインフラとして整備されてる高速回線が使える。快適にネットサーフィンできそうだ。

というわけで、AWS をネットサーフィン用途で使うための必要手順やら実験結果やら何やらを雑多にまとめてみた。

2018/06/06 現在、本記事は未完成です (2018/06/20 追記) 東京リージョンとシンガポールリージョンの通信速度を比較した内容を追加。

結論

  • 使い方イメージ
    • EC2インスタンス(Windows)に自PCからリモートデスクトップで入る
    • 入った先でネットサーフィンする
  • 通信速度
  • 料金
    • インスタンスは medium(メモリ4GB) だと 8.6円/時間
    • 通信量は 17.5円/GB
  • まだ調べてないこと
    • リモートデスクトップで遅延(特に音ズレ)無く動画視聴できるか?
    • EC2インスタンスに繋ぐまでの回線が遅い場合、実用に耐えうるか?
    • VPC 等の設定(特にセキュリティ)はこれで十分か?悪用されないか?

前提

背景

ネットが遅すぎて辛い。しかも改善もできないっぽくて、

  • 自宅のネット回線が遅い。住民が集まってる時間帯だと YouTube の動画再生がカクつくレベル
  • マンション側の制約で光回線を引き込めない
  • WiMAX は繋がるが、YouTube はさておきニコニコ動画や他動画サイトはまだカクつく

こんな感じ。

AWS でネットサーフィン?

AWS 上のインスタンスは AWS のインフラとして整備された高速回線で通信する ので、ネットサーフィンにも向いてるんじゃね?と思ったわけです。

今回の目的

支障無いレベルでネットサーフィンしたい。具体的には以下。

  • YouTube やニコ動を快適に視聴できる
  • 100MBのファイルダウンロードが数十秒以内に済む(※1)

※1 ネットサーフィンには無関係だが回線速度を知る目安になるため目標にする

利用イメージ

ネットサーフィンの利用イメージは以下のとおり。

  • 1: AWS アカウントでログインする
  • 2: EC2 インスタンスを起動する
  • 3: リモートデスクトップで 2 のインスタンスにログイン
  • 4: ネットサーフィン
  • 5: 終わったら 2 のインスタンスを停止する

いちいち停止させてるのが面倒だが、稼働させてると料金がバカにならない(24Hフル稼働だと月1万円超えてくる)ので仕方ない。

環境を整える

(1) アカウント登録

AWS を使い始めるにはアカウント登録が必要。クレジットカード情報入力必須。

Q: 無料で使える?

Ans: 使えない

一応無料枠はあるが、ささやかなものである。

無料枠を超えたら自動で課金が発生するため もし何らかのミスやクラッキング被害により大量使用してしまった(されてしまった)場合、えぐい金額が請求される ことになる。セキュリティと運用は気をつけなきゃいけない。

事例:

ただ不正利用については「AWS アクセスキー等を GitHub の Public リポジトリに公開しちゃった」時に起きるので、今回のケース(インスタンスにログインしてネットサーフィンするだけ)では起きない。もちろん AWS アカウントやら後述するキーペアファイルやらはちゃんと管理するとして。

心配するべきは「インスタンスをずっと立ち上げっぱなしにしてて料金が加算され続けた」系だろう。使い終わったら停止する、など運用面で気をつけるしかない。

(2) 今回作りたい構成

  • EC2インスタンス一台

AWS には多数のサービスがあるのが、使うのは EC2 インスタンス一台のみ。こいつにリモートデスクトップでログオンして、あとはネットサーフィンするだけ。

たぶん AWS 利用としては最もシンプルな部類だと思う。別に Web サービスを運営するわけじゃないしね。

設定手順

さて AWS でインスタンスを実際に作っていくところだが、最低限でも結構煩雑だ。ここでは要点だけ書く。

  • 1: VPCをつくる
    • vpc1
  • 2: Internet Gateway をつくる
    • ig1
    • vpc1 にアタッチする
  • 3: Subnet をつくる
    • subnet1
  • 4: Default route table を設定する
    • 送信先 0.0.0.0/0 にターゲット ig1 を設定
  • 5: EC2 インスタンスをつくる
    • EC2 > インスタンス作成 > コミュニティ AMI から Windows イメージ探す
    • 例: Windows 2016 Japanese
    • インスタンスタイプは medium(メモリ4GB) が良いかと
    • vpc1, subnet1 を指定する
    • 自動割り当てパブリックIPは有効に(これないとリモートで繋げない)
    • 新しいセキュリティグループつくる
      • sg1
      • RDP(3389) TCP(6) 3389 0.0.0.0/0 を設定する(デフォで入ってるはず)
    • 新しいキーペア(秘密鍵)を作成してダウンロードしておく
  • EC2 インスタンスの追加設定
    • アクション > ネットワーキング > セキュリティグループの変更 から default も追加しておく( これしないとセキュリティ的にガバガバ )
    • アクション > Windows パスワードの取得 からログオンユーザー名(Administratorのはず)、パスワードとログオン先IPを手に入れる

これで整った。手に入れた IP とパスワードを使ってリモートデスクトップにてログインできる。

料金

続いて料金について。

前置き

まずは予備知識。

厳密な計算は非常にややこしい(この手の記事や「料金計算サービスつくってみました」は山ほどある)ので諦める。

料金は公式サイトにてまとめられている:

上記はオンデマンド(使った時間分だけ請求する)の料金だが、他にも色んな利用形態がある。ここでは割愛。

またネットを調べると要約版もちらほら見つかる。

公式サイトからざっくり計算してみた

オンデマンドインスタンスの料金 ページから試算してみた。

例: メモリ 4 GB の Windows マシンで週に10H程度(月50Hとする)使う場合

  • EC2インスタンス代が 8.5892 * 45 = 429.46 ≒ 430円/月
  • データ転送分は 17.44円/GB かかる

まとめると、月かかる料金は 430 + 17.44*(通信GB量) 円となる。

以下に GB 毎にまとめてみた。

通信GB量 月額料金
7 552.08
10 604.4
30 953.2
100 2174
300 5662
1024(1TB) 18288.56

月30GBくらいまでは1000円以内で済む。300GBになると5600円超えてきて一般的なインターネット料金くらいにはなる。1TB にもなると割高。

参考: EC2

Windows の場合は以下。

※東京リージョン、1ドル109円、一月24時間*30日として計算

タイプ メモリ 料金($/時) (円/時) (円/日) (円/月)
t2.micro 1[GiB] 0.0198 2.1582 51.7968 1553.904
t2.small 2[GiB] 0.0396 4.3164 103.5936 3107.808
t2.medium 4[GiB] 0.0788 8.5892 206.1408 6184.224
t2.large 8[GiB] 0.1496 16.3064 391.3536 11740.608

micro や small だとメモリ少なすぎて Windows を動かす事自体が苦しい。large はネットサーフィン用にしては贅沢だと思う。medium が無難か。 1時間立ち上げてると8.6円かかる 計算に。

参考: データ通信

結論: 17.5円/GB くらいかかる

以下内約。

EC2インスタンスへのデータ受信:

  • パブリックまたは Elastic IPv4 アドレスの使用: $0.010/GB (1.09円/GB)

EC2インスタンスからのデータ送信:

  • パブリックまたは Elastic IPv4 アドレスの使用: $0.010/GB (1.09円/GB)

EC2インスタンスからインターネットへのデータ送信:

  • もし 1GB/月 以内なら: 無料
  • もし 10TB/月 以内なら: $0.140/GB (15.26円/GB)
  • もし 40TB/月 以内なら: $0.135/GB (14.715円/GB)

まとめると、

  • 今回はパブリックIPを一つ使っているので、まず 1.09 + 1.09 = 2.18 2.18円/GB かかる
  • インスタンスからデータ通信する分は、ネットサーフィンで 40TB いくことは無いと思うので 10TB/月 として 15.26円/GB かかる
  • 合わせて 17.44円/GB かかる

Q: ネットの回線速度はどれほど?

Ans: ケースバイケースだろうが手元で調べた結果を載せる

BNR スピードテスト 回線速度/通信速度 測定 で測定してみた。

シンガポールリージョン(2018/06/06)

  • 下り
    • 最高データ転送速度 24.04Mbps (3.00MB/sec)
    • 平均データ転送速度 11.18Mbps (1.39MB/sec)
  • 上り
    • データ転送速度 12.47Mbps (1.55MB/sec)
    • アップロードデータ容量 800kB

ネットサーフィンでは下り速度が重要だが、十分なポテンシャルだと思う。

ちなみに 145MB の Atom パッケージ をダウンロードしてみたところ、15秒くらいでサクっとサウンロードできた。

実家の光回線環境(2018/06/07)

実家で契約している光回線環境(基本的に通信速度で不満を感じることはない)でも試してみた。

  • 下り
    • 最高データ転送速度 78.58Mbps (9.82MB/sec)
    • 平均データ転送速度 46.67Mbps (5.83MB/sec)
  • 上り
    • データ転送速度 60.60Mbps (7.57MB/sec)
    • アップロードデータ容量 1000kB

光回線レベルには及ばない模様。

東京リージョン(2018/06/20)

  • 下り
    • 最高データ転送速度 180.27Mbps (22.53MB/sec)
    • 平均データ転送速度 103.08Mbps (12.88MB/sec)
  • 上り
    • データ転送速度 216.21Mbps (27.02MB/sec)
    • アップロードデータ容量 1000kB

速い!

しかし 145MB の Atom パッケージ をダウンロードしてみたところ、1分くらいかかってる。シンガポールリージョンより遅いのは github.com サーバーとの位置関係だろうか(東京で下り/上りが速いのも回線テストサイトが国内サーバーだからだろうか)。

その他調べたいこと

  • EC2インスタンス上で動画再生して音声を聞き取れるか
  • 聞き取れた音声に音ズレがないか
  • セキュリティ(default セキュリティグループ)はこれでいい?
    • AWS 側で用意してくれてるデフォ設定なので大丈夫だと思うけど……
  • 可用性の担保はどうする?
    • AWS側のメンテナンスやら何やらで使えないケースがあるからどうするって話
    • 普通は複数台インスタンスをアベイラビリティゾーンを分けて置いたりするが、たかがサーフィン用途でそこまでやるのも。。。(料金も倍以上になるし)

おわりに

まだまだ調査途中だが、案外イケんじゃねえか?って気がしてきた。