Boto S3 delete_keys 方法指示不存在的键被删除
Boto S3 delete_keys method indicating non-existent keys as being deleted
我 运行 在 s3 中使用 boto 的 delete_keys() 命令遇到以下问题。
这是我的测试场景:
import boto
conn = boto.connect_s3()
bucket = conn.get_bucket('mybucket')
key1 = boto.s3.key.Key('bucket','not_a_real_key1')
key2 = boto.s3.key.Key('bucket','not_a_real_key2')
result_set = bucket.delete_keys([key1,key2])
#the following should not print anything
for v in result_set.deleted:
print v
#the following should return the two keys
for v in result_set.errors:
print v
根据注释行,由于这两个键不存在,我假设它们将被标记为错误而不是已删除。
这是标准行为吗?我宁愿不使用 Key.exists() 方法,因为我要遍历大量键,这样效率很低。
提前致谢。
这是 S3 的预期行为。当您删除一个不存在的键时,无论是单独删除还是在批量删除操作中,任何不存在的键都将被视为已删除的键,并且不会返回任何错误。
我 运行 在 s3 中使用 boto 的 delete_keys() 命令遇到以下问题。
这是我的测试场景:
import boto
conn = boto.connect_s3()
bucket = conn.get_bucket('mybucket')
key1 = boto.s3.key.Key('bucket','not_a_real_key1')
key2 = boto.s3.key.Key('bucket','not_a_real_key2')
result_set = bucket.delete_keys([key1,key2])
#the following should not print anything
for v in result_set.deleted:
print v
#the following should return the two keys
for v in result_set.errors:
print v
根据注释行,由于这两个键不存在,我假设它们将被标记为错误而不是已删除。
这是标准行为吗?我宁愿不使用 Key.exists() 方法,因为我要遍历大量键,这样效率很低。
提前致谢。
这是 S3 的预期行为。当您删除一个不存在的键时,无论是单独删除还是在批量删除操作中,任何不存在的键都将被视为已删除的键,并且不会返回任何错误。