托管静态网站

本教程介绍如何配置 Cloud Storage 存储分区以托管域名归您所有的静态网站。静态网页可使用 HTML、CSS 和 JavaScript 等客户端技术。静态网页不能包含动态内容,例如 PHP 等服务器端脚本。如需详细了解静态网页(如示例和提示),请参阅静态网站页面

本教程还适用于托管动态网站的静态资产。

目标

在此教程中,您将学习以下操作:

  • 使用 CNAME 记录将您的网域指向 Cloud Storage。
  • 创建一个与您的域名相关联的存储分区。
  • 上传和共享您的网站的文件。
  • 测试网站。

费用

本教程使用 Google Cloud 的以下收费组件:

  • Cloud Storage

如需详细了解托管静态网站时可能产生的费用,请参阅关于监控存储费用的提示;如需详细了解 Cloud Storage 费用,请参阅价格页面。

准备工作

  1. 登录您的 Google 帐号。

    如果您还没有 Google 帐号,请注册新帐号

  2. 在 GCP Console 的项目选择器页面上,选择或创建 GCP 项目。

    转到项目选择器页面

  3. 确保您的 Google Cloud Platform 项目已启用结算功能。 了解如何确认您的项目已启用结算功能

  4. 准备一个归您所有或管理的域名。如果您还没有现成可用的域名,可以通过多项服务(例如 Google Domains)注册一个新域名。

    本教程使用的域名是 example.com

  5. 确认您是要使用的域名的所有者或管理员。确保您所验证的域名是顶级域名(如 example.com),而不是子域名(如 www.example.com)。

    注意:如果您是要关联到存储分区的域名的所有者,则说明您过去可能已经执行此步骤。如果您的域名是通过 Google Domains 购买的,那么系统会自动进行验证。

创建 CNAME 记录

CNAME 记录是一种 DNS 记录。它会将请求访问您域名中的网址的流量定向到您想要传送的资源(在本例中为 Cloud Storage 存储分区中的对象)。对于 www.example.comCNAME 记录可能包含以下信息:

NAME                  TYPE     DATA
www.example.com       CNAME    c.storage.googleapis.com.

如需详细了解 CNAME 重定向,请参阅适用于 别名的 URI

如需将您的网域连接到 Cloud Storage,请按如下所述操作:

  1. 创建一条指向 c.storage.googleapis.com.CNAME 记录。

    您使用的域名注册服务应具备供您管理域名(包括添加 CNAME 记录)的方法。例如,如果您使用 Google Domains,则可以访问 Google Domains 帮助页面,查找添加 CNAME 记录的说明。

创建存储分区

使用与您为域名创建的 CNAME 相匹配的名称创建一个存储分区。

例如,如果您添加的 CNAME 记录将 www.example.com 指向 c.storage.googleapis.com.,应创建一个名为“www.example.com”的存储分区。

要创建存储分区,请执行以下操作:

控制台

  1. 在 Google Cloud Console 中打开 Cloud Storage 浏览器。
    打开 Cloud Storage 浏览器
  2. 点击创建存储分区,打开存储分区创建表单。

  3. 输入您的存储分区信息,然后点击继续以完成各个步骤:

  4. 点击创建

如果成功,您会定向至该存储分区的显示有“此存储分区中没有任何对象”文字的页面。

gsutil

使用 gsutil mb 命令:

gsutil mb gs://www.example.com

如果成功,此命令会返回以下内容:

Creating gs://www.example.com/...

代码示例

C++

如需了解详情,请参阅 Cloud Storage C++ API 参考文档

namespace gcs = google::cloud::storage;
using ::google::cloud::StatusOr;
[](gcs::Client client, std::string bucket_name) {
  StatusOr<gcs::BucketMetadata> bucket_metadata =
      client.CreateBucket(bucket_name, gcs::BucketMetadata());

  if (!bucket_metadata) {
    throw std::runtime_error(bucket_metadata.status().message());
  }

  std::cout << "Bucket " << bucket_metadata->name() << " created."
            << "\nFull Metadata: " << *bucket_metadata << "\n";
}

C#

如需了解详情,请参阅 Cloud Storage C# API 参考文档

private void CreateBucket(string bucketName)
{
    var storage = StorageClient.Create();
    storage.CreateBucket(s_projectId, bucketName);
    Console.WriteLine($"Created {bucketName}.");
}

Go

如需了解详情,请参阅 Cloud Storage Go API 参考文档

bucket := client.Bucket(bucketName)
if err := bucket.Create(ctx, projectID, &storage.BucketAttrs{
	StorageClass: "COLDLINE",
	Location:     "asia",
}); err != nil {
	return err
}

Java

如需了解详情,请参阅 Cloud Storage Java API 参考文档

Bucket bucket =
    storage.create(
        BucketInfo.newBuilder(bucketName)
            // See here for possible values: http://g.co/cloud/storage/docs/storage-classes
            .setStorageClass(StorageClass.COLDLINE)
            // Possible values: http://g.co/cloud/storage/docs/bucket-locations#location-mr
            .setLocation("asia")
            .build());

Node.js

如需了解详情,请参阅 Cloud Storage Node.js API 参考文档

/**
 * TODO(developer): Uncomment the following line before running the sample.
 */
// const bucketName = 'Name of a bucket, e.g. my-bucket';

// Imports the Google Cloud client library
const {Storage} = require('@google-cloud/storage');

// Creates a client
const storage = new Storage();

async function createBucket() {
  // Creates a new bucket in the Asia region with the coldline default storage
  // class. Leave the second argument blank for default settings.
  //
  // For default values see: https://cloud.google.com/storage/docs/locations and
  // https://cloud.google.com/storage/docs/storage-classes

  const [bucket] = await storage.createBucket(bucketName, {
    location: 'ASIA',
    storageClass: 'COLDLINE',
  });

  console.log(`Bucket ${bucket.name} created.`);
}

createBucket();

PHP

如需了解详情,请参阅 Cloud Storage PHP API 参考文档

use Google\Cloud\Storage\StorageClient;

/**
 * Create a Cloud Storage Bucket.
 *
 * @param string $bucketName name of the bucket to create.
 * @param string $options options for the new bucket.
 *
 */
function create_bucket($bucketName, $options = [])
{
    $storage = new StorageClient();
    $bucket = $storage->createBucket($bucketName, $options);
    printf('Bucket created: %s' . PHP_EOL, $bucket->name());
}

Python

如需了解详情,请参阅 Cloud Storage Python API 参考文档

from google.cloud import storage

def create_bucket(bucket_name):
    """Creates a new bucket."""
    # bucket_name = "your-new-bucket-name"

    storage_client = storage.Client()

    bucket = storage_client.create_bucket(bucket_name)

    print("Bucket {} created".format(bucket.name))

Ruby

如需了解详情,请参阅 Cloud Storage Ruby API 参考文档

# project_id    = "Your Google Cloud project ID"
# bucket_name   = "Name of Google Cloud Storage bucket to create"
# location      = "Location of where to create Cloud Storage bucket"
# storage_class = "Storage class of Cloud Storage bucket"

require "google/cloud/storage"

storage = Google::Cloud::Storage.new project_id: project_id
bucket  = storage.create_bucket bucket_name,
                                location:      location,
                                storage_class: storage_class

puts "Created bucket #{bucket.name} in #{location}" +
     " with #{storage_class} class"

REST API

JSON API

  1. OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。
  2. 创建一个将您的网站名称分配给 name 属性的 .json 文件:

    {
      "name": "www.example.com"
    }
  3. 使用 cURL 调用 JSON API。对于 www.example.com:

    curl -X POST --data-binary @website-bucket-name.json \
      -H "Authorization: Bearer ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg" \
      -H "Content-Type: application/json" \
      "https://storage.googleapis.com/storage/v1/b?project=my-static-website"

XML API

  1. OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。
  2. 使用 cURL 调用 XML API,以使用您的网站名称创建一个存储分区。对于 www.example.com:

    curl -X PUT \
      -H "Authorization: Bearer ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg" \
      -H "x-goog-project-id: my-static-website" \
      "https://storage.googleapis.com/www.example.com"

上传网站的文件

要将您希望网站传送的文件添加到您的存储分区中,请执行以下操作:

控制台

  1. 在 Google Cloud Console 中打开 Cloud Storage 浏览器。
    打开 Cloud Storage 浏览器
  2. 在存储分区列表中,点击您创建的存储分区的名称。

  3. 点击对象标签中的上传文件按钮。

  4. 在文件对话框中,浏览至所需文件并将其选中。

上传完成后,您应该会看到文件名和存储分区中显示的文件信息。

gsutil

使用 gsutil cp 命令将文件复制到您的存储分区。例如,要从文件 index.html 的当前位置 Desktop 复制此文件,请使用以下命令:

gsutil cp Desktop/index.html gs://www.example.com

如果成功,此命令会返回以下内容:

Copying file://Desktop/index.html [Content-Type=text/html]...
Uploading   gs://www.example.com/index.html:       0 B/2.58 KiB
Uploading   gs://www.example.com/index.html:       2.58 KiB/2.58 KiB

代码示例

C++

如需了解详情,请参阅 Cloud Storage C++ API 参考文档

namespace gcs = google::cloud::storage;
using ::google::cloud::StatusOr;
[](gcs::Client client, std::string file_name, std::string bucket_name,
   std::string object_name) {
  // Note that the client library automatically computes a hash on the
  // client-side to verify data integrity during transmission.
  StatusOr<gcs::ObjectMetadata> object_metadata = client.UploadFile(
      file_name, bucket_name, object_name, gcs::IfGenerationMatch(0));

  if (!object_metadata) {
    throw std::runtime_error(object_metadata.status().message());
  }

  std::cout << "Uploaded " << file_name << " to object "
            << object_metadata->name() << " in bucket "
            << object_metadata->bucket()
            << "\nFull metadata: " << *object_metadata << "\n";
}

C#

如需了解详情,请参阅 Cloud Storage C# API 参考文档

private void UploadFile(string bucketName, string localPath,
    string objectName = null)
{
    var storage = StorageClient.Create();
    using (var f = File.OpenRead(localPath))
    {
        objectName = objectName ?? Path.GetFileName(localPath);
        storage.UploadObject(bucketName, objectName, null, f);
        Console.WriteLine($"Uploaded {objectName}.");
    }
}

Go

如需了解详情,请参阅 Cloud Storage Go API 参考文档

f, err := os.Open("notes.txt")
if err != nil {
	return err
}
defer f.Close()

wc := client.Bucket(bucket).Object(object).NewWriter(ctx)
if _, err = io.Copy(wc, f); err != nil {
	return err
}
if err := wc.Close(); err != nil {
	return err
}

Java

如需了解详情,请参阅 Cloud Storage Java API 参考文档

Storage storage = StorageOptions.getDefaultInstance().getService();
BlobId blobId = BlobId.of("bucket", "blob_name");
BlobInfo blobInfo = BlobInfo.newBuilder(blobId).setContentType("text/plain").build();
Blob blob = storage.create(blobInfo, "Hello, Cloud Storage!".getBytes(UTF_8));

Node.js

如需了解详情,请参阅 Cloud Storage Node.js API 参考文档

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// const bucketName = 'Name of a bucket, e.g. my-bucket';
// const filename = 'Local file to upload, e.g. ./local/path/to/file.txt';

// Imports the Google Cloud client library
const {Storage} = require('@google-cloud/storage');

// Creates a client
const storage = new Storage();

async function uploadFile() {
  // Uploads a local file to the bucket
  await storage.bucket(bucketName).upload(filename, {
    // Support for HTTP requests made with `Accept-Encoding: gzip`
    gzip: true,
    // By setting the option `destination`, you can change the name of the
    // object you are uploading to a bucket.
    metadata: {
      // Enable long-lived HTTP caching headers
      // Use only if the contents of the file will never change
      // (If the contents will change, use cacheControl: 'no-cache')
      cacheControl: 'public, max-age=31536000',
    },
  });

  console.log(`${filename} uploaded to ${bucketName}.`);
}

uploadFile();

PHP

如需了解详情,请参阅 Cloud Storage PHP API 参考文档

您可以使用 File.createWriteStream() 方法通过写入流数据来上传对象。
use Google\Cloud\Storage\StorageClient;

/**
 * Upload a file.
 *
 * @param string $bucketName the name of your Google Cloud bucket.
 * @param string $objectName the name of the object.
 * @param string $source the path to the file to upload.
 *
 * @return Psr\Http\Message\StreamInterface
 */
function upload_object($bucketName, $objectName, $source)
{
    $storage = new StorageClient();
    $file = fopen($source, 'r');
    $bucket = $storage->bucket($bucketName);
    $object = $bucket->upload($file, [
        'name' => $objectName
    ]);
    printf('Uploaded %s to gs://%s/%s' . PHP_EOL, basename($source), $bucketName, $objectName);
}

Python

如需了解详情,请参阅 Cloud Storage Python API 参考文档

使用 Blob.upload_from_file()Blob.upload_from_filename()Blob.upload_from_string() 方法上传对象。
from google.cloud import storage

def upload_blob(bucket_name, source_file_name, destination_blob_name):
    """Uploads a file to the bucket."""
    # bucket_name = "your-bucket-name"
    # source_file_name = "local/path/to/file"
    # destination_blob_name = "storage-object-name"

    storage_client = storage.Client()
    bucket = storage_client.bucket(bucket_name)
    blob = bucket.blob(destination_blob_name)

    blob.upload_from_filename(source_file_name)

    print(
        "File {} uploaded to {}.".format(
            source_file_name, destination_blob_name
        )
    )

Ruby

如需了解详情,请参阅 Cloud Storage Ruby API 参考文档

# project_id        = "Your Google Cloud project ID"
# bucket_name       = "Your Google Cloud Storage bucket name"
# local_file_path   = "Path to local file to upload"
# storage_file_path = "Path to store the file in Google Cloud Storage"

require "google/cloud/storage"

storage = Google::Cloud::Storage.new project_id: project_id
bucket  = storage.bucket bucket_name

file = bucket.create_file local_file_path, storage_file_path

puts "Uploaded #{file.name}"

REST API

JSON API

  1. OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。
  2. 通过 POST Object 请求,使用 cURL 调用 JSON API。对于 www.example.com 的索引页面:

    curl -X POST --data-binary @index.html \
      -H "Content-Type: text/html" \
      -H "Authorization: Bearer ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg" \
      "https://storage.googleapis.com/upload/storage/v1/b/www.example.com/o?uploadType=media&name=index.html"

XML API

  1. OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。
  2. 通过 PUT Object 请求,使用 cURL 调用 XML API。对于 www.example.com 的索引页面:

    curl -X PUT --data-binary @index.html \
      -H "Authorization: Bearer ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg" \
      -H "Content-Type: text/html" \
      "https://storage.googleapis.com/www.example.com/index.html"

共享您的文件

您可以将存储分区中的所有文件设置为公开访问,也可以将各个对象设置为可通过您的网站访问。通常,这样可以更轻松、更快地访问存储分区中的所有文件。

  • 如需使所有文件都可访问,请遵循 Cloud Storage 指南,以使对象组可公开读取

  • 如需使单个文件可访问,请遵循 Cloud Storage 指南,以使单个对象可公开读取

如果您选择控制单个文件的可访问性,则可以为存储分区设置默认对象 ACL,以便在默认情况下共享后续上传到存储分区的文件。

推荐:分配专用页面

您可以分配索引页面后缀(由 MainPageSuffix 属性控制)和自定义错误页面(由 NotFoundPage 属性控制)。分配这些页面都是可选的,但如果没有索引页,则当用户访问您的顶级网站(例如 http://www.example.com)时,将没有内容可以提供。

索引页面

索引页面(也称为 Web 服务器目录索引)是指当访问者请求访问的网址不具有关联文件时系统向其传送的一个文件。如果您分配了 MainPageSuffix,Cloud Storage 则会查找使用该名称且前缀与访问者请求访问的网址匹配的文件。

例如,假设您将静态网站的 MainPageSuffix 设置为 index.html。另外假设您的存储分区 www.example.com 中没有名为 directory 的文件。在这种情况下,如果用户请求访问网址 http://www.example.com/directory,Cloud Storage 则会尝试传送 www.example.com/directory/index.html 文件。如果该文件也不存在,Cloud Storage 则会返回错误页面。

MainPageSuffix 还可控制系统在用户请求访问顶级网站时传送的文件。继续上面的示例,如果用户请求访问 http://www.example.com,Cloud Storage 则会尝试传送文件 www.example.com/index.html

如需详细了解传送索引页面的情况,请参阅网站配置示例

错误页面

错误页面是指当静态网站访问者请求访问的网址与现有文件不对应时系统向其返回的文件。如果您分配了 MainPageSuffix,那么仅当使用请求名称的文件和适用索引页面都不存在时,Cloud Storage 才会返回错误页面。

返回错误页面时,http 响应代码为 404NotFoundPage 属性控制充当错误页面的文件。如果您没有设置 NotFoundPage,用户则会收到一般错误页面。

设置 MainPageSuffixNotFoundPage

在以下示例中,MainPageSuffix 设置为 index.htmlNotFoundPage 设置为 404.html

控制台

  1. 在 Google Cloud Console 中打开 Cloud Storage 浏览器。
    打开 Cloud Storage 浏览器
  2. 在存储分区列表中,找到您所创建的存储分区。

  3. 点击与存储分区关联的存储分区溢出菜单 (),然后选择修改网站配置

  4. 在网站配置对话框中,指定主页面和错误页面。

  5. 点击保存

gsutil

使用 gsutil web set 命令设置 MainPageSuffix 属性(通过 -m 标志)和 NotFoundPage(通过 -e 标志):

gsutil web set -m index.html -e 404.html gs://www.example.com

如果成功,此命令会返回以下内容:

Setting website config on gs://www.example.com/...

REST API

JSON API

  1. OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。
  2. 创建一个 .json 文件,以将 website 对象中的 mainPageSuffixnotFoundPage 属性设置为所需页面:

    {
      "website":{
        "mainPageSuffix": "index.html",
        "notFoundPage": "404.html"
      }
    }
  3. 通过 PATCH Bucket 请求,使用 cURL 调用 JSON API。对于 www.example.com:

    curl -X PATCH --data-binary @web-config.json \
      -H "Authorization: Bearer ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg" \
      -H "Content-Type: application/json" \
      "https://storage.googleapis.com/storage/v1/b/www.example.com"

XML API

  1. OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。
  2. 创建一个 .xml 文件,以将 WebsiteConfiguration 元素中的 MainPageSuffixNotFoundPage 元素设置为所需页面:

    <WebsiteConfiguration>
      <MainPageSuffix>index.html</MainPageSuffix>
      <NotFoundPage>404.html</NotFoundPage>
    </WebsiteConfiguration>
  3. 通过 PUT Bucket 请求和 websiteConfig 查询字符串参数,使用 cURL 调用 XML API。对于 www.example.com:

    curl -X PUT --data-binary @web-config.xml \
      -H "Authorization: Bearer ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg" \
      https://storage.googleapis.com/www.example.com?websiteConfig

测试网站

通过在浏览器中请求访问相应域名,您可以验证内容是否来源于相应存储分区。为实现此目的,您可以使用对象路径,也可以仅使用域名(如果设置了 MainPageSuffix 属性)。

例如,如果您的一个名为 test.html 的对象存储在名为 www.example.com 的存储分区中,请在您的浏览器中转至 www.example.com/test.html 以检查是否可以访问此对象。

清理

完成“托管静态网站”教程后,您可以清理在 GCP 上创建的资源,以避免这些资源占用配额,日后产生费用。以下部分介绍如何删除或关闭这些资源。

删除项目

为了避免产生费用,最简单的方法是删除您为本教程创建的项目。

如需删除项目,请执行以下操作:

  1. 在 GCP Console 中,转到管理资源页面。

    转到“管理资源”页面

  2. 在项目列表中,选择您要删除的项目,然后点击删除 delete。
  3. 在对话框中输入项目 ID,然后点击关闭以删除项目。

删除存储分区

如果您不想删除整个项目,可删除用于托管您的网站的存储分区:

控制台

  1. 在 Google Cloud Console 中打开 Cloud Storage 浏览器。
    打开 Cloud Storage 浏览器
  2. 选中要删除的存储分区所关联的复选框。

  3. 点击删除

  4. 在出现的叠加窗口中,点击删除以确认要删除此存储分区及其内容。

gsutil

使用带有 -r 标志的 gsutil rm 命令删除存储分区及其所含内容:

gsutil rm -r gs://www.example.com

响应类似如下示例:

Removing gs://www.example.com/...

代码示例

C++

如需了解详情,请参阅 Cloud Storage C++ API 参考文档

namespace gcs = google::cloud::storage;
[](gcs::Client client, std::string bucket_name) {
  google::cloud::Status status = client.DeleteBucket(bucket_name);

  if (!status.ok()) {
    throw std::runtime_error(status.message());
  }

  std::cout << "The bucket " << bucket_name << " was deleted successfully.\n";
}

C#

如需了解详情,请参阅 Cloud Storage C# API 参考文档

private void DeleteBucket(string bucketName)
{
    var storage = StorageClient.Create();
    storage.DeleteBucket(bucketName);
    Console.WriteLine($"Deleted {bucketName}.");
}

Go

如需了解详情,请参阅 Cloud Storage Go API 参考文档

if err := client.Bucket(bucketName).Delete(ctx); err != nil {
	return err
}

Java

如需了解详情,请参阅 Cloud Storage Java API 参考文档

boolean deleted = bucket.delete(BucketSourceOption.metagenerationMatch());
if (deleted) {
  // the bucket was deleted
} else {
  // the bucket was not found
}

Node.js

如需了解详情,请参阅 Cloud Storage Node.js API 参考文档

// Imports the Google Cloud client library
const {Storage} = require('@google-cloud/storage');

// Creates a client
const storage = new Storage();

/**
 * TODO(developer): Uncomment the following line before running the sample.
 */
// const bucketName = 'Name of a bucket, e.g. my-bucket';

// Deletes the bucket
await storage.bucket(bucketName).delete();

console.log(`Bucket ${bucketName} deleted.`);

PHP

如需了解详情,请参阅 Cloud Storage PHP API 参考文档

use Google\Cloud\Storage\StorageClient;

/**
 * Delete a Cloud Storage Bucket.
 *
 * @param string $bucketName the name of the bucket to delete.
 *
 * @return void
 */
function delete_bucket($bucketName)
{
    $storage = new StorageClient();
    $bucket = $storage->bucket($bucketName);
    $bucket->delete();
    printf('Bucket deleted: %s' . PHP_EOL, $bucket->name());
}

Python

如需了解详情,请参阅 Cloud Storage Python API 参考文档

from google.cloud import storage

def delete_bucket(bucket_name):
    """Deletes a bucket. The bucket must be empty."""
    # bucket_name = "your-bucket-name"

    storage_client = storage.Client()

    bucket = storage_client.get_bucket(bucket_name)
    bucket.delete()

    print("Bucket {} deleted".format(bucket.name))

Ruby

如需了解详情,请参阅 Cloud Storage Ruby API 参考文档

# project_id  = "Your Google Cloud project ID"
# bucket_name = "Name of your Google Cloud Storage bucket to delete"

require "google/cloud/storage"

storage = Google::Cloud::Storage.new project_id: project_id
bucket  = storage.bucket bucket_name

bucket.delete

puts "Deleted bucket: #{bucket.name}"

REST API

JSON API

  1. OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。
  2. 使用 cURL,通过 DELETE Bucket 请求调用 JSON API

    curl -X DELETE \
      -H "Authorization: Bearer ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg" \
      "https://storage.googleapis.com/storage/v1/b/www.example.com"

如果成功,响应将包含 204 状态代码。

XML API

  1. OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。
  2. 通过 DELETE Bucket 请求,使用 cURL 调用 XML API

    curl -X DELETE \
      -H "Authorization: Bearer ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg" \
      "https://storage.googleapis.com/www.example.com"

后续步骤