Amazon S3 Transfer Accelerationとは
Amazon S3 Transfer Accelerationは、クライアントとS3バケット間でファイル転送を高速かつ簡単で安全にできる
ユースケース
・1つのバケットに世界中からファイルのアップロードが行われる場合
大陸間で定期的にギガバイトからテラバイト単位でデータを転送する場合
インターネット経由のため、帯域幅等は考慮できないように見える
要件
・バケット名に「.」をが含まれていないこと
・Transfer Accelerationは仮想ホスト形式のリクエストでのみサポートされます
例
https://bucket-name.s3.region-code.amazonaws.com/key-name
設定方法
※有効後は、無効にもできます。
料金
Amazon CloudFront のグローバルに分散したエッジロケーションを利用する
また、S3の転送量にプラスして料金が上乗せされるらしいです
※ここも少し実機動かして確認したいです
S3にデータ転送する場合は、無料ですがダウンロードする際は課金されます
よって、ダウンロード料金+Transfer Accelerationが発生するに見えますね
米国、欧州、日本の AWS エッジロケーションによる高速化 0.04 USD/GB
https://aws.amazon.com/jp/s3/pricing/
実際に動かしてみる
[cloudshell-user@ip-10-130-48-216 ~]$ ls -al test20240222
rw-r--r--. 1 cloudshell-user cloudshell-user 104857600 Feb 22 16:33 test20240222
[cloudshell-user@ip-10-130-48-216 ~]$ time aws s3 cp ./test20240222 s3://bucket名.s3-accelerate.amazonaws.com/ \
> --endpoint-url https://bucket名.s3-accelerate.amazonaws.com
upload: ./test20240222 to s3://bucket名.s3-accelerate.amazonaws.com/test20240222
real 0m3.297s #コマンドの開始から終了までの経過時間
user 0m1.610s #プログラムがCPUを使用した時間
sys 0m0.472s #システムがCPUを使用した時間
[cloudshell-user@ip-10-130-48-216 ~]$ time aws s3 cp ./test20240222 s3://バケット名 upload: ./test20240222 to s3://bucket名/test20240222
real 0m3.080s #コマンドの開始から終了までの経過時間
user 0m1.525s #プログラムがCPUを使用した時間
sys 0m0.544s #システムがCPUを使用した時間
結果
何度か100MBのファイルをS3への転送をデフォルトで転送するパターンとTransfer Accelerationを利用しファイルを転送するパターンで検証した結果、CloudFrontを余計に経由するからか、Transfer Accelerationを利用し、ファイル転送した方が遅くなった
CloudFrontの仕様を理解していない
インターネット経由だから正確な値がでない
リージョン等の考慮していない
東京から東京リージョンS3バケットへファイル転送する場合には、遅い結果になるのかもしれない
Transfer Accelerationを有効化した際に、エンドポイントが表示されます
あとでゆっくり読みたい
https://developers.play.jp/entry/2023/03/02/194851