
Amazon S3 で Transfer Acceleration を有効化すると,エッジロケーションを活用してオブジェクトを高速にアップロード・ダウンロードできるようになる.そして bucketname.s3-accelerate.amazonaws.com というエンドポイントが追加される👀
boto3 x Amazon S3 Transfer Acceleration
Python (boto3) で Amazon S3 Transfer Acceleration エンドポイントを使う場合は Boto3 Config の use_accelerate_endpoint で設定できる👌今回は検証も兼ねて Config 設定の動作確認をしてみた.
準備
自宅(東京)から動作確認をするため,今回は us-east-1(バージニア)に Amazon S3 バケットを作った.そして aws s3api put-bucket-accelerate-configuration コマンドで Amazon S3 Transfer Acceleration を有効化した.あと mkfile 50m 50mb コマンドで 50MB のダミーファイルを作っておく📁
$ aws s3 mb s3://transfer-acceleration-sandbox --region us-east-1 $ aws s3api put-bucket-accelerate-configuration --bucket transfer-acceleration-sandbox --accelerate-configuration Status=Enabled --region us-east-1
1. Config 設定なし
今回はエンドポイントを確認するため botocore のデバッグログを出力できるようにしておく👌
import time import uuid import boto3 import botocore botocore.session.Session().set_debug_logger() session = boto3.Session(profile_name='xxxxx', region_name='us-east-1') s3_client = session.client( 's3', ) start = time.time() s3_client.upload_file('50mb', 'transfer-acceleration-sandbox', f'50mb-{uuid.uuid4().hex}') end = time.time() print(f'{end - start} seconds')
実行すると s3.amazonaws.com エンドポイントにリクエストを送信していた🛜
Sending http request: (中略) url=https://transfer-acceleration-sandbox.s3.amazonaws.com/50mb-a3637f080158476fa0333dc838d700d7?uploadId=xxx (中略)
計3回実行したアップロード時間は以下だった💡
- 35.75226593017578 seconds
- 36.11813402175903 seconds
- 42.113038063049316 seconds
2. Config 設定あり
今度は Config で use_accelerate_endpoint を設定する❗️
import time import uuid import boto3 import botocore botocore.session.Session().set_debug_logger() session = boto3.Session(profile_name='xxxxx', region_name='us-east-1') s3_client = session.client( 's3', config=boto3.session.Config( s3={ 'use_accelerate_endpoint': True, }, ), ) start = time.time() s3_client.upload_file('50mb', 'transfer-acceleration-sandbox', f'50mb-{uuid.uuid4().hex}') end = time.time() print(f'{end - start} seconds')
実行すると今度は s3-accelerate.amazonaws.com エンドポイントにリクエストを送信していた🛜
Sending http request: (中略) url=https://transfer-acceleration-sandbox.s3-accelerate.amazonaws.com/50mb-8b5a312964c94d5a8e803655e1aa6792?uploadId=xxx (中略)
計3回実行したアップロード時間は以下だった💡速くなってる〜 \( 'ω')/
- 14.759350061416626 seconds
- 12.844246625900269 seconds
- 13.640271663665771 seconds