東京リージョンのバケットからのオブジェクトのダウンロード速度を早くしたいという要望がありました。 端末は日本にあり、距離的に近い場合でも S3 Transfer Acceleration を使うことで速度を早くすることができないか試してみました。
やってみた
S3 Transfer Acceleration は距離的に遠いリージョンにあるバケットに対し、エッジロケーションを利用できるエンドポイントを作成し、そちらにアクセスすることで高速化できるサービスです。
以下が Transfer Acceleration のドキュメントになります。
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/transfer-acceleration.html
地理的に近いところであれば速度向上につながらないとは思いましたが、実際はどうなのか検証してみました。
# time aws s3 cp s3://test154782/Dummy-10MB.txt ./
download: s3://test154782/Dummy-10MB.txt to ./Dummy-10MB.txt
real 0m2.595s
user 0m1.207s
sys 0m0.259s
# time aws s3 cp s3://test154782/Dummy-10MB.txt ./
download: s3://test154782/Dummy-10MB.txt to ./Dummy-10MB.txt
real 0m2.368s
user 0m1.102s
sys 0m0.290s
# time aws s3 cp s3://test154782/Dummy-10MB.txt ./
download: s3://test154782/Dummy-10MB.txt to ./Dummy-10MB.txt
real 0m2.621s
user 0m1.350s
sys 0m0.219s
# time aws s3 cp s3://test154782/Dummy-10MB.txt ./ --endpoint-url https://s3-accelerate.amazonaws.com
download: s3://test154782/Dummy-10MB.txt to ./Dummy-10MB.txt
real 0m2.629s
user 0m1.472s
sys 0m0.303s
# time aws s3 cp s3://test154782/Dummy-10MB.txt ./ --endpoint-url https://s3-accelerate.amazonaws.com
download: s3://test154782/Dummy-10MB.txt to ./Dummy-10MB.txt
real 0m2.421s
user 0m1.315s
sys 0m0.197s
# time aws s3 cp s3://test154782/Dummy-10MB.txt ./ --endpoint-url https://s3-accelerate.amazonaws.com
download: s3://test154782/Dummy-10MB.txt to ./Dummy-10MB.txt
real 0m2.383s
user 0m1.223s
sys 0m0.313s
上記の結果通り、地理的に近いと意味が無さそうですね。
やはり S3 からのダウンロードを早くするには、処理を並列化する等の対応が必要なようです。
最後に
日本から日本では意味がありませんでしたが、海外リージョンにあるバケットとのやり取りの際にはかなりの高速化が図れるので、
ユースケースにある場合は、Transfer Acceleration の利用は検討できるものと思います。