boto3 list_objects_v2 StartAfter 无法正常工作

Jee*_*aim 0 amazon-s3 amazon-web-services boto3

使用 list_objects_v2 时

s3client.list_objects_v2(Bucket=bucket_name, StartAfter=starts_after)

从 boto3 包中,我注意到如果我使用存储桶中文件夹内的密钥,例如

桶 - 'some_bucket'

键 - 'adb/dcvf/staging0000.txt'

然后 StartAfter 无法正常工作,它返回整组键。

但是,如果密钥直接位于存储桶中,没有任何文件夹(例如 ),则 StartAfter 可以正常工作。

桶 - 'some_bucket'

键 - 'staging0000.txt'

这是一个已知问题吗?是否有解决方法

Joh*_*ein 5

版本2:

看来您的要求是获取在特定 key timewise 之后添加的对象的 Key 列表

这不适合该StartAfter参数的用途,该参数仅列出按字母顺序排列在给定字符串之后的键。

相反,您需要编写一个程序来获取对象列表,然后确定所需的键,例如:

import boto3

client=boto3.client('s3',region_name='ap-southeast-2')

# Obtain a list of objects in the bucket
response = client.list_objects_v2(Bucket='my-bucket')

# Make a dictionary of Key:Modified Date
objects = {object['Key']:object['LastModified'] for object in response['Contents']}

# Make a list of objects modified after a particular object
OBJECT_TO_COMPARE = 'foo.txt'
latest = [key for key in objects if objects[key] > objects[OBJECT_TO_COMPARE]]

# Print result
print ('\n'.join(latest))
Run Code Online (Sandbox Code Playgroud)