第 4 章 使用笔记本单元列出可用 Amazon S3 存储桶中的文件
您可以通过列出存储桶中的对象来检查您可以访问的 bucket 中可用的文件。由于 bucket 使用对象存储而非典型的文件系统,因此对象命名的工作方式与普通文件命名不同。bucket 中的对象始终由一个键来代表,它由存储桶中的完整路径以及文件本身的名称组成。
先决条件
- 在笔记本中的单元格中配置 Amazon S3 客户端。如需更多信息,请参阅使用笔记本单元创建 Amazon S3 客户端。
流程
创建新的笔记本单元,并列出存储桶中的对象。例如:
bucket_name = 'std-user-bucket1' s3_client.list_objects_v2(Bucket=bucket_name)
这会以以下格式返回几个对象:
{'Key': 'docker/registry/v2/blobs/sha256/00/0080913dd3f10aadb34asfgsgsdgasdga072049c93606b98bec84adb259b424f/data', 'LastModified': datetime.datetime(2021, 4, 22, 1, 26, 1, tzinfo=tzlocal()), 'ETag': '"6e02fad2deassadfsf900a4bd7344ffe"', 'Size': 4052, 'StorageClass': 'STANDARD'}
您可以只打印键而不是完整的响应,从而使此列表更易于阅读,例如:
bucket_name = 'std-user-bucket1' for key in s3_client.list_objects_v2(Bucket=bucket_name)['Contents']: print(key['Key'])
这会返回类似如下的输出:
docker/registry/v2/blobs/sha256/00/0080913dd3f10aadb34asfgsgsdgasdga072049c93606b98bec84adb259b424f/data
您还可以过滤查询来列出特定"path"或文件名,例如:
bucket_name = 'std-user-bucket1' for key in s3_client.list_objects_v2(Bucket=bucket_name,Prefix='<start_of_file_path>')['Contents']: print(key['Key'])
在上例中,将
<start_of_file_path>
替换为您自己的值。