使用 Cloud Storage

如果您的应用在运行时需要读取和写入文件,或者传送影片、图片或其他静态内容等文件,我们建议您使用 Cloud Storage 存储桶。

App Engine 会在您创建应用时创建一个默认存储分区。该存储分区可提供 5GB 的免费存储空间以及 Cloud Storage I/O 操作的免费配额。您可以创建其他 Cloud Storage 存储桶,但只有默认存储桶包含 5GB 的免费存储空间。

将 Cloud Storage 与 App Engine 搭配使用

如需在 App Engine 应用中使用 Cloud Storage 存储桶,请执行以下操作:

  1. 查看 App Engine 项目中现有存储桶的名称。从 Cloud Storage 上传或下载数据时,您将需要指定这些名称。

    我们建议您将 Cloud Storage 存储桶的名称存储在应用的环境变量中,而不要将其硬编码到应用中。

  2. 在您的应用中,执行以下操作,将 Cloud Storage 声明为依赖项:

    Go

    使用 go get cloud.google.com/go/storage 命令、或者,您也可以在应用的 go.mod 文件中声明依赖项。请详细了解如何指定依赖项

    使用 Google Cloud 客户端库从您的存储分区上传下载数据。

    如需了解如何传送静态内容,请参阅存储和传送静态文件

    Java

    将库添加到应用的依赖项文件中

    使用 Google Cloud 客户端库从您的存储分区上传下载数据。

    如需了解如何传送静态内容,请参阅存储和传送静态文件

    Node.js

    app.yaml 中,将您的项目 ID 添加到 GOOGLE_CLOUD_PROJECT 环境值中。然后将 GCLOUD_STORAGE_BUCKET 环境值设置为您之前创建的 Cloud Storage 存储分区的名称。

    @google-cloud/storage 添加到应用的 package.json 文件中。请详细了解如何指定依赖项

    使用 Google Cloud 客户端库从您的存储分区上传下载数据。

    如需了解如何传送静态内容,请参阅存储和传送静态文件

    如需了解有关在本地运行和测试的说明,请参阅 README.md 文件

    PHP

    google/cloud-storage 添加到应用的 composer.json 文件中,并从应用的目录中运行 composer install。请详细了解如何指定依赖项

    针对您的应用,Google\Cloud\Storage\StorageClient 注册为流封装容器。然后使用 gs 协议读取和写入文件。

    请参阅注册和使用流封装容器的示例

    作为替代方案,您可以直接使用 Google Cloud 客户端库

    Python

    google-cloud-storage 添加到应用的 requirements.txt 文件中。请详细了解如何指定依赖项

    使用 Google Cloud 客户端库从您的存储分区上传下载数据。

    如需了解如何传送静态内容,请参阅存储和传送静态文件

    Ruby

    google-cloud-storage 添加到应用的 Gemfile 中。请详细了解如何指定依赖项

    使用 Google Cloud 客户端库从您的存储分区上传下载数据。

    如需了解如何传送静态内容,请参阅存储和传送静态文件

使用默认存储桶

当您创建应用时,App Engine 会创建一个默认存储桶,该存储桶可提供 5GB 的免费存储空间。默认存储桶还可提供 Cloud Storage I/O 操作的免费配额。如需了解详情,请参阅价格、配额和限制。您需要为超出 5GB 限制的存储空间付费。

默认存储桶的名称采用以下格式:

project-id.appspot.com

App Engine 还会在部署应用的新版本时创建一个存储桶以用于临时存储。该存储桶的名称为 staging.project-id.appspot.com,仅可供 App Engine 使用。应用无法与此存储桶交互。

设置存储桶权限

与您的应用关联的默认服务账号具有对项目中的存储桶执行读写操作所需的所有权限。

为了管理这些权限,每个 App Engine 应用都会使用一个默认服务账号,该账号提供对应用所属项目中 Cloud Storage 存储桶的所有读写权限。您可以更改默认服务账号的权限,但您的应用可能会失去访问权限,除非您分配了拥有所需权限的 IAM 角色。

如需了解如何允许其他用户、应用或项目访问存储桶及其内容,请参阅设置存储桶权限

将 Cloud Storage 与本地开发服务器搭配使用

App Engine 本地开发服务器不会模拟 Cloud Storage,因此必须通过互联网将所有 Cloud Storage 请求发送到实际的 Cloud Storage 存储桶。

价格、配额和限制

通过 Cloud Storage 客户端库调用 Cloud Storage 不会产生带宽费用。不过,此操作会产生操作费用。此外,由于该客户端库使用 URL Fetch 服务与 Cloud Storage 进行交互,因此这些调用将计入 URL Fetch 配额

请注意,Cloud Storage 是付费服务;您需要按照 Cloud Storage 价格表支付费用。