AWSの負荷テストについて

アイキャッチ AWS EC2
364件のシェア(そこそこ話題の記事)

はじめに

オペレーションチームの高橋です。

AWSでは負荷テストを実施する際に事前申請は不要でしたが、
意図した負荷であってもトラフィック量によってはDoS/DDosとして検知されネットワークが遮断されることがありました。
そこでネットワーク遮断の回避の方法や負荷テストの可否について、
AWSへ確認しましたところ現在は負荷テストを行う際は実施前に承認を受ける必要があることがわかりました。

英文 (AWSより)

All AWS users are required to receive approval before any load testing. Please send detailed plans of the testing including expected peak bandwidth to the simulated events email address listed on the AWS Penetration Testing page.

申請は侵入テストのページにあります
「他のシミュレートされたイベントの承認をリクエストする」のメールアドレスに
予測されるピーク帯域を含むテスト計画の詳細を連絡します。

本ブログでは負荷テストの申請条件や申請方法についてご紹介させていただきます。

このプロセスや申請方法はあくまで現在のもので変更される可能性があります。

申請条件や注意事項

  • EC2(ELB経由でも可)、RDSインスタンスに負荷テストを行う場合
  • m1.small,t1.micro,nanoサイズのEC2インスタンスは申請不可
  • smallサイスのRDSインスタンスは申請不可
  • テスト対象はAWSアカウント所有のリソース限定
  • Dos/DDosシミュレータの利用は禁止
  • 申請者の送信元アドレスドメインがターゲットAWSアカウントの登録ドメイン/サブドメインと異なる場合は承認されない
  • インスタンスは終了(Terminated)していないこと
  • 5~7営業日で承認される

申請方法

  • 現時点ではWebフォームはないのでメールでの申請
  • 申請は英語で行う

申請内容

項目 内容
Account Name: AWSアカウント名 -
Account number(s) AWSアカウントID -
Primary Email Addresses: AWSアカウントのメールアドレス -
Additional Email Addresses to cc: CC:メールアドレス -
What type of testing will you be performing? テストの内容について HTTP Load testing for Web applications running on EC2 instances
What tools will be utilized for testing? テストで使用する具体的なツールの名称を記載。
独自のツールやスクリプトをご利用の場合はその旨を記載
JMeter
Source IP(s): ソースIPアドレス
ソースIPアドレスがAWS上にある場合は、AWSアカウントIDを併記する
IP address
IP address owned by AWSアカウントID
Target IP(s): ターゲットインスタンスのIPアドレスおよびAWSアカウントIDを記載 IPアドレス owned by AWSアカウントID
Start & End dates: 負荷テストの実施期間(承認まで5~7営業日ほどかかるので余裕をもって申請すること) 開始日時
Start Date / Time:(YYYY-MM-DD HH:MM)
終了日時
End Date / Time:(YYYY-MM-DD HH:MM)
How much traffic do you plan to generate during testing? Webサイトの試験の場合は、サイトへのアクセス数の見積もりを記載
HTTPによる負荷テストでない場合はリクエスト数等に類する値を記載
1,000,000 hits during testing period.
What is your expected peak load? (i.e. xx Gbps) ピーク時の帯域を記載 2Gbps
How much total expected bandwidth do you plan on generating during the entire course of our test? (i.e. xx GBytes) テストで使用する総トラフィック量(インスタンスあたりのトラフィック×インスタンス数の値を記入)を記載
複数インスタンスを使用する場合、テストで使用する1インスタンス単位のトラフィック量を記載
40GBytes
Instance IDs involved: テストプログラムが実行されるインスタンスがAWS上にある場合はインスタンスID、AWSアカウントIDを併記
ターゲットインスタンスのインスタンスIDとAWSアカウントIDを記載、インスタンスがELB配下にある場合はELB名を記載
(Source) i-0123456789abcdef0, i-0123456780abcdef1 owned by AWSアカウントID
(Target) i-0123456789abcdef2, i-0123456780abcdef3 behind of ELB: elb-name owned by AWSアカウントID
If you are testing more than one region, please list expected bandwidth per region: 負荷テストで2リージョン以上利用する場合はリージョンごとのトラフィック量を記載 Only in ap-northeaset-1

メールでAWSへ連絡する(参考)

宛先:aws-security-simulated-event@amazon.com

件名:(例)Load test request on AWS

本文:

Hello,

We will request application Load testing.
The application contents are as follows;

Account Name:
***

Account number(s):
***

Additional Email Addresses to cc:
***

What type of testing will you be performing?:
HTTP Load testing for Web applications running on EC2 instances via ELB.

What tools will be utilized for testing?:
JMeter

Source IP(s):
.../32
.../32

Target IP(s):
There isn't have fixed IP address, because test target is ELB.
DNS Record Name of ELB: ***

Start & End dates:
2017/03/01 〜 2017/03/07

How much traffic do you plan to generate during testing?:
Total *** hits during testing period.

What is your expected peak load? (i.e. xx Gbps):
*** Mbps

How much total expected bandwidth do you plan on generating during the entire course of your test? (i.e. xx Gbps):
*** GBytes

Instance IDs involved:
(Source) i-***, i-*** owned by 0123456789ab
(Target) i-***, i-***, i-*** behind of ELB: alb owned by 0123456789cd

If you are testing more than one region, please list expected bandwidth per region:
Only in ap-northeast-1

Sincerely,

まとめ

今回は負荷テストの申請方法についてご紹介しました。
ELB経由で負荷テストを実施する場合はELBの暖機申請も行うようにしてください。

参考URL

侵入テストのページ

AWS Cloud Roadshow 2017 福岡