Como usar pagamentos do solicitante

Nesta página descrevemos como configurar o recurso Pagamentos do solicitante e fornecemos um exemplo de como fazer a solicitação em um intervalo em que o recurso está ativado. Para uma descrição desse recurso, consulte Pagamentos do solicitante.

Como configurar Pagamentos do solicitante

Nas seções seguintes mostramos como ativar e desativar Pagamentos do solicitante e como verificar se o recurso está ativado em um intervalo.

Pré-requisitos

  1. Você precisa ter a permissão storage.buckets.get, que permite receber o status de pagamento do solicitante para um intervalo e também é necessário para ativar e desativar Pagamentos do solicitante com o Console do Google Cloud Platform ou gsutil.

  2. Ao ativar ou desativar Pagamentos do solicitante, você precisa ter a permissão storage.buckets.update.

  3. Ao desativar os Pagamentos do solicitante, você precisa incluir um projeto de faturamento em sua solicitação ou ter a permissão resourcemanager.projects.createBillingAssignment. Consulte os Requisitos de uso e acesso dos pagamentos do solicitante para saber mais.

As permissões são concedidas aos usuários por meio de papéis. Por exemplo, os usuários com roles/storage.admin têm todas as permissões storage.buckets acima. Os papéis podem ser adicionados ao projeto que contém o intervalo.

Como ativar Pagamentos do solicitante

Para ativar Pagamentos do solicitante em um intervalo:

Console

  1. Abra o navegador do Cloud Storage no Console do Google Cloud Platform.
    Abra o navegador do Cloud Storage
  2. Na lista de intervalos, encontre aquele que você quer ativar e clique no botão Off na coluna Pagamentos do solicitante.

  3. Na janela exibida, clique em Ativar.

Quando ativado, aparecem um balão verde e On na coluna Pagamentos do solicitante do intervalo.

gsutil

Use o comando gsutil requesterpays set on:

gsutil requesterpays set on gs://[BUCKET_NAME]

em que [BUCKET_NAME] é o nome do intervalo pertinente. Por exemplo, my-bucket.

Amostras de código

C++

Para saber mais, consulte a documentação de referência da API Cloud Storage C++ .

namespace gcs = google::cloud::storage;
using ::google::cloud::StatusOr;
[](gcs::Client client, std::string bucket_name) {
  StatusOr<gcs::BucketMetadata> bucket_metadata = client.PatchBucket(
      bucket_name,
      gcs::BucketMetadataPatchBuilder().SetBilling(gcs::BucketBilling{true}));

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

  std::cout << "Billing configuration for bucket " << bucket_metadata->name()
            << " is updated. The bucket now";
  if (!bucket_metadata->has_billing()) {
    std::cout << " has no billing configuration.\n";
  } else if (bucket_metadata->billing().requester_pays) {
    std::cout << " is configured to charge the caller for requests\n";
  } else {
    std::cout << " is configured to charge the project that owns the bucket"
              << " for requests.\n";
  }
}

C#

Para saber mais, consulte a documentação de referência da API Cloud Storage C# .

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

Para saber mais, consulte a documentação de referência da API Cloud Storage Go .

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

Java

Para saber mais, consulte a documentação de referência da API Cloud Storage Java .

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

Para saber mais, consulte a documentação de referência da API Cloud Storage Node.js .

// 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
await storage.bucket(bucketName).enableRequesterPays();

console.log(
  `Requester-pays requests have been enabled for bucket ${bucketName}.`
);

PHP

Para saber mais, consulte a documentação de referência da API Cloud Storage PHP .

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

Para saber mais, consulte a documentação de referência da API Cloud Storage Python .

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

Para saber mais, consulte a documentação de referência da API Cloud Storage Ruby .

# 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_id: project_id
bucket  = storage.bucket bucket_name

bucket.requester_pays = true

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

APIs REST

API JSON

  1. Receba um token de acesso de autorização do OAuth 2.0 Playground. Configure o Playground para usar suas credenciais do OAuth.
  2. Crie um arquivo .json que contenha as seguintes informações:

    {
      "billing": {
        "requesterPays": true
      }
    }
  3. Use cURL para chamar a API JSON com uma solicitação de PATCH Intervalo:

    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"

    em que:

    • [JSON_FILE_NAME] é o nome do arquivo que você criou na Etapa 2.
    • [OAUTH2_TOKEN] é o nome do token de acesso que você gerou na Etapa 1.
    • [BUCKET_NAME] é o nome do intervalo pertinente. Por exemplo, my-bucket.

API XML

  1. Receba um token de acesso de autorização do OAuth 2.0 Playground. Configure o Playground para usar suas credenciais do OAuth.
  2. Crie um arquivo .xml que contenha as seguintes informações:

    <BillingConfiguration>
      <RequesterPays>Enabled</RequesterPays>
    </BillingConfiguration>
  3. Use cURL para chamar a API XML com uma solicitação de PUT Intervalo e parâmetro de string de consulta de requesterpays:

    curl -X PUT --data-binary @[XML_FILE_NAME].xml \
      -H "Authorization: Bearer [OAUTH2_TOKEN]" \
      "https://storage.googleapis.com/[BUCKET_NAME]?billing"

    em que:

    • [XML_FILE_NAME] é o nome do arquivo quevocê criou na Etapa 2.
    • [OAUTH2_TOKEN] é o nome do token de acesso que você gerou na Etapa 1.
    • [BUCKET_NAME] é o nome do intervalo pertinente. Por exemplo, my-bucket.

Como desativar "Pagamentos do solicitante"

Para desativar Pagamentos do solicitante em um intervalo:

Console

  1. Abra o navegador do Cloud Storage no Console do Google Cloud Platform.
    Abra o navegador do Cloud Storage
  2. Na lista de intervalos, encontre aquele que você quer desativar e clique no botão On na coluna Pagamentos do solicitante.

  3. Na janela exibida, clique em Desativar.

Uma vez desativado, um balão cinza e Off aparecem na coluna Pagamentos do solicitante.

gsutil

Use o comando gsutil requesterpays set off:

gsutil requesterpays set off gs://[BUCKET_NAME]

em que [BUCKET_NAME] é o nome do intervalo pertinente. Por exemplo, my-bucket.

Amostras de código

C++

Para saber mais, consulte a documentação de referência da API Cloud Storage C++ .

namespace gcs = google::cloud::storage;
using ::google::cloud::StatusOr;
[](gcs::Client client, std::string bucket_name, std::string project_id) {
  StatusOr<gcs::BucketMetadata> bucket_metadata = client.PatchBucket(
      bucket_name,
      gcs::BucketMetadataPatchBuilder().SetBilling(gcs::BucketBilling{false}),
      gcs::UserProject(project_id));

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

  std::cout << "Billing configuration for bucket " << bucket_name
            << " is updated. The bucket now";
  if (!bucket_metadata->has_billing()) {
    std::cout << " has no billing configuration.\n";
  } else if (bucket_metadata->billing().requester_pays) {
    std::cout << " is configured to charge the caller for requests\n";
  } else {
    std::cout << " is configured to charge the project that owns the bucket"
              << " for requests.\n";
  }
}

C#

Para saber mais, consulte a documentação de referência da API Cloud Storage C# .

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

Para saber mais, consulte a documentação de referência da API Cloud Storage Go .

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

Java

Para saber mais, consulte a documentação de referência da API Cloud Storage Java .

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

Para saber mais, consulte a documentação de referência da API Cloud Storage Node.js .

// 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
await storage.bucket(bucketName).disableRequesterPays();

console.log(
  `Requester-pays requests have been disabled for bucket ${bucketName}.`
);

PHP

Para saber mais, consulte a documentação de referência da API Cloud Storage PHP .

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

Para saber mais, consulte a documentação de referência da API Cloud Storage Python .

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

Para saber mais, consulte a documentação de referência da API Cloud Storage Ruby .

# 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_id: project_id
bucket  = storage.bucket bucket_name

bucket.requester_pays = false

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

APIs REST

API JSON

  1. Receba um token de acesso de autorização do OAuth 2.0 Playground. Configure o Playground para usar suas credenciais do OAuth.
  2. Crie um arquivo .json que contenha as seguintes informações:

    {
      "billing": {
        "requesterPays": false
      }
    }
  3. Use cURL para chamar a API JSON com uma solicitação de PATCH Intervalo:

    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"

    em que:

    • [JSON_FILE_NAME] é o nome do arquivo que você criou na Etapa 2.
    • [OAUTH2_TOKEN] é o nome do token de acesso que você gerou na Etapa 1.
    • [BUCKET_NAME] é o nome do intervalo pertinente. Por exemplo, my-bucket.

API XML

  1. Receba um token de acesso de autorização do OAuth 2.0 Playground. Configure o Playground para usar suas credenciais do OAuth.
  2. Crie um arquivo .xml que contenha as seguintes informações:

    <BillingConfiguration>
      <RequesterPays>Disabled</RequesterPays>
    </BillingConfiguration>
  3. Use cURL para chamar a API XML com uma solicitação de PUT Intervalo e parâmetro de string de consulta de requesterpays:

    curl -X PUT --data-binary @[XML_FILE_NAME].xml \
      -H "Authorization: Bearer [OAUTH2_TOKEN]" \
      "https://storage.googleapis.com/[BUCKET_NAME]?billing"

    em que:

    • [XML_FILE_NAME] é o nome do arquivo quevocê criou na Etapa 2.
    • [OAUTH2_TOKEN] é o nome do token de acesso que você gerou na Etapa 1.
    • [BUCKET_NAME] é o nome do intervalo pertinente. Por exemplo, my-bucket.

Como verificar se o "Pagamentos do solicitante" está ativado

Para verificar se Pagamentos do solicitante está ativado em um intervalo:

Console

  1. Abra o navegador do Cloud Storage no Console do Google Cloud Platform.
    Abra o navegador do Cloud Storage
  2. Na lista de intervalos, o status de pagamentos do solicitante de cada intervalo é encontrado na coluna Pagamentos do solicitante.

Se ativado, o status é verde e exibe a palavra On.

gsutil

Use o comando gsutil requesterpays get:

gsutil requesterpays get gs://[BUCKET_NAME]

em que [BUCKET_NAME] é o nome do intervalo pertinente. Por exemplo, my-bucket.

A resposta será similar à seguinte se o "Pagamentos do solicitante" estiver ativado:

gs://[BUCKET_NAME]: Enabled

Amostras de código

C++

Para saber mais, consulte a documentação de referência da API Cloud Storage C++ .

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

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

  if (!bucket_metadata->has_billing()) {
    std::cout
        << "The bucket " << bucket_metadata->name() << " does not have a"
        << " billing configuration. The default applies, i.e., the project"
        << " that owns the bucket pays for the requests.\n";
    return;
  }

  if (bucket_metadata->billing().requester_pays) {
    std::cout
        << "The bucket " << bucket_metadata->name()
        << " is configured to charge the calling project for the requests.\n";
  } else {
    std::cout << "The bucket " << bucket_metadata->name()
              << " is configured to charge the project that owns the bucket "
                 "for the requests.\n";
  }
}

C#

Para saber mais, consulte a documentação de referência da API Cloud Storage C# .

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

Para saber mais, consulte a documentação de referência da API Cloud Storage Go .

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

Java

Para saber mais, consulte a documentação de referência da API Cloud Storage Java .

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

Para saber mais, consulte a documentação de referência da API Cloud Storage Node.js .

// 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
const [metadata] = await storage.bucket(bucketName).getMetadata();

let status;
if (metadata && metadata.billing && metadata.billing.requesterPays) {
  status = `enabled`;
} else {
  status = `disabled`;
}
console.log(
  `Requester-pays requests are ${status} for bucket ${bucketName}.`
);

PHP

Para saber mais, consulte a documentação de referência da API Cloud Storage PHP .

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

Para saber mais, consulte a documentação de referência da API Cloud Storage Python .

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

Para saber mais, consulte a documentação de referência da API Cloud Storage Ruby .

# 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_id: 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

APIs REST

API JSON

  1. Receba um token de acesso de autorização do OAuth 2.0 Playground. Configure o Playground para usar suas credenciais do OAuth.
  2. Use cURL para chamar a API JSON com uma solicitação de GET Intervalo:

    curl -X GET \
      -H "Authorization: Bearer [OAUTH2_TOKEN]" \
      "https://www.googleapis.com/storage/v1/b/[BUCKET_NAME]?fields=billing"

    em que:

    • [OAUTH2_TOKEN] é o nome do token de acesso que você gerou na Etapa 1.
    • [BUCKET_NAME] é o nome do intervalo pertinente. Por exemplo, my-bucket.

API XML

  1. Receba um token de acesso de autorização do OAuth 2.0 Playground. Configure o Playground para usar suas credenciais do OAuth.
  2. Use cURL para chamar a API XML com uma solicitação de GET Intervalo e parâmetro de string de consulta de billing:

    curl -X GET \
      -H "Authorization: Bearer [OAUTH2_TOKEN]" \
      "https://storage.googleapis.com/[BUCKET_NAME]?billing"

    em que:

    • [OAUTH2_TOKEN] é o nome do token de acesso que você gerou na Etapa 1.
    • [BUCKET_NAME] é o nome do intervalo pertinente. Por exemplo, my-bucket.

Como acessar intervalos de "Pagamentos do solicitante"

No exemplo a seguir você aprende como incluir um projeto de faturamento para fazer o download de um objeto armazenado em um intervalo de Pagamentos do solicitante. Use um procedimento semelhante para executar outras solicitações no intervalo de Pagamentos do solicitante ou nos objetos que estão nele. Para conhecer os pré-requisitos, consulte os requisitos de acesso do Pagamentos do solicitante.

Console

  1. Abra o navegador do Cloud Storage no Console do Google Cloud Platform.
    Abra o navegador do Cloud Storage
  2. Na lista de intervalos, clique no nome do intervalo que contém o objeto que você quer fazer o download.

  3. Na janela exibida, use o menu suspenso para selecionar um projeto para faturamento.

  4. Marque a caixa de seleção para confirmar que você está autorizado a usar o projeto selecionado para fins de faturamento.

  5. Clique em Salvar.

  6. Faça o download do objeto como você faria normalmente.

gsutil

Use a sinalização -u na sua solicitação:

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

em que:

  • [PROJECT_ID] é a ID do projeto a ser cobrado. Por exemplo, my-project.
  • [BUCKET_NAME] é o nome do intervalo pertinente. Por exemplo, my-bucket.
  • [OBJECT_NAME] é o nome do objeto que você quer fazer o download. Por exemplo, pets/dog.png.
  • [OBJECT_DESTINATION] é o local onde você quer salvar seu objeto. Por exemplo, Desktop/dog.png.

Amostras de código

C++

Para saber mais, consulte a documentação de referência da API Cloud Storage C++ .

namespace gcs = google::cloud::storage;
[](gcs::Client client, std::string bucket_name, std::string object_name,
   std::string billed_project) {
  gcs::ObjectReadStream stream = client.ReadObject(
      bucket_name, object_name, gcs::UserProject(billed_project));

  std::string line;
  while (std::getline(stream, line, '\n')) {
    std::cout << line << "\n";
  }
}

C#

Para saber mais, consulte a documentação de referência da API Cloud Storage C# .

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

Para saber mais, consulte a documentação de referência da API Cloud Storage Go .

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

Para saber mais, consulte a documentação de referência da API Cloud Storage Java .

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

Para saber mais, consulte a documentação de referência da API Cloud Storage Node.js .

// 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
await storage
  .bucket(bucketName)
  .file(srcFilename)
  .download(options);

console.log(
  `gs://${bucketName}/${srcFilename} downloaded to ${destFilename} using requester-pays requests.`
);

PHP

Para saber mais, consulte a documentação de referência da API Cloud Storage PHP .

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

Para saber mais, consulte a documentação de referência da API Cloud Storage Python .

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

Para saber mais, consulte a documentação de referência da API Cloud Storage Ruby .

# 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_id: 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}"

APIs REST

API JSON

  1. Receba um token de acesso de autorização do OAuth 2.0 Playground. Configure o Playground para usar suas credenciais do OAuth.
  2. Na solicitação, inclua o parâmetro de string de consulta de userProject definido para a ID do projeto a ser cobrada:

    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]"

    em que:

    • [OAUTH2_TOKEN] é o token de acesso que você gerou na Etapa 1.
    • [SAVE_TO_LOCATION] é o local onde você quer salvar seu objeto. Por exemplo, Desktop/dog.png.
    • [BUCKET_NAME] é o nome do intervalo pertinente. Por exemplo, my-bucket.
    • [OBJECT_NAME] é o nome do objeto que você quer fazer o download. Por exemplo, pets/dog.png.
    • [PROJECT_ID] é a ID do projeto a ser cobrado. Por exemplo, my-project.

API XML

  1. Receba um token de acesso de autorização do OAuth 2.0 Playground. Configure o Playground para usar suas credenciais do OAuth.
  2. Na solicitação, inclua o cabeçalho x-goog-user-project definido para a ID do projeto a ser cobrada:

    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]"

    em que:

    • [OAUTH2_TOKEN] é o token de acesso que você gerou na Etapa 1.
    • [PROJECT_ID] é a ID do projeto a ser cobrado. Por exemplo, my-project.
    • [SAVE_TO_LOCATION] é o local onde você quer salvar seu objeto. Por exemplo, Desktop/dog.png.
    • [BUCKET_NAME] é o nome do intervalo pertinente. Por exemplo, my-bucket.
    • [OBJECT_NAME] é o nome do objeto que você quer fazer o download. Por exemplo, pets/dog.png.
Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Precisa de ajuda? Acesse nossa página de suporte.