本页面介绍了如何列出 Cloud Storage 存储桶中存储的对象,这些对象按名称的字典顺序在列表中排序。
须知事项
如需获得列出对象所需的权限,请让您的管理员向您授予包含待列出对象的存储桶的 Storage Object Viewer (roles/storage.objectViewer
) IAM 角色。
如果您打算使用 Google Cloud 控制台执行本页面上的任务,请让您的管理员除了授予 Storage Object Viewer (roles/storage.objectViewer
) 角色外,还为您授予 Viewer (roles/viewer
) 基本角色。
这些角色包含列出对象所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
storage.objects.list
storage.buckets.list
- 仅当您要使用 Google Cloud 控制台执行本页面上的任务时,才需要此权限。
如需了解如何授予存储桶的角色,请参阅将 IAM 与存储桶搭配使用。
列出存储桶中的对象
完成以下步骤以列出存储桶中的对象:
控制台
命令行
将 gcloud storage ls
命令与 --recursive
标志结合使用:
gcloud storage ls --recursive gs://BUCKET_NAME/**
其中:
BUCKET_NAME
是要列出其对象的存储桶的名称,例如my-bucket
。
响应如下例所示:
gs://my-bucket/cats.jpeg gs://my-bucket/dogs.jpeg gs://my-bucket/thesis.txt ...
客户端库
C++
如需了解详情,请参阅 Cloud Storage C++ API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为客户端库设置身份验证。
以下示例会列出存储分区中的所有对象:
以下示例会列出具有给定前缀的对象:
C#
如需了解详情,请参阅 Cloud Storage C# API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为客户端库设置身份验证。
以下示例会列出存储分区中的所有对象:
以下示例会列出具有给定前缀的对象:
Go
如需了解详情,请参阅 Cloud Storage Go API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为客户端库设置身份验证。
以下示例会列出存储分区中的所有对象:
以下示例会列出具有给定前缀的对象:
Java
如需了解详情,请参阅 Cloud Storage Java API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为客户端库设置身份验证。
以下示例会列出存储分区中的所有对象:
以下示例会列出具有给定前缀的对象:
Node.js
如需了解详情,请参阅 Cloud Storage Node.js API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为客户端库设置身份验证。
以下示例会列出存储分区中的所有对象:
以下示例会列出具有给定前缀的对象:
PHP
如需了解详情,请参阅 Cloud Storage PHP API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为客户端库设置身份验证。
以下示例会列出存储分区中的所有对象:
以下示例会列出具有给定前缀的对象:
Python
如需了解详情,请参阅 Cloud Storage Python API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为客户端库设置身份验证。
以下示例会列出存储分区中的所有对象:
以下示例会列出具有给定前缀的对象:
Ruby
如需了解详情,请参阅 Cloud Storage Ruby API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为客户端库设置身份验证。
以下示例会列出存储分区中的所有对象:
以下示例会列出具有给定前缀的对象:
REST API
JSON API
安装并初始化 gcloud CLI,以便为
Authorization
标头生成访问令牌。-
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o"
其中,
BUCKET_NAME
是要列出其对象的存储桶的名称,例如my-bucket
。您可以使用
includeFoldersAsPrefixes=True
查询参数在列出结果中返回托管文件夹。使用includeFoldersAsPrefixes
参数时,必须将delimiter
参数设置为/
。
XML API
安装并初始化 gcloud CLI,以便为
Authorization
标头生成访问令牌。使用
cURL
通过GET
Bucket 请求调用 XML API:curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/BUCKET_NAME?list-type=2"
其中,
BUCKET_NAME
是要列出其对象的存储桶的名称,例如my-bucket
。您可以使用
prefix=PREFIX
查询字符串参数将结果限制为具有指定前缀的对象。
过滤对象
控制台
如需使用 Google Cloud 控制台按名称前缀过滤对象,请使用存储桶详情页面中的过滤对象和文件夹字段。
如需了解 Google Cloud 控制台提供的其他过滤选项,请参阅过滤和排序。
命令行
使用 Google Cloud CLI 列出对象时,您可以使用通配符过滤以指定前缀开头或以指定后缀结尾的对象。例如,以下命令会匹配以 image
开头且以 .png
结尾的对象:
gcloud storage ls gs://my-bucket/image*.png
如需详细了解如何使用 Google Cloud CLI 进行过滤,请参阅 gcloud storage ls
文档。
REST API
JSON API
使用 Cloud Storage JSON API 列出对象时,您可以使用 prefix
或 matchGlob
查询字符串参数来过滤结果。如需详细了解如何使用这些查询字符串参数,请参阅对象列出 JSON API 参考文档。
按前缀过滤
您可以使用 prefix=PREFIX
或查询字符串参数将结果限制为具有指定前缀的对象或托管文件夹。例如,如需列出存储桶 my-bucket
中前缀为 folder/subfolder/
的所有对象,请使用网址 "https://storage.googleapis.com/storage/v1/b/my-bucket/o?prefix=folder/subfolder/"
发出对象列出请求:
如果您仅拥有列出托管文件夹中对象的权限,而没有列出整个存储桶中对象的权限,则使用 prefix
列出托管文件夹的内容非常有用。例如,假设您拥有托管文件夹 my-bucket/my-managed-folder-a/
的 Storage Object Viewer (roles/storage.objectViewer
) IAM 角色,但没有托管文件夹 my-bucket/my-managed-folder-b/
的相应角色。如需仅返回 my-managed-folder-a
中的对象,您可以指定 prefix=my-managed-folder-a/
。
将结果限制为托管文件夹以及其中的对象时,PREFIX
必须以 /
结尾(例如 prefix=my-managed-folder/
)。否则,结果还可能包含与托管文件夹相邻的对象。在此示例中,您有一个包含以下对象的存储桶:
my-bucket/abc.txt
my-bucket/abc/object.txt
指定 prefix=abc/
可以返回对象 my-bucket/abc/object.txt
,而指定 prefix=abc
可以同时返回 my-bucket/abc.txt
和 my-bucket/abc/object.txt
。
按 glob 表达式过滤
您可以使用 matchGlob=GLOB_PATTERN
查询字符串参数来过滤结果,使结果仅包含与特定 glob 表达式匹配的对象。例如,可使用 matchGlob=**.jpeg
来匹配以 .jpeg
结尾的所有对象。
如果使用 matchGlob
参数的请求还包含 delimiter
参数且该参数设置为 /
以外的值,则该请求会失败。
列出对象时的性能注意事项
与采用扁平命名空间的存储分区相比,启用了分层命名空间的存储分区的底层结构可能会影响列出对象操作的性能。如需详细了解如何在启用了分层命名空间的存储分区中列出对象时优化性能,请参阅列出对象。
后续步骤
- 从存储桶下载对象。
- 查看和修改对象元数据。
- 从存储桶中删除对象。
- 了解如何对结果进行分页。