Usar Pagos del solicitante

En esta página se explica cómo configurar la función Pagos del solicitante y se proporciona un ejemplo de cómo realizar una petición en un segmento con la función Pagos del solicitante habilitada. Si quieres obtener una descripción de esta característica, consulta Pagos del solicitante.

Configurar Pagos del solicitante

En las siguientes secciones, se muestra cómo activar y desactivar Pagos del solicitante, además de cómo verificar si dicha función está habilitada en un segmento.

Requisitos previos

  1. Si quieres habilitar e inhabilitar los pagos del solicitante, debes tener el permiso storage.buckets.update. Al usar gsutil, también debes tener el permiso storage.buckets.setIamPolicy.

  2. Para obtener el estado de los pagos del solicitante de un segmento, debes contar con el permiso storage.buckets.get.

Los permisos se otorgan a los usuarios a través de funciones. Por ejemplo, los usuarios con la función roles/storage.admin tienen todos los permisos mencionados anteriormente. Las funciones se pueden añadir al segmento deseado o añadir al proyecto que contiene el segmento.

Habilitar Pagos del solicitante

Si quieres habilitar la función Pagos del solicitante en un segmento, sigue estos pasos:

Consola

  1. Abre el navegador de Cloud Storage en la consola de Google Cloud Platform.
    Abrir el navegador de Cloud Storage

  2. En la lista de segmentos, busca el que quieres habilitar y haz clic en el botón Desactivados en la columna Pagos del solicitante.

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

Una vez habilitado, aparecen una burbuja verde y Activados en la columna Pagos del solicitante del segmento.

gsutil

Usa el comando gsutil requesterpays set on y sustituye [VALUES_IN_BRACKETS] por los valores correspondientes:

gsutil requesterpays set on gs://[BUCKET_NAME]

Ejemplos de código

C#

Si quieres obtener más información sobre cómo instalar y crear un cliente de Cloud Storage, consulta el apartado sobre bibliotecas cliente de Cloud Storage.

void EnableRequesterPays(string bucketName)
{
    var storage = StorageClient.Create();
    var bucket = storage.GetBucket(bucketName);
    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
    });
}

Go

Si quieres obtener más información sobre cómo instalar y crear un cliente de Cloud Storage, consulta el apartado sobre bibliotecas cliente de Cloud Storage.

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

Java

Si quieres obtener más información sobre cómo instalar y crear un cliente de Cloud Storage, consulta el apartado sobre bibliotecas cliente de 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

Si quieres obtener más información sobre cómo instalar y crear un cliente de Cloud Storage, consulta el apartado sobre bibliotecas cliente de 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

Si quieres obtener más información sobre cómo instalar y crear un cliente de Cloud Storage, consulta el apartado sobre bibliotecas cliente de 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

Si quieres obtener más información sobre cómo instalar y crear un cliente de Cloud Storage, consulta el apartado sobre bibliotecas cliente de 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

Si quieres obtener más información sobre cómo instalar y crear un cliente de Cloud Storage, consulta el apartado sobre bibliotecas cliente de 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}"

APIs REST

API JSON

  1. Obtén un token de acceso de autorización de OAuth 2.0 Playground. Configura el 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 JSON con una petición de segmento PATCH y sustituye [VALUES_IN_BRACKETS] por los valores correspondientes:
    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 XML

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

Inhabilitar Pagos del solicitante

Si quieres inhabilitar la función Pagos del solicitante en un segmento, sigue estos pasos:

Consola

  1. Abre el navegador de Cloud Storage en la consola de Google Cloud Platform.
    Abrir el navegador de Cloud Storage

  2. En la lista de segmentos, busca el que quieres inhabilitar y haz clic en el botón Activados en la columna Pagos del solicitante.

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

Una vez inhabilitada esta función, aparecen una burbuja gris y Desactivados en la columna Pagos del solicitante.

gsutil

Usa el comando gsutil requesterpays set off y sustituye los [VALUES_IN_BRACKETS] por los valores correspondientes:

gsutil requesterpays set off gs://[BUCKET_NAME]

Ejemplos de código

C#

Si quieres obtener más información sobre cómo instalar y crear un cliente de Cloud Storage, consulta el apartado sobre bibliotecas cliente de Cloud Storage.

void DisableRequesterPays(string bucketName)
{
    var storage = StorageClient.Create();
    var bucket = storage.GetBucket(bucketName);
    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
    });
}

Go

Si quieres obtener más información sobre cómo instalar y crear un cliente de Cloud Storage, consulta el apartado sobre bibliotecas cliente de Cloud Storage.

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

Java

Si quieres obtener más información sobre cómo instalar y crear un cliente de Cloud Storage, consulta el apartado sobre bibliotecas cliente de 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

Si quieres obtener más información sobre cómo instalar y crear un cliente de Cloud Storage, consulta el apartado sobre bibliotecas cliente de 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

Si quieres obtener más información sobre cómo instalar y crear un cliente de Cloud Storage, consulta el apartado sobre bibliotecas cliente de 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

Si quieres obtener más información sobre cómo instalar y crear un cliente de Cloud Storage, consulta el apartado sobre bibliotecas cliente de 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

Si quieres obtener más información sobre cómo instalar y crear un cliente de Cloud Storage, consulta el apartado sobre bibliotecas cliente de 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}"

APIs REST

API JSON

  1. Obtén un token de acceso de autorización de OAuth 2.0 Playground. Configura el 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 JSON con una petición de segmento PATCH y sustituye [VALUES_IN_BRACKETS] por los valores correspondientes:
    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 XML

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

Comprobar si la función Pagos del solicitante está habilitada

Si quieres comprobar si la función Pagos del solicitante está habilitada en un segmento, sigue estos pasos:

Consola

  1. Abre el navegador de Cloud Storage en la consola de Google Cloud Platform.
    Abrir el navegador de Cloud Storage

  2. En la lista de segmentos, el estado de Pagos del solicitante de cada segmento se encuentra en la columna Pagos del solicitante.

Si está función está habilitada, el estado es verde y aparece la palabra Activados.

gsutil

Usa el comando gsutil requesterpays get y sustituye [VALUES_IN_BRACKETS] por los valores correspondientes:

gsutil requesterpays get gs://[BUCKET_NAME]

Si la función Pagos del solicitante está habilitada, la respuesta se asimilará al siguiente ejemplo:

gs://[BUCKET_NAME]: Enabled

Ejemplos de código

C#

Si quieres obtener más información sobre cómo instalar y crear un cliente de Cloud Storage, consulta el apartado sobre bibliotecas cliente de Cloud Storage.

bool GetRequesterPays(string bucketName)
{
    var storage = StorageClient.Create();
    var bucket = storage.GetBucket(bucketName);
    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 sobre cómo instalar y crear un cliente de Cloud Storage, consulta el apartado sobre bibliotecas cliente de 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

Si quieres obtener más información sobre cómo instalar y crear un cliente de Cloud Storage, consulta el apartado sobre bibliotecas cliente de 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

Si quieres obtener más información sobre cómo instalar y crear un cliente de Cloud Storage, consulta el apartado sobre bibliotecas cliente de 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

Si quieres obtener más información sobre cómo instalar y crear un cliente de Cloud Storage, consulta el apartado sobre bibliotecas cliente de 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

Si quieres obtener más información sobre cómo instalar y crear un cliente de Cloud Storage, consulta el apartado sobre bibliotecas cliente de 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

Si quieres obtener más información sobre cómo instalar y crear un cliente de Cloud Storage, consulta el apartado sobre bibliotecas cliente de 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

APIs REST

API JSON

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

API XML

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

Acceder a los segmentos de Pagos del solicitante

En el siguiente ejemplo, se muestra cómo incluir un proyecto de facturación para poder descargar un objeto almacenado en un segmento de Pagos del solicitante. Sigue un procedimiento similar para realizar otras peticiones en el segmento de pagos del solicitante o en objetos dentro de él. Si quieres ver las consideraciones relativas a los requisitos previos, consulta la sección sobre los requisitos de acceso a Pagos del solicitante.

Consola

  1. Abre el navegador de Cloud Storage en la consola de Google Cloud Platform.
    Abrir el navegador de Cloud Storage

  2. En la lista de segmentos, haz clic en el que contiene el objeto que deseas descargar.

  3. En la ventana que aparece, usa el menú desplegable y selecciona un proyecto para la facturación.

  4. Marca la casilla para confirmar que dispones de autorización para utilizar 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 la petición junto con el ID del proyecto que se va a facturar y sustituye [VALUES_IN_BRACKETS] por los valores correspondientes:

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

Ejemplos de código

C#

Si quieres obtener más información sobre cómo instalar y crear un cliente de Cloud Storage, consulta el apartado sobre bibliotecas cliente de 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

Si quieres obtener más información sobre cómo instalar y crear un cliente de Cloud Storage, consulta el apartado sobre bibliotecas cliente de 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

Si quieres obtener más información sobre cómo instalar y crear un cliente de Cloud Storage, consulta el apartado sobre bibliotecas cliente de 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

Si quieres obtener más información sobre cómo instalar y crear un cliente de Cloud Storage, consulta el apartado sobre bibliotecas cliente de 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

Si quieres obtener más información sobre cómo instalar y crear un cliente de Cloud Storage, consulta el apartado sobre bibliotecas cliente de 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

Si quieres obtener más información sobre cómo instalar y crear un cliente de Cloud Storage, consulta el apartado sobre bibliotecas cliente de 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

Si quieres obtener más información sobre cómo instalar y crear un cliente de Cloud Storage, consulta el apartado sobre bibliotecas cliente de 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}"

APIs REST

API JSON

  1. Obtén un token de acceso de autorización de OAuth 2.0 Playground. Configura el playground para usar tus propias credenciales de OAuth.
  2. En la petición, incluye el parámetro de cadena de consulta userProject definido como el ID del proyecto que se va a facturar y sustituye [VALUES_IN_BRACKETS] por los valores correspondientes:
    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 XML

  1. Obtén un token de acceso de autorización de OAuth 2.0 Playground. Configura el playground para usar tus propias credenciales de OAuth.
  2. En la petición, incluye el encabezado x-goog-user-project definido como el ID del proyecto que se va a facturar y sustituye [VALUES_IN_BRACKETS] por los valores correspondientes:
    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 ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Si necesitas ayuda, visita nuestra página de asistencia.