Amazonでギフトを贈ろう!

WindowsでポリシーベースのQOSを使ってS3へのアップロードスピードを帯域制御する方法

ども。あいしんくいっと(@ithinkitnet)です。

AWSを使っていると、EC2と並んでよく使うサービスの一つとしてS3が挙げられると思います。
S3へのデータアップロード手段は色々とありますが、個人的にはawscliを使ってアップロードすることが多いです。
このawscliはけっこう賢くって「マルチパートアップロード」と呼ばれる仕組みで、自動的にデータを分割して高速でデータアップロードをしてくれるのですが、NW帯域をやたらと消費してしまいます。

データアップロードが早いのは嬉しいことなのですが、プライベートならまだしも業務でデータアップロードする場合、NW帯域を食いつぶしてしまうと他の処理にも影響が出てしまうのでよろしくありません。
そんなときに役立つのが、Windowsに標準で用意されている「ポリシーベースのOQS」と呼ばれる仕組みを使った帯域制限です。
コレを使えば、アウトバウンドの通信に対して帯域制限をかけることが可能になるのでとっても便利です。
では、使い方を見ていきましょう。

帯域制限する前の挙動を確認

帯域制限しない場合、どのくらいの速度でデータアップロードされるのか確認しておきます。
では、EC2(WindowsServer2012R2)からS3へawscliを使用して5GBのデータファイルをアップロードしてみます。
windows-s3upload-qos-1

アップロード中にタスクマネージャーから見たイーサネットの状態
windows-s3upload-qos-0上記の通り、送信が468Mbps!!!とNW帯域があったらあるだけモリモリ喰っちゃうワケなんですよね・・・(笑)
このままでは良くも悪くもNW帯域を圧迫してしまいます。
何も考えずに早くデータアップロードしたい!って場合は良いんですけどね・・・。

 

ポリシーベースのQOSを設定

では、ポリシーベースのQOSを設定してみます。
今回はテストとして、アウトバウンドの通信全てに100MB固定で帯域制御を設定したいと思います。

グループポリシーエディタ起動

「ファイル名を指定して実行」にて「gpedit.msc」と入力して「グループポリシーエディタ」を起動します。
windows-s3upload-qos-2

グループポリシーエディタが起動したら、[ローカルコンピューターポリシー] – [Windowsの設定] – [ポリシーベースのQoS]を右クリックして、「新規ポリシーの作成」を選択します。
windows-s3upload-qos-3

ポリシー名を「s3upload-control」と入力、「DSCP値~」のチェックを外し、「出力方向のスロットル率~」にチェックを入れて「100Mbps」とします。
windows-s3upload-qos-4-

「次の実行可能ファイル~」をチェックして「aws.exe」と入力し、「次へ」を押下します。
windows-s3upload-qos-12

適用対象にS3のエンドポイントを指定し、「次へ」を押下します。
エンドポイントは指定出来ないので逆引きしてIPを確認し、大きめのサブネットでざっくり設定します。
(S3のIPは固定ではない模様 参考URL:https://forums.aws.amazon.com/thread.jspa?threadID=75838
windows-s3upload-qos-7-1

そのまま「次へ」を押下します。
windows-s3upload-qos-11

これで「ポリシーベースのQos」の設定は完了。
windows-s3upload-qos-9

 

ポリシーベースのQos設定後の確認

では、事前に確認したのと同様にEC2(WindowsServer2012R2)からS3へawscliを使用して5GBのデータファイルをアップロードしてみます。
windows-s3upload-qos-1

すると、キレイに100Mbpsとはいかないものの、S3へのデータアップロードに対してQoS制御がかかっていることが確認出来ました。
windows-s3upload-qos-10

Qosを設定することによってNW帯域を食い潰す心配がなく、使用出来る帯域が限られている場合は非常に有用な設定なので知っておいて損は無い設定だと思います。

以上、あいしんくいっとでした。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)