boto如何选择aws区域来创建存储桶?

时间:2014-04-23 09:15:57

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

我创建了3个不同的存储桶,1个使用aws管理控制台,2个使用boto api。

使用aws管理控制台创建的存储桶是在东京地区创建的,而使用boto创建的存储桶是在us-east-1区域创建的。

当我使用boto访问存储桶时,它如何找到创建存储桶的正确区域。此外,它如何选择创建存储区的区域。

我已经想到了boto源代码中的connection.py文件,但我无法理解代码。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:3)

您可以通过在location方法中指定create_bucket参数的值来控制新存储区的位置。例如,要在ap-northeast-1区域中创建存储桶,您可以执行此操作:

import boto.s3
from boto.s3.connection import Location
c = boto.s3.connect_to_region('ap-northeast-1')
bucket = c.create_bucket('mynewbucket', location=Location.APNortheast)

在此示例中,我将连接到ap-northeast-1区域中的S3端点,但这不是必需的。即使您连接到通用S3端点,您仍然可以使用此技术在另一个位置创建存储桶。

要在创建存储桶后访问存储桶,您有几个选项:

  • 您可以连接到您创建存储桶的区域中的S3端点,然后使用get_bucket方法查找存储桶并获取Bucket对象。
  • 您可以连接到通用S3端点并使用get_bucket方法查找您的存储桶。为了实现此目的,您需要遵循here所述的更受限制的存储桶命名约定。这样可以通过virtual hosting样式寻址访问您的存储分区,例如https://mybucket.s3.amazonaws.com/。反过来,这允许DNS将您的请求解析为正确的S3端点。请注意,DNS记录需要一段时间才能传播,因此如果您尝试在创建后立即以这种方式处理存储桶,则可能无法正常工作。几分钟后再试一次。