本页面介绍了如何列出 Cloud Storage 存储桶中存储的对象,这些对象按名称的字典顺序在列表中排序。
须知事项
如需获得列出对象所需的权限,请让您的管理员向您授予包含待列出对象的存储桶的 Storage Object Viewer (roles/storage.objectViewer
) IAM 角色。
如果要在请求中返回对象 ACL,或使用 Google Cloud 控制台执行本页面上的任务,您需要替代角色:
如果您希望在请求中返回对象 ACL,请让您的管理员授予您 Storage Object Admin (
roles/storage.objectAdmin
) 角色,而不是 Storage Object Viewer (roles/storage.objectViewer
) 角色。如果您计划使用 Google Cloud 控制台执行本页面上的任务,请让您的管理员授予您 Storage Admin (
roles/storage.admin
) 角色而不是 Storage Object Viewer (roles/storage.objectViewer
) 角色。或者,除了 Storage Object Viewer (
roles/storage.objectViewer
) 角色之外,您也可以请管理员为您授予 Viewer (roles/viewer
) 基本角色。
这些角色包含列出对象所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
storage.objects.list
storage.objects.getIamPolicy
- 仅当您要返回对象 ACL 时,才需要此权限
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
标头生成访问令牌。或者,您可以使用 OAuth 2.0 Playground 创建访问令牌,并将其包含在
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
参数设置为/
。如需返回对象 ACL,请将值为
full
的projection
查询参数附加到请求。请注意,如果对存储桶启用了统一存储桶级访问权限,则系统会停用并无法返回 ACL。
XML API
安装并初始化 gcloud CLI,以便为
Authorization
标头生成访问令牌。或者,您可以使用 OAuth 2.0 Playground 创建访问令牌,并将其包含在
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
参数且该参数设置为 /
以外的值,则该请求会失败。
后续步骤
- 从存储桶下载对象。
- 查看和修改对象元数据。
- 从存储桶中删除对象。
- 了解如何对结果进行分页。