S3 Acceleration 上传加速测试

一、启用S3加速

S3 Accelerator目前仅在Global区域有效。

1、启用方法

进入S3存储桶,点击第二个标签页”属性“,点击高级设置中的”转移加速度“(英文是Tranfer acceleration),点击Enable启用。然后点击Save保存。

此时可以看到页面上提供了一个链接名为“希望比较不同区域的数据传输速度?”,点击这个链接,可以进入一个测速页面。这个测速页面的上方是当前Region,下边是其他Region的加速效果测试。不过此页面效果不是特别直观,而且不方便在客户多个地点自行测试。因此可以使用本程序做测试。

2、费用

S3 Transfer Acceleration 主要用于上传方向的加速,其原理是利用CloudFront的CDN POP点做加速。

费用定义在如下页面的下半部分的“传输加速”章节中描述:

https://aws.amazon.com/cn/s3/pricing/?nc=sn&loc=4

关于费用,官方的说法是:

每当您使用 S3 Transfer Acceleration 上传对象时,我们都会检查此服务的传输速度是否有可能比常规 Amazon S3 的快。在将同一对象传输到同一目标 AWS 区域时,如果我们确定此服务的传输速度不会快于常规 Amazon S3,那么对于此次使用 S3 Transfer Acceleration 进行的传输,我们将不会收取任何费用,并且可能对此次上传绕过 S3 Transfer Acceleration 系统。

二、上传测试

1、下载测试程序

安装python3及AWS SDK。

pip3 install boto3

下载测试程序到本地。

wget https://myworkshop.bitipcman.com/S3-TA/S3_Transfer_Acceleration_Test.py

替换程序中的Access Key为实际的key。

在当前路径下,请放置5个要上传的文件,文件名分别叫做 file1.zip, file2.zip, file3.zip, file5.zip, file5.zip,然后就可以启动上传。

2、运行并查看结果

使用Python3运行这个程序,返回结果如下。

$ /usr/local/bin/python3 /Users/lxy/Documents/AWS/MyWorkshop/S3-Transfer-Acceleration/S3_Transfer_Acceleration_Test.py

测试启动: 2020-08-28 20:52:43

测试开始:方式1-直接上传
File 1-1 uploaded.
File 1-2 uploaded.
File 1-3 uploaded.
File 1-4 uploaded.
File 1-5 uploaded.

y
测试开始:方式2-通过S3加速器上传
File 2-1 uploaded.
File 2-2 uploaded.
File 2-3 uploaded.
File 2-4 uploaded.
File 2-5 uploaded.

########################################
# Step 1: Direct upload to S3 bucket   #
########################################
# Total time is 18.851708 Seconds
# Total size is 29553804 Byte
# Upload speed is 1.4951 MB/s
########################################


########################################
# Step 2: S3 Tranfer Acceleration      #
########################################
# Total time is 4.901146 Seconds
# Total size is 29553804 Byte
# Upload speed is 5.7506 MB/s
########################################

########################################
# 结论: S3上传加速更快,提升284.63% 
# 测试时间: 2020-08-28 20:52:43
########################################

以上对比过程显示通过S3加速上传,比直接上传效果更好。

请将这个脚本放在需要测试的目标区域进行测试,以获得最佳效果。