使用请求者付款

本页面介绍如何设置请求者付款功能,并通过相关示例说明如何对启用了请求者付款功能的存储分区发起请求。有关此功能的说明,请参阅请求者付款

设置请求者付款

以下部分介绍如何启用和停用请求者付款功能,以及如何检查存储分区是否启用了请求者付款功能。

前提条件

  1. 要启用和停用请求者付款功能,您必须具有 storage.buckets.update 权限。使用 gsutil 时,您还需要具有 storage.buckets.setIamPolicy 权限。

  2. 要获取存储分区的请求者付款功能状态,您必须具有 storage.buckets.get 权限。

系统会根据角色向用户授予权限。例如,具有 roles/storage.admin 角色的用户将拥有上述所有权限。您可以将角色添加至所需的存储分区,也可以添加至包含该存储分区的项目

启用请求者付款功能

要为存储分区启用请求者付款功能,请按如下所述操作:

Console

  1. 在 Google Cloud Platform Console 中打开 Cloud Storage 浏览器。
    打开 Cloud Storage 浏览器

  2. 在存储分区列表中,找到要启用的存储分区,然后点击请求者付款列中的关闭按钮。

  3. 在随即显示的窗口中,点击启用

此功能启用后,相应存储分区对应的请求者付款列中会显示一个绿色气泡和一个开启按钮。

gsutil

使用 gsutil requesterpays set on 命令并将 [VALUES_IN_BRACKETS] 替换为适当值:

gsutil requesterpays set on gs://[BUCKET_NAME]

代码示例

C#

如需详细了解如何安装和创建 Cloud Storage 客户端,请参阅 Cloud Storage 客户端库

void EnableRequesterPays(string bucketName)
{
    var storage = StorageClient.Create();
    var bucket = storage.GetBucket(bucketName, new GetBucketOptions()
    {
        UserProject = s_projectId
    });
    bucket.Billing = bucket.Billing ?? new Bucket.BillingData();
    bucket.Billing.RequesterPays = true;
    bucket = storage.UpdateBucket(bucket, new UpdateBucketOptions()
    {
        // Use IfMetagenerationMatch to avoid race conditions.
        IfMetagenerationMatch = bucket.Metageneration,
        UserProject = s_projectId
    });
}

Go

如需详细了解如何安装和创建 Cloud Storage 客户端,请参阅 Cloud Storage 客户端库

bucket := c.Bucket(bucketName)
if _, err := bucket.Update(ctx, storage.BucketAttrsToUpdate{
	RequesterPays: true,
}); err != nil {
	return err
}

Java

如需详细了解如何安装和创建 Cloud Storage 客户端,请参阅 Cloud Storage 客户端库

// Instantiate a Google Cloud Storage client
Storage storage = StorageOptions.getDefaultInstance().getService();

// The name of the existing bucket to enable requester-paying for, e.g. "my-bucket"
// String bucketName = "my-bucket"
BucketInfo bucketInfo = BucketInfo.newBuilder(bucketName)
    .setRequesterPays(true)
    .build();

// Update the bucket, throws StorageException on failure
Bucket bucket = storage.update(bucketInfo);

System.out.println("Requester pay status for " + bucketName +": " + bucket.requesterPays());

Node.js

如需详细了解如何安装和创建 Cloud Storage 客户端,请参阅 Cloud Storage 客户端库

// 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';

// Enables requester-pays requests
storage
  .bucket(bucketName)
  .enableRequesterPays()
  .then(() => {
    console.log(
      `Requester-pays requests have been enabled for bucket ${bucketName}.`
    );
  })
  .catch(err => {
    console.error(`ERROR:`, err);
  });

PHP

如需详细了解如何安装和创建 Cloud Storage 客户端,请参阅 Cloud Storage 客户端库

use Google\Cloud\Storage\StorageClient;

/**
 * Enable a bucket's requesterpays metadata.
 *
 * @param string $projectId Your Google Cloud project ID.
 * @param string $bucketName Name of your Google Cloud Storage bucket.
 *
 * @return void
 */
function enable_requester_pays($projectId, $bucketName)
{
    $storage = new StorageClient([
        'projectId' => $projectId
    ]);
    $bucket = $storage->bucket($bucketName);
    $bucket->update([
        'billing' => [
            'requesterPays' => true
        ]
    ]);
    printf('Requester pays has been enabled for %s' . PHP_EOL, $bucketName);
}

Python

如需详细了解如何安装和创建 Cloud Storage 客户端,请参阅 Cloud Storage 客户端库

def enable_requester_pays(bucket_name):
    """Enable a bucket's requesterpays metadata"""
    storage_client = storage.Client()
    bucket = storage_client.get_bucket(bucket_name)
    bucket.requester_pays = True
    bucket.patch()
    print('Requester Pays has been enabled for {}'.format(bucket_name))

Ruby

如需详细了解如何安装和创建 Cloud Storage 客户端,请参阅 Cloud Storage 客户端库

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

require "google/cloud/storage"

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

bucket.requester_pays = true

puts "Requester pays has been enabled for #{bucket_name}"

REST API

JSON API

  1. OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。
  2. 创建一个包含以下信息的 .json 文件:
  3. {
      "billing": {
        "requesterPays": true
      }
    }
  4. 使用 cURL 通过 PATCH Bucket 请求调用 JSON API,并将 [VALUES_IN_BRACKETS] 替换为适当值:
    curl -X PATCH --data-binary @[JSON_FILE_NAME].json \
        -H "Authorization: Bearer [OAUTH2_TOKEN]" \
        -H "Content-Type: application/json" \
        "https://www.googleapis.com/storage/v1/b/[BUCKET_NAME]?fields=billing"

XML API

  1. OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。
  2. 创建一个包含以下信息的 .xml 文件,并将 [VALUES_IN_BRACKETS] 替换为适当值:
    <BillingConfiguration>
      <RequesterPays>Enabled</RequesterPays>
    </BillingConfiguration>
  3. 使用 cURL 通过 PUT Bucket 请求和 requesterpays 查询字符串参数调用 XML API,并将 [VALUES_IN_BRACKETS] 替换为适当值:
    curl -X PUT --data-binary @[XML_FILE_NAME].xml \
        -H "Authorization: Bearer [OAUTH2_TOKEN]" \
        "https://storage.googleapis.com/[BUCKET_NAME]?billing"

停用请求者付款功能

要为存储分区停用请求者付款功能,请按如下所述操作:

Console

  1. 在 Google Cloud Platform Console 中打开 Cloud Storage 浏览器。
    打开 Cloud Storage 浏览器

  2. 在存储分区列表中,找到要停用的存储分区,然后点击请求者付款列中的开启按钮。

  3. 在随即出现的窗口中,点击停用

此功能停用后,请求者付款列中会显示一个灰色气泡和一个关闭按钮。

gsutil

使用 gsutil requesterpays set off 命令并将 [VALUES_IN_BRACKETS] 替换为适当值:

gsutil requesterpays set off gs://[BUCKET_NAME]

代码示例

C#

如需详细了解如何安装和创建 Cloud Storage 客户端,请参阅 Cloud Storage 客户端库

void DisableRequesterPays(string bucketName)
{
    var storage = StorageClient.Create();
    var bucket = storage.GetBucket(bucketName, new GetBucketOptions()
    {
        UserProject = s_projectId
    });
    bucket.Billing = bucket.Billing ?? new Bucket.BillingData();
    bucket.Billing.RequesterPays = false;
    bucket = storage.UpdateBucket(bucket, new UpdateBucketOptions()
    {
        // Use IfMetagenerationMatch to avoid race conditions.
        IfMetagenerationMatch = bucket.Metageneration,
        UserProject = s_projectId
    });
}

Go

如需详细了解如何安装和创建 Cloud Storage 客户端,请参阅 Cloud Storage 客户端库

bucket := c.Bucket(bucketName)
if _, err := bucket.Update(ctx, storage.BucketAttrsToUpdate{
	RequesterPays: false,
}); err != nil {
	return err
}

Java

如需详细了解如何安装和创建 Cloud Storage 客户端,请参阅 Cloud Storage 客户端库

// Instantiate a Google Cloud Storage client
Storage storage = StorageOptions.getDefaultInstance().getService();

// The name of the bucket to disable requester-paying for, e.g. "my-bucket"
// String bucketName = "my-bucket"
BucketInfo bucketInfo = BucketInfo.newBuilder(bucketName)
    .setRequesterPays(false)
    .build();

// Update the bucket, throws StorageException on failure
Bucket bucket = storage.update(bucketInfo);

System.out.println("Requester pays status for " + bucketName +": " + bucket.requesterPays());

Node.js

如需详细了解如何安装和创建 Cloud Storage 客户端,请参阅 Cloud Storage 客户端库

// 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';

// Disables requester-pays requests
storage
  .bucket(bucketName)
  .disableRequesterPays()
  .then(() => {
    console.log(
      `Requester-pays requests have been disabled for bucket ${bucketName}.`
    );
  })
  .catch(err => {
    console.error(`ERROR:`, err);
  });

PHP

如需详细了解如何安装和创建 Cloud Storage 客户端,请参阅 Cloud Storage 客户端库

use Google\Cloud\Storage\StorageClient;

/**
 * Disable a bucket's requesterpays metadata.
 *
 * @param string $projectId Your Google Cloud project ID.
 * @param string $bucketName Name of your Google Cloud Storage bucket.
 *
 * @return void
 */
function disable_requester_pays($projectId, $bucketName)
{
    $storage = new StorageClient([
        'projectId' => $projectId
    ]);
    $bucket = $storage->bucket($bucketName);
    $bucket->update([
        'billing' => [
            'requesterPays' => false
        ]
    ]);
    printf('Requester pays has been disabled for %s' . PHP_EOL, $bucketName);
}

Python

如需详细了解如何安装和创建 Cloud Storage 客户端,请参阅 Cloud Storage 客户端库

def disable_requester_pays(bucket_name):
    """Disable a bucket's requesterpays metadata"""
    storage_client = storage.Client()
    bucket = storage_client.get_bucket(bucket_name)
    bucket.requester_pays = False
    bucket.patch()
    print('Requester Pays has been disabled for {}'.format(bucket_name))

Ruby

如需详细了解如何安装和创建 Cloud Storage 客户端,请参阅 Cloud Storage 客户端库

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

require "google/cloud/storage"

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

bucket.requester_pays = false

puts "Requester pays has been disabled for #{bucket_name}"

REST API

JSON API

  1. OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。
  2. 创建一个包含以下信息的 .json 文件:
  3. {
      "billing": {
        "requesterPays": false
      }
    }
  4. 使用 cURL 通过 PATCH Bucket 请求调用 JSON API,并将 [VALUES_IN_BRACKETS] 替换为适当值:
    curl -X PATCH --data-binary @[JSON_FILE_NAME].json \
        -H "Authorization: Bearer [OAUTH2_TOKEN]" \
        -H "Content-Type: application/json" \
        "https://www.googleapis.com/storage/v1/b/[BUCKET_NAME]?fields=billing"

XML API

  1. OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。
  2. 创建一个包含以下信息的 .xml 文件,并将 [VALUES_IN_BRACKETS] 替换为适当值:
    <BillingConfiguration>
      <RequesterPays>Disabled</RequesterPays>
    </BillingConfiguration>
  3. 使用 cURL 通过 PUTBucket 请求和 requesterpays 查询字符串参数调用 XML API,并将 [VALUES_IN_BRACKETS] 替换为适当值:
    curl -X PUT --data-binary @[XML_FILE_NAME].xml \
        -H "Authorization: Bearer [OAUTH2_TOKEN]" \
        "https://storage.googleapis.com/[BUCKET_NAME]?billing"

检查请求者付款功能是否已启用

要检查某个存储分区是否启用了请求者付款功能,请按如下所示操作:

Console

  1. 在 Google Cloud Platform Console 中打开 Cloud Storage 浏览器。
    打开 Cloud Storage 浏览器

  2. 在存储分区列表中,在请求者付款列中查看每个存储分区的请求者付款功能状态。

如果此功能已启用,状态则为绿色且显示有文字开启

gsutil

使用 gsutil requesterpays get 命令并将 [VALUES_IN_BRACKETS] 替换为适当值:

gsutil requesterpays get gs://[BUCKET_NAME]

如果请求者付款功能已启用,您会看到类似如下所示的响应:

gs://[BUCKET_NAME]: Enabled

代码示例

C#

如需详细了解如何安装和创建 Cloud Storage 客户端,请参阅 Cloud Storage 客户端库

bool GetRequesterPays(string bucketName)
{
    var storage = StorageClient.Create();
    var bucket = storage.GetBucket(bucketName, new GetBucketOptions()
    {
        UserProject = s_projectId
    });
    bool? requesterPaysOrNull = bucket.Billing?.RequesterPays;
    bool requesterPays =
        requesterPaysOrNull.HasValue ? requesterPaysOrNull.Value : false;
    Console.WriteLine("RequesterPays: {0}", requesterPays);
    return requesterPays;
}

Go

如需详细了解如何安装和创建 Cloud Storage 客户端,请参阅 Cloud Storage 客户端库

attrs, err := c.Bucket(bucketName).Attrs(ctx)
if err != nil {
	return err
}
fmt.Printf("Is requester pays enabled? %v\n", attrs.RequesterPays)

Java

如需详细了解如何安装和创建 Cloud Storage 客户端,请参阅 Cloud Storage 客户端库

// Instantiate a Google Cloud Storage client
Storage storage = StorageOptions.getDefaultInstance().getService();

// The name of the bucket to retrieve requester-pays status, eg. "my-bucket"
// String bucketName = "my-bucket"
// Retrieve the bucket, throws StorageException on failure
Bucket bucket = storage.get(bucketName,
    Storage.BucketGetOption.fields(BucketField.BILLING));

System.out.println("Requester pays status : " + bucket.requesterPays());

Node.js

如需详细了解如何安装和创建 Cloud Storage 客户端,请参阅 Cloud Storage 客户端库

// 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';

// Gets the requester-pays status of a bucket
storage
  .bucket(bucketName)
  .getMetadata()
  .then(data => {
    let status;
    const metadata = data[0];
    if (metadata && metadata.billing && metadata.billing.requesterPays) {
      status = `enabled`;
    } else {
      status = `disabled`;
    }
    console.log(
      `Requester-pays requests are ${status} for bucket ${bucketName}.`
    );
  })
  .catch(err => {
    console.error(`ERROR:`, err);
  });

PHP

如需详细了解如何安装和创建 Cloud Storage 客户端,请参阅 Cloud Storage 客户端库

use Google\Cloud\Storage\StorageClient;

/**
 * Get a bucket's requesterpays metadata.
 *
 * @param string $projectId Your Google Cloud project ID.
 * @param string $bucketName Name of your Google Cloud Storage bucket.
 *
 * @return void
 */
function get_requester_pays_status($projectId, $bucketName)
{
    $storage = new StorageClient([
        'projectId' => $projectId
    ]);
    $bucket = $storage->bucket($bucketName);
    $bucketInformation = $bucket->info();
    $requesterPaysStatus = $bucketInformation['billing']['requesterPays'];
    if ($requesterPaysStatus) {
        printf('Requester Pays is enabled for %s' . PHP_EOL, $bucketName);
    } else {
        printf('Requester Pays is disabled for %s' . PHP_EOL, $bucketName);
    }
}

Python

如需详细了解如何安装和创建 Cloud Storage 客户端,请参阅 Cloud Storage 客户端库

def get_requester_pays_status(bucket_name):
    """Get a bucket's requester pays metadata"""
    storage_client = storage.Client()
    bucket = storage_client.get_bucket(bucket_name)
    requester_pays_status = bucket.requester_pays
    if requester_pays_status:
        print('Requester Pays is enabled for {}'.format(bucket_name))
    else:
        print('Requester Pays is disabled for {}'.format(bucket_name))

Ruby

如需详细了解如何安装和创建 Cloud Storage 客户端,请参阅 Cloud Storage 客户端库

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

require "google/cloud/storage"

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

if bucket.requester_pays
  puts "Requester Pays is enabled for #{bucket_name}"
else
  puts "Requester Pays is disabled for #{bucket_name}"
end

REST API

JSON API

  1. OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。
  2. 使用 cURL 通过 GET Bucket 请求调用 JSON API,并将 [VALUES_IN_BRACKETS] 替换为适当值:
    curl -X GET -H "Authorization: Bearer [OAUTH2_TOKEN]" \
        "https://www.googleapis.com/storage/v1/b/[BUCKET_NAME]?fields=billing"

XML API

  1. OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。
  2. 使用 cURL 通过 GET Bucket 请求和 billing 查询字符串参数调用 XML API,并将 [VALUES_IN_BRACKETS] 替换为适当值:
    curl -X GET \
        -H "Authorization: Bearer [OAUTH2_TOKEN]" \
        "https://storage.googleapis.com/[BUCKET_NAME]?billing"

访问启用了请求者付款功能的存储分区

以下示例显示了如何添加结算项目,以便从启用了请求者付款功能的存储分区中下载对象。若要对启用了请求者付款功能的存储分区或该存储分区中的对象执行其他请求,可以按照与此类似的过程进行操作。请参阅请求者付款功能访问要求,了解前提条件注意事项。

Console

  1. 在 Google Cloud Platform Console 中打开 Cloud Storage 浏览器。
    打开 Cloud Storage 浏览器

  2. 在存储分区列表中,点击要从中下载对象的存储分区。

  3. 在随即出现的窗口中,使用下拉菜单选择结算项目。

  4. 选中相应复选框以确认您有权使用所选项目进行结算。

  5. 点击保存

  6. 按照正常方式下载对象

gsutil

在您的请求中使用 -u 标志和要结算的项目的 ID,并将 [VALUES_IN_BRACKETS] 替换为适当值:

gsutil -u [PROJECT_ID] cp gs://[BUCKET_NAME]/[OBJECT_NAME] [OBJECT_DESTINATION]

代码示例

C#

如需详细了解如何安装和创建 Cloud Storage 客户端,请参阅 Cloud Storage 客户端库

private void DownloadObjectRequesterPays(string bucketName,
    string objectName, string localPath = null)
{
    var storage = StorageClient.Create();
    localPath = localPath ?? Path.GetFileName(objectName);
    using (var outputFile = File.OpenWrite(localPath))
    {
        storage.DownloadObject(bucketName, objectName, outputFile,
            new DownloadObjectOptions()
            {
                UserProject = s_projectId
            });
    }
    Console.WriteLine(
        $"downloaded {objectName} to {localPath} paid by {s_projectId}.");
}

Go

如需详细了解如何安装和创建 Cloud Storage 客户端,请参阅 Cloud Storage 客户端库

bucket := client.Bucket(bucketName).UserProject(billingProjectID)
src := bucket.Object(object)

f, err := os.OpenFile(localpath, os.O_RDWR|os.O_CREATE, 0755)
if err != nil {
	return err
}
rc, err := src.NewReader(ctx)
if err != nil {
	return err
}
if _, err := io.Copy(f, rc); err != nil {
	return err
}
if err := rc.Close(); err != nil {
	return err
}
fmt.Printf("Downloaded using %v as billing project.\n", billingProjectID)

Java

如需详细了解如何安装和创建 Cloud Storage 客户端,请参阅 Cloud Storage 客户端库

// The project ID to bill
// String projectId = "my-billable-project-id";

// The name of the bucket to access
// String bucketName = "my-bucket";

// The name of the remote file to download
// String srcFilename = "file.txt";

// The path to which the file should be downloaded
// Path destFilePath = Paths.get("/local/path/to/file.txt");

// Instantiate a Google Cloud Storage client
Storage storage = StorageOptions.getDefaultInstance().getService();

// Get specific file from specified bucket
Blob blob = storage.get(BlobId.of(bucketName, srcFilename));

// Download file to specified path
blob.downloadTo(destFilePath, Blob.BlobSourceOption.userProject(projectId));

Node.js

如需详细了解如何安装和创建 Cloud Storage 客户端,请参阅 Cloud Storage 客户端库

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

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

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// const projectId = 'The project ID to bill from, e.g. some-project-id';
// const bucketName = 'Name of a bucket, e.g. my-bucket';
// const srcFilename = 'Name of file to download, e.g. file.txt';
// const destFilename = 'Local destination of file, e.g. ./local/path/to/file.txt';

const options = {
  // The path to which the file should be downloaded, e.g. "./file.txt"
  destination: destFilename,

  // The project to bill from, if requester-pays requests are enabled
  userProject: projectId,
};

// Downloads the file
storage
  .bucket(bucketName)
  .file(srcFilename)
  .download(options)
  .then(() => {
    console.log(
      `gs://${bucketName}/${srcFilename} downloaded to ${destFilename} using requester-pays requests.`
    );
  })
  .catch(err => {
    console.error(`ERROR:`, err);
  });

PHP

如需详细了解如何安装和创建 Cloud Storage 客户端,请参阅 Cloud Storage 客户端库

use Google\Cloud\Storage\StorageClient;

/**
 * Download file using specified project as requester
 *
 * @param string $projectId Your Google Cloud billable project ID.
 * @param string $bucketName A Google Cloud Storage bucket name.
 * @param string $objectName Name of object in Google Cloud Storage to download locally.
 * @param string $destination Path to local file to save.
 *
 * @return void
 */
function download_file_requester_pays($projectId, $bucketName, $objectName, $destination)
{
    $storage = new StorageClient([
        'projectId' => $projectId
    ]);
    $userProject = true;
    $bucket = $storage->bucket($bucketName, $userProject);
    $object = $bucket->object($objectName);
    $object->downloadToFile($destination);
    printf('Downloaded gs://%s/%s to %s using requester-pays requests.' . PHP_EOL,
        $bucketName, $objectName, basename($destination));
}

Python

如需详细了解如何安装和创建 Cloud Storage 客户端,请参阅 Cloud Storage 客户端库

def download_file_requester_pays(
        bucket_name, project_id, source_blob_name, destination_file_name):
    """Download file using specified project as the requester"""
    storage_client = storage.Client()
    user_project = project_id
    bucket = storage_client.bucket(bucket_name, user_project)
    blob = bucket.blob(source_blob_name)
    blob.download_to_filename(destination_file_name)

    print('Blob {} downloaded to {} using a requester-pays request.'.format(
        source_blob_name,
        destination_file_name))

Ruby

如需详细了解如何安装和创建 Cloud Storage 客户端,请参阅 Cloud Storage 客户端库

# project_id  = "Your Google Cloud billable project ID"
# bucket_name = "A Google Cloud Storage bucket name"
# file_name   = "Name of file in Google Cloud Storage to download locally"
# local_path  = "Destination path for downloaded file"

require "google/cloud/storage"

storage = Google::Cloud::Storage.new project: project_id
bucket  = storage.bucket bucket_name, skip_lookup: true, user_project: true
file    = bucket.file file_name

file.download local_path

puts "Downloaded #{file.name} using billing project #{project_id}"

REST API

JSON API

  1. OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。
  2. 在您的请求中,加入 userProject 查询字符串参数并将其设置为要结算的项目的 ID,将 [VALUES_IN_BRACKETS] 替换为适当值:
    curl -X GET \
        -H "Authorization: Bearer [OAUTH2_TOKEN]" \
        -o "[SAVE_TO_LOCATION]" \
        "https://www.googleapis.com/storage/v1/b/[BUCKET_NAME]/o/[OBJECT_NAME]?alt=media&userProject=[PROJECT_ID]"

XML API

  1. OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。
  2. 在您的请求中,加入 x-goog-user-project 标头并将其设置为要结算的项目的 ID,将 [VALUES_IN_BRACKETS] 替换为适当值:
    curl -X GET \
        -H "Authorization: Bearer [OAUTH2_TOKEN]" \
        -H "x-goog-user-project: [PROJECT_ID]" \
        -o "[SAVE_TO_LOCATION]" \
        "https://storage.googleapis.com/[BUCKET_NAME]/[OBJECT_NAME]"

此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
Cloud Storage 文档