python-3.x S3列出版本化对象

0sgqnhkj  于 2024-01-10  发布在  Python
关注(0)|答案(2)|浏览(469)

我使用下面的语法来列出s3中使用boto3的版本。

  1. object_versions = s3.list_object_versions(Bucket=bucket_name)

字符串
奇怪的是,它没有列出只剩下一个版本的对象。请看下面的截图,我可以在aws控制台上看到对象,但我不能从我的boto3脚本中获得它们。


的数据

5q4ezhmt

5q4ezhmt1#

我发现了问题。boto 3的列表对象API只列出了有限的结果(~1000个对象)。要超出此范围,您可能需要使用paginator。
下面是一个示例代码,你可以忽略不需要的行。

  1. import boto3
  2. s3 = boto3.client('s3')
  3. paginator = s3.get_paginator('list_object_versions')
  4. pages = paginator.paginate(Bucket='bucket_name', Prefix='')
  5. for page in pages:
  6. for obj in page['Versions']:
  7. print(obj['Key'])

字符串

ssgvzors

ssgvzors2#

  1. import boto3
  2. # Create an S3 client
  3. s3 = boto3.client('s3')
  4. # Specify the bucket name
  5. bucket_name = 'your_bucket_name'
  6. # List all versions of objects in the bucket
  7. object_versions = s3.list_object_versions(Bucket=bucket_name)
  8. # Print information about each version (including delete markers)
  9. for version in object_versions.get('Versions', []):
  10. print(f"Key: {version['Key']}, VersionId: {version['VersionId']}, IsDeleteMarker: False")
  11. # Print information about each delete marker (if any)
  12. for delete_marker in object_versions.get('DeleteMarkers', []):
  13. print(f"Key: {delete_marker['Key']}, VersionId: {delete_marker['VersionId']}, IsDeleteMarker: True")

字符串
此代码将打印所有版本的信息,包括版本化对象及其删除标记。

展开查看全部

相关问题