Boto随机连接到不同的区域进行S3传输

时间:2013-08-07 20:42:29

标签: python amazon-web-services amazon-s3 boto

我有几个S3存储桶,包含7.61亿个对象的总共40 TB的数据。我进行了一个项目,将这些对象复制到EBS存储。据我所知,所有的桶都是在我们东方1创建的。我确信所有用于出口到EBS的EC2实例都在us-east-1范围内。

问题在于,上个月的AWS账单包含了对区域间数据传输的巨额费用。我想知道这有可能吗?

传输使用一个非常简单的Python脚本与Boto连接到S3并下载每个对象的内容。我怀疑存储桶名称由大写字母组成的事实可能是一个促成因素(我必须指定OrdinaryCallingFormat()),但我不确定这一点。

2 个答案:

答案 0 :(得分:1)

AFAIK,其名称中包含大写字符的存储桶只能存在于经典 S3区域(即us-east-1)中。您的所有存储桶名称是否都包含大写字符?水桶还存在吗?如果是这样,你可以仔细检查他们的位置:

import boto
c = boto.connect_s3()
for bucket in c.get_all_buckets():
    print(bucket.name, bucket.get_location())

如果存储桶位于us-east-1区域以外的任何位置,您将看到其名称旁边打印的位置。否则,它将是空白的。

如果所有存储桶都位于us-east-1区域,并且您100%确定所有EC2实例也位于us-east-1中,并且您创建的所有EBS卷也位于us-east-1区域比我没有解释为什么你会看到你的账单上的区域间交通费用。我不相信boto随机连接到不同的地区。可能值得向AWS询问此事。可能有正当理由,但对我来说并不明显。

答案 1 :(得分:0)

此问题最终成为AWS的内部结算错误,与S3或Boto无关。