AWS Lambdaがスケールアウトしているところの確認
環境
下記の Lambda を API Gateway からの呼び出し先に指定してある。
- 実行されると /tmp 配下にランダムなファイル名のファイルを生成する Lambda を作成する
目的
- 同じLambdaを実行している間、Lambdaを実行しているコンテナが使いまわされていること
- 同時アクセス数が増えたりした場合、Lambdaを実行している環境がスケールアウトされていくこと
を確認する。
具体的には下記で確認。
- 同じコンテナが使いまわされている場合は、/tmp にファイルが増えていく。
- スケールアウトされた場合、 その時の /tmp 配下は1つしかファイルがない状態になる。
やってみる
1つのURLをシーケンシャルに10回叩く
ab -n 10 -c 1 https://xxxxxxxxxxx.execute-api.ap-northeast-1.amazonaws.com/dev/xxxxx
ログ確認
作成されるログストリームは1つだけ
実行結果ログも/tmpの中にファイルが10個ある状態
※Lambdaの中で /tmp の配下をlsした結果をログに出してます。。
/tmp
['test1_5591.txt', 'test1_9376.txt', 'test1_9482.txt', 'test1_4822.txt', 'test1_7072.txt', 'test1_9011.txt', 'test1_3376.txt', 'test1_1117.txt', 'test1_804.txt', 'test1_8941.txt']
10
1つのURLを同時に10回叩く
ab -n 10 -c 10 https://xxxxxxxxxxx.execute-api.ap-northeast-1.amazonaws.com/dev/xxxxx
ログ確認
ログストリームが大量に生成される。
ログの中身を全部張るのはきついので文章で中身の状況説明すると、
- /tmp 配下のファイルが1ファイルのログが8つ
- /tmp 配下のファイルが12ファイルのログが1つ※
※シーケンシャルに叩いた時のコンテナが再利用されたため、abコマンド実行時点で10ファイルある状態。
※コンテナの1つ(↑のコンテナ)が2回使いまわされている。
という状況になった。
結論
- Lambdaのコンテナは使いまわされる。
- 負荷に応じて自動でスケールアウトする。
※ちなみに実行するLambdaが同じであれば、別々のURLを同時に叩いても同じ結果。