S3 Transfer Accelerationを整理してみた

# 背景・目的
Direct Connect以外の方法で大容量データをAWSにアップロードする方法を調べていました。
その中で、S3 Transfer Acceleration という機能があることをしりましたｎ
今回は、このサービスについて整理したいと思います。

# まとめ
下記に特徴を整理します。
|特徴|説明|
|:--|:--|
|S3 Transfer Accelerationとは|・クライアントとS3間で長距離にわたるファイル転送を高速、簡単、安全に行うバケットレベルの機能<BR>世界各地からS3バケットへの転送速度を最適化するように設計されている<BR>・世界中に点在する CloudFrontのエッジロケーションを利用する<BR>・エッジロケーションに到着したデータは最適化されたNWパスでS3にルーティングされる|
|利用する主な理由|・一元化されたバケットに世界中からアップロードされる<BR>・大陸間で定期的にGB〜TB単位のデータを転送する<BR>・高速な通信が必要|
|要件|・仮想ホスト形式のリクエストの必要がある<BR>・バケットは、ピリオド (".") が含まれていない DNS 準拠の名前にする必要がある<BR>・有効にした後、バケットへのデータ転送速度が上昇するまでに最大 20 分かかることがある|
|料金|データインに料金が発生する。<BR>・日本・米国・欧州の場合、0.04USD/GB<BR>・それ以外は、0.08USD/GB|


# 概要
## Amazon S3 Transfer Acceleration を使用した高速かつ安全なファイル転送の設定

下記を基に整理します。

https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/transfer-acceleration.html


> Amazon S3 Transfer Acceleration は、クライアントと S3 バケットの間で長距離にわたるファイル転送を高速、簡単、安全に行えるようにするバケットレベルの機能です。Transfer Acceleration は、世界各地から S3 バケットへの転送速度を最適化するように設計されています。Transfer Acceleration は、Amazon CloudFront の世界中に点在するエッジロケーションを利用します。エッジロケーションに到着したデータは、最適化されたネットワークパスで Amazon S3 にルーティングされます。

- クライアントとS3間で長距離にわたるファイル転送を高速、簡単、安全に行うバケットレベルの機能
- 世界各地からS3バケットへの転送速度を最適化するように設計されている
- 世界中に点在する CloudFrontのエッジロケーションを利用する
- エッジロケーションに到着したデータは最適化されたNWパスでS3にルーティングされる

> Transfer Acceleration を使用する場合、追加のデータ転送料金が発生することがあります。料金に関する詳細については、「Amazon S3 の料金」を参照してください。

- データインに料金が発生する

## なぜ Transfer acceleration を使用するのですか?
> さまざまな理由で、バケットに対して Transfer Acceleration を使用することが推奨されます。
> - 一元化されたバケットに世界中のお客様がアップロードします。
> - 大陸間で定期的にギガバイトからテラバイト単位のデータを転送する。
> - Amazon S3 にアップロードする際に、インターネット経由で利用可能な帯域幅をすべて使用することはできません。

利用する主な理由は下記の通り
- 一元化されたバケットに世界中からアップロードされる
- 大陸間で定期的にGB〜TB単位のデータを転送する
- 高速な通信が必要

## Transfer Acceleration を使用するための要件
> S3 バケットで Transfer Acceleration を使用するための要件を以下に示します。
> - Transfer Acceleration は仮想ホスト形式のリクエストでのみサポートされます。仮想ホスト形式のリクエストの詳細については、「Amazon S3 API リファレンス」の「Making requests using the REST API」を参照してください。
> - Transfer Acceleration で使用するバケットは、ピリオド (".") が含まれていない DNS 準拠の名前にする必要があります。
> - Transfer Acceleration は、バケットに対して有効にする必要があります。詳細については、[S3 Transfer Acceleration の有効化と使用] を参照してください。
> - バケットで Transfer Acceleration を有効にした後、バケットへのデータ転送速度が上昇するまでに最大 20 分かかることがあります。

- 仮想ホスト形式のリクエストの必要がある
    - examplebucket.s3.us-west-2.amazonaws.comのように、バケット名がURLに含まれる形
- バケットは、ピリオド (".") が含まれていない DNS 準拠の名前にする必要がある
- 有効にした後、バケットへのデータ転送速度が上昇するまでに最大 20 分かかることがある
- 対応可能なリージョン
    - アジアパシフィック (東京) (ap-northeast-1)
    - アジアパシフィック (ソウル) (ap-northeast-2)
    - アジアパシフィック (ムンバイ) (ap-south-1)
    - アジアパシフィック (シンガポール) (ap-southeast-1)
    - アジアパシフィック (シドニー) (ap-southeast-2)
    - カナダ (中部) (ca-central-1)
    - ヨーロッパ (フランクフルト) (eu-central-1)
    - 欧州 (アイルランド) (eu-west-1)
    - ヨーロッパ (ロンドン) (eu-west-2)
    - 欧州 (パリ) (eu-west-3)
    - 南米 (サンパウロ) (sa-east-1)
    - 米国東部 (バージニア北部) (us-east-1)
    - 米国東部 (オハイオ) (us-east-2)
    - 米国西部 (北カリフォルニア) (us-west-1)
    - 米国西部 (オレゴン) (us-west-2)


## 料金

https://aws.amazon.com/jp/s3/pricing/


- インターネットから Amazon S3 へのデータ転送受信 (イン):
    - 米国、欧州、日本の AWS エッジロケーションによる高速化	: 0.04 USD/GB
    - その他のすべての AWS エッジロケーションによる高速化：0.08 USD/GB
- Amazon S3 からインターネットへのデータ転送送信 (アウト):	
    - AWS エッジロケーションによる高速化	：0.04 USD/GB
- Amazon S3 と別の AWS リージョン間のデータ転送:	
    - AWS エッジロケーションによる高速化	：0.04 USD/GB


# 実践
## Speed Checker
下記のサイトで、S3に直接アップロードした場合と、Transfer Accelerationを利用した場合の速度がわかります。当然ですが場所により効果は異なります。

https://s3-accelerate-speedtest.s3-accelerate.amazonaws.com/en/accelerate-speed-comparsion.html


- バージニアの場合、734%高速
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/7bf03620-6e8f-4c08-bcb6-98d7369e1cbb.png)

- 東京で96%高速。私が東京に住んでいるのでそれほど効果が見込めないのかな。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/8f8669a5-8de5-4042-b064-93c38d3b9511.png)


# 考察
S3 Transfer Accelerationは、日本全国や海外などの遠隔地からS3に対して高速かつ安全にデータをアップロードできるサービスであることがわかりました。
ただし、アップロード（データイン）にもコストがかかるため、アップロードするデータ量によっては、以下のサービスと比較して最適な手段を選ぶ必要があると思いました。

- Direct Connect
- Snowball Edge


# 参考

https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/transfer-acceleration.html


https://aws.amazon.com/jp/s3/pricing/


https://s3-accelerate-speedtest.s3-accelerate.amazonaws.com/en/accelerate-speed-comparsion.html