Usa los pagos del solicitante

En esta página, se describe cómo configurar la función de los pagos del solicitante y da un ejemplo de cómo realizar una solicitud en un depósito que tiene habilitada la función de pagos del solicitante. Para obtener una descripción sobre esta función, consulta Pagos del solicitante.

Configura los pagos del solicitante

En las siguientes secciones, se muestra cómo activar y desactivar los pagos de los solicitantes y cómo verificar si el pago de los solicitantes está habilitado en un depósito.

Requisitos previos

  1. Debes tener el permiso de storage.buckets.get, que te permite obtener el estado de los pagos del solicitante de un depósito y también es necesario para inhabilitar y habilitar los pagos del solicitante con Google Cloud Platform Console o gsutil.

  2. Cuando habilitas o inhabilitas los pagos del solicitante, debes tener el permiso de storage.buckets.update. Si usas gsutil, también debes tener el permiso de storage.buckets.setIamPolicy.

  3. Cuando inhabilitas los pagos del solicitante, debes incluir un proyecto de facturación en tu solicitud, o bien tener el permiso de resourcemanager.projects.createBillingAssignment. Consulta los requisitos de uso y acceso de los pagos del solicitante para obtener más información.

Los permisos se otorgan a los usuarios a través de funciones. Por ejemplo, los usuarios con roles/storage.admin tienen todos los permisos de storage.buckets anteriores. Las funciones se pueden agregar al proyecto que contiene el depósito.

Habilita los pagos del solicitante

Sigue los pasos a continuación para habilitar los pagos del solicitante en un depósito:

Console

  1. Abre el navegador de Cloud Storage en Google Cloud Platform Console.
    Abrir el navegador de Cloud Storage
  2. En la lista de depósitos, busca el depósito que deseas habilitar y haz clic en el botón Desactivar en la columna de Pagos del solicitante.

  3. En la ventana que aparece, haz clic en Habilitar.

Una vez habilitado, aparece un cuadro verde y Activados en la columna de Pagos de solicitante del depósito.

gsutil

Usa el comando gsutil requesterpays set on y reemplaza [VALUES_IN_BRACKETS] por los valores adecuados.

gsutil requesterpays set on gs://[BUCKET_NAME]

Ejemplos de código

C++

Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Storage para C++.

namespace gcs = google::cloud::storage;
using google::cloud::StatusOr;
[](gcs::Client client, std::string bucket_name) {
  StatusOr<gcs::BucketMetadata> meta = client.PatchBucket(
      bucket_name,
      gcs::BucketMetadataPatchBuilder().SetBilling(gcs::BucketBilling{true}));
  if (!meta.ok()) {
    std::cerr << "Error setting the billing configuration for bucket "
              << bucket_name << ", status=" << meta.status() << std::endl;
  }
  std::cout << "Billing configuration for bucket " << meta->name()
            << " is updated. The bucket now";
  if (!meta->has_billing()) {
    std::cout << " has no billing configuration." << std::endl;
  } else if (meta->billing().requester_pays) {
    std::cout << " is configured to charge the caller for requests"
              << std::endl;
  } else {
    std::cout << " is configured to charge the project that owns the bucket"
              << " for requests." << std::endl;
  }
}

C#

Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Storage para 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

Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Storage para Go.

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

Java

Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Storage para 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

Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Storage para 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

Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Storage para 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

Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Storage para 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

Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Storage para 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}"

API de REST

API de JSON

  1. Obtén un token de acceso de autorización de OAuth 2.0 Playground. Configura Playground para usar tus propias credenciales de OAuth.
  2. Crea un archivo .json que contenga la siguiente información:
  3. {
      "billing": {
        "requesterPays": true
      }
    }
  4. Usa cURL para llamar a la API de JSON con la solicitud de depósito PATCH y reemplaza [VALUES_IN_BRACKETS] por los valores adecuados:
    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"

API de XML

  1. Obtén un token de acceso de autorización de OAuth 2.0 Playground. Configura Playground para usar tus propias credenciales de OAuth.
  2. Crea un archivo .xml que contenga la siguiente información y reemplaza [VALUES_IN_BRACKETS] por los valores adecuados:
    <BillingConfiguration>
      <RequesterPays>Enabled</RequesterPays>
    </BillingConfiguration>
  3. Usa cURL para llamar a la API de XML con una solicitud de depósito PUT y el parámetro de string de consulta requesterpays, y reemplaza [VALUES_IN_BRACKETS] por los valores adecuados:
    curl -X PUT --data-binary @[XML_FILE_NAME].xml \
        -H "Authorization: Bearer [OAUTH2_TOKEN]" \
        "https://storage.googleapis.com/[BUCKET_NAME]?billing"

Inhabilita los pagos del solicitante

Sigue los pasos a continuación para inhabilitar los pagos del solicitante en un depósito:

Console

  1. Abre el navegador de Cloud Storage en Google Cloud Platform Console.
    Abrir el navegador de Cloud Storage
  2. En la lista de depósitos, busca el depósito que deseas inhabilitar y haz clic en el botón Activar en la columna de Pagos del solicitante.

  3. En la ventana que aparece, haz clic en Inhabilitar.

Una vez inhabilitado, aparece un cuadro verde y Desactivar en la columna de Pagos del solicitante.

gsutil

Usa el comando gsutil requesterpays set off y reemplaza [VALUES_IN_BRACKETS] por los valores adecuados.

gsutil requesterpays set off gs://[BUCKET_NAME]

Ejemplos de código

C++

Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Storage para C++.

namespace gcs = google::cloud::storage;
using google::cloud::StatusOr;
[](gcs::Client client, std::string bucket_name, std::string project_id) {
  StatusOr<gcs::BucketMetadata> meta = client.PatchBucket(
      bucket_name,
      gcs::BucketMetadataPatchBuilder().SetBilling(gcs::BucketBilling{false}),
      gcs::UserProject(project_id));
  if (!meta.ok()) {
    std::cerr << "Error disabling billing configuration for bucket "
              << bucket_name << ", status=" << meta.status() << std::endl;
    return;
  }
  std::cout << "Billing configuration for bucket " << bucket_name
            << " is updated. The bucket now";
  if (!meta->has_billing()) {
    std::cout << " has no billing configuration." << std::endl;
  } else if (meta->billing().requester_pays) {
    std::cout << " is configured to charge the caller for requests"
              << std::endl;
  } else {
    std::cout << " is configured to charge the project that owns the bucket"
              << " for requests." << std::endl;
  }
}

C#

Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Storage para 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

Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Storage para Go.

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

Java

Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Storage para 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

Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Storage para 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

Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Storage para 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

Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Storage para 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

Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Storage para 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}"

API de REST

API de JSON

  1. Obtén un token de acceso de autorización de OAuth 2.0 Playground. Configura Playground para usar tus propias credenciales de OAuth.
  2. Crea un archivo .json que contenga la siguiente información:
  3. {
      "billing": {
        "requesterPays": false
      }
    }
  4. Usa cURL para llamar a la API de JSON con la solicitud de depósito PATCH y reemplaza [VALUES_IN_BRACKETS] por los valores adecuados:
    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"

API de XML

  1. Obtén un token de acceso de autorización de OAuth 2.0 Playground. Configura Playground para usar tus propias credenciales de OAuth.
  2. Crea un archivo .xml que contenga la siguiente información y reemplaza [VALUES_IN_BRACKETS] por los valores adecuados:
    <BillingConfiguration>
      <RequesterPays>Disabled</RequesterPays>
    </BillingConfiguration>
  3. Usa cURL para llamar a la API de XML con una solicitud de depósito PUT y el parámetro de string de consulta requesterpays, y reemplaza [VALUES_IN_BRACKETS] por los valores adecuados:
    curl -X PUT --data-binary @[XML_FILE_NAME].xml \
        -H "Authorization: Bearer [OAUTH2_TOKEN]" \
        "https://storage.googleapis.com/[BUCKET_NAME]?billing"

Verifica si los pagos del solicitante están habilitados

Sigue los pasos a continuación para verificar si los pagos del solicitante están habilitados en un depósito:

Console

  1. Abre el navegador de Cloud Storage en Google Cloud Platform Console.
    Abrir el navegador de Cloud Storage
  2. En la lista de depósitos, el estado de los pagos del solicitante de cada grupo se encuentra en la columna de Pagos del solicitante.

Si están habilitados, el estado está en verde y aparece Activados.

gsutil

Usa el comando gsutil requesterpays get y reemplaza [VALUES_IN_BRACKETS] por los valores adecuados.

gsutil requesterpays get gs://[BUCKET_NAME]

La respuesta es similar a la siguiente si los pagos del solicitante están habilitados:

gs://[BUCKET_NAME]: Enabled

Ejemplos de código

C++

Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Storage para C++.

namespace gcs = google::cloud::storage;
using google::cloud::StatusOr;
[](gcs::Client client, std::string bucket_name) {
  StatusOr<gcs::BucketMetadata> meta = client.GetBucketMetadata(bucket_name);
  if (!meta.ok()) {
    std::cerr << "Error reading metadata for bucket " << bucket_name
              << ", status=" << meta.status() << std::endl;
    return;
  }
  if (!meta->has_billing()) {
    std::cout
        << "The bucket " << meta->name() << " does not have a"
        << " billing configuration. The default applies, i.e., the project"
        << " that owns the bucket pays for the requests." << std::endl;
    return;
  }
  if (meta->billing().requester_pays) {
    std::cout
        << "The bucket " << meta->name()
        << " is configured to charge the calling project for the requests."
        << std::endl;
  } else {
    std::cout << "The bucket " << meta->name()
              << " is configured to charge the project that owns the bucket "
                 "for the requests."
              << std::endl;
  }
}

C#

Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Storage para 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

Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Storage para Go.

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

Java

Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Storage para 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

Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Storage para 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

Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Storage para 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

Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Storage para 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

Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Storage para 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

API de REST

API de JSON

  1. Obtén un token de acceso de autorización de OAuth 2.0 Playground. Configura Playground para usar tus propias credenciales de OAuth.
  2. Usa cURL para llamar a la API de JSON con la solicitud de depósito GET y reemplaza [VALUES_IN_BRACKETS] por los valores adecuados:
    curl -X GET -H "Authorization: Bearer [OAUTH2_TOKEN]" \
        "https://www.googleapis.com/storage/v1/b/[BUCKET_NAME]?fields=billing"

API de XML

  1. Obtén un token de acceso de autorización de OAuth 2.0 Playground. Configura Playground para usar tus propias credenciales de OAuth.
  2. Usa cURL para llamar a la API de XML con una solicitud de depósito GET y el parámetro de string de consulta billing, y reemplaza [VALUES_IN_BRACKETS] por los valores adecuados:
    curl -X GET \
        -H "Authorization: Bearer [OAUTH2_TOKEN]" \
        "https://storage.googleapis.com/[BUCKET_NAME]?billing"

Accede a los depósitos de los pagos del solicitante

En el siguiente ejemplo, se muestra cómo incluir un proyecto de facturación para que puedas descargar un objeto almacenado en un depósito de pagos del solicitante. Usa un procedimiento similar para realizar otras solicitudes en el depósito de pagos del solicitante o en los objetos que contenga. Consulta los requisitos de acceso a los pagos del solicitante para obtener las consideraciones sobre los requisitos previos.

Console

  1. Abre el navegador de Cloud Storage en Google Cloud Platform Console.
    Abrir el navegador de Cloud Storage
  2. En la lista de depósitos, haz clic en el nombre del depósito que contiene el objeto que deseas descargar.

  3. En la ventana que aparece, usa el menú desplegable a fin de seleccionar un proyecto para la facturación.

  4. Marca la casilla de verificación a fin de confirmar que estás autorizado para de usar el proyecto seleccionado con fines de facturación.

  5. Haz clic en Guardar.

  6. Descarga el objeto como lo harías normalmente.

gsutil

Usa la marca -u en tu solicitud junto con el ID del proyecto a facturar y reemplaza [VALUES_IN_BRACKETS] por los valores adecuados:

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

Ejemplos de código

C++

Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Storage para 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));
  while (!stream.eof()) {
    std::string line;
    std::getline(stream, line, '\n');
    if (stream.good()) {
      std::cout << line << std::endl;
    }
  }
}

C#

Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Storage para 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

Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Storage para 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

Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Storage para 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

Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Storage para 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

Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Storage para 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

Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Storage para 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

Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Storage para 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}"

API de REST

API de JSON

  1. Obtén un token de acceso de autorización de OAuth 2.0 Playground. Configura Playground para usar tus propias credenciales de OAuth.
  2. Incluye el parámetro de string de consulta userProject configurado en el ID del proyecto a facturar en tu solicitud y reemplaza [VALUES_IN_BRACKETS] por los valores adecuados:
    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]"

API de XML

  1. Obtén un token de acceso de autorización de OAuth 2.0 Playground. Configura Playground para usar tus propias credenciales de OAuth.
  2. Incluye el encabezado x-goog-user-project configurado en el ID del proyecto a facturar en tu solicitud y reemplaza [VALUES_IN_BRACKETS] por los valores adecuados:
    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]"
¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…

¿Necesitas ayuda? Visita nuestra página de asistencia.