similar question से उधार लेना, बाल्टी + उपसर्ग से ऑब्जेक्ट कुंजियों की पूरी सूची पुनर्प्राप्त करने का एक विकल्प list_objects_v2 विधि के साथ रिकर्सन का उपयोग करना है।
यह विधि एक समय में ऑब्जेक्ट कुंजी, 1000 कुंजी की सूची को पुनः प्राप्त कर देगी।
list_objects_v2
पर प्रत्येक अनुरोध पिछले अनुरोध से अंतिम कुंजी के बाद लिस्टिंग कुंजी जारी रखने के लिए StartAfter
तर्क का उपयोग करता है।
import boto3
if __name__ == '__main__':
client = boto3.client('s3',
aws_access_key_id = 'access_key',
aws_secret_access_key = 'secret_key'
)
def get_all_object_keys(bucket, prefix, start_after = '', keys = []):
response = client.list_objects_v2(
Bucket = bucket,
Prefix = prefix,
StartAfter = start_after
)
if 'Contents' not in response:
return keys
key_list = response['Contents']
last_key = key_list[-1]['Key']
keys.extend(key_list)
return get_all_object_keys(bucket, prefix, last_key, keys)
object_keys = get_all_object_keys('your_bucket', 'prefix/to/files')
print(len(object_keys))