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

2024-10-01 11:23:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我有几个S3存储桶,其中包含7.61亿个对象的40TB数据。我承担了一个将这些对象复制到EBS存储的项目。据我所知,所有的水桶都是在us-east-1制造的。我确信所有用于导出到EBS的EC2实例都在us-east-1中。在

问题是,AWS上个月的法案中包含了一笔相当可观的跨地区数据传输费用。我想知道这怎么可能?在

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


Tags: 数据项目对象实例脚本awss3ec2
2条回答

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

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

如果bucket位于us-east-1区域之外的任何地方,那么您将看到它的名称旁边打印的位置。否则,将为空。在

如果所有的bucket都在us-east-1区域,并且您100%确定所有EC2实例也在us-east-1并且您创建的所有EBS卷也在{}区域中,那么我无法解释为什么您会在账单上看到跨区域的流量费用。我不相信boto会随机连接到不同的区域。这可能值得问AWS。可能有合理的理由,但对我来说并不明显。在

这个问题最终是AWS内部的账单错误,与S3或Boto无关。在

相关问题 更多 >