如何在没有验证的情况下创建s3 Key对象?

时间:2014-01-27 08:36:23

标签: boto

有没有办法为连接创建Key而无需使用boto进行验证? docs表示有一个validate参数,但它不存在于2.23源代码中(据说与文档版本相同)。

我需要一种解决方法来避免在密钥上进行查找。

1 个答案:

答案 0 :(得分:1)

get_key()中的boto.s3.bucket.Bucket方法对对象执行HEAD请求以验证它是否存在。如果您确定该对象存在且不想要HEAD请求的开销,只需直接创建Key对象:

import boto.s3
from boto.s3.key import Key

conn = boto.s3.connect_to_region('us-east-1')
bucket = conn.get_bucket('mybucket', validate=False)
key = Key(bucket, 'mykeyname')

这可以避免HEAD请求,并且仍然允许您对Key对象执行正常操作。但请注意,HEAD请求会检索有关Key的某些元数据,例如其内容类型,大小,ETag等。直接构造的Key对象不会提供该信息。