我创建了3个不同的存储桶,1个使用aws管理控制台,2个使用boto api。
使用aws管理控制台创建的存储桶是在东京地区创建的,而使用boto创建的存储桶是在us-east-1区域创建的。
当我使用boto访问存储桶时,它如何找到创建存储桶的正确区域。此外,它如何选择创建存储区的区域。
我已经想到了boto源代码中的connection.py文件,但我无法理解代码。
非常感谢任何帮助!
答案 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端点,您仍然可以使用此技术在另一个位置创建存储桶。
要在创建存储桶后访问存储桶,您有几个选项:
get_bucket
方法查找存储桶并获取Bucket
对象。get_bucket
方法查找您的存储桶。为了实现此目的,您需要遵循here所述的更受限制的存储桶命名约定。这样可以通过virtual hosting
样式寻址访问您的存储分区,例如https://mybucket.s3.amazonaws.com/。反过来,这允许DNS将您的请求解析为正确的S3端点。请注意,DNS记录需要一段时间才能传播,因此如果您尝试在创建后立即以这种方式处理存储桶,则可能无法正常工作。几分钟后再试一次。