Cómo hacer públicos los datos

En esta página se explica cómo hacer que tus objetos se puedan consultar públicamente Para informarte sobre cómo acceder a los datos que se han hecho públicos, consulta el artículo sobre este tema.

Definir que objetos concretos se puedan consultar de forma pública

Para hacer que objetos concretos se puedan consultar de forma pública, efectúa los pasos siguientes:

Consola

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

  2. En la lista de segmentos, haz clic en el segmento que contiene el objeto que vas a hacer público y accede hasta él si se encuentra en un subdirectorio.

  3. Marca la casilla en la columna Compartido públicamente del objeto.

Una vez que se ha compartido públicamente, Enlace público aparece junto a la casilla Compartido públicamente. Puedes hacer clic en Enlace público para cargar el objeto en una nueva ventana del explorador y obtener el URI del objeto.

gsutil

Utiliza el comando gsutil acl ch, sustituyendo [VALUES_IN_BRACKETS] por los valores adecuados:

gsutil acl ch -u AllUsers:R gs://[BUCKET_NAME]/[OBJECT_NAME]

Si la acción se realiza correctamente, la respuesta se parecerá al siguiente ejemplo:

Updated ACL on gs://[BUCKET_NAME]/[OBJECT_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 artículo sobre bibliotecas cliente de Cloud Storage.

private void MakePublic(string bucketName, string objectName)
{
    var storage = StorageClient.Create();
    var storageObject = storage.GetObject(bucketName, objectName);
    storageObject.Acl = storageObject.Acl ?? new List<ObjectAccessControl>();
    storage.UpdateObject(storageObject, new UpdateObjectOptions
    {
        PredefinedAcl = PredefinedObjectAcl.PublicRead
    });
    Console.WriteLine(objectName + " is now public and can be fetched from " +
        storageObject.MediaLink);
}

Go

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

acl := client.Bucket(bucket).Object(object).ACL()
if err := acl.Set(ctx, storage.AllUsers, storage.RoleReader); 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 artículo sobre bibliotecas cliente de Cloud Storage.

BlobId blobId = BlobId.of(bucketName, blobName, blobGeneration);
Acl acl = storage.createAcl(blobId, Acl.of(User.ofAllUsers(), Role.READER));

Node.js

Si quieres obtener más información sobre cómo instalar y crear un cliente de Cloud Storage, consulta el artículo 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 bucketName = 'Name of a bucket, e.g. my-bucket';
// const filename = 'File to make public, e.g. file.txt';

// Makes the file public
storage
  .bucket(bucketName)
  .file(filename)
  .makePublic()
  .then(() => {
    console.log(`gs://${bucketName}/${filename} is now public.`);
  })
  .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 artículo sobre bibliotecas cliente de Cloud Storage.

use Google\Cloud\Storage\StorageClient;

/**
 * Make an object publically accessible.
 *
 * @param string $bucketName the name of your Cloud Storage bucket.
 * @param string $objectName the name of your Cloud Storage object.
 *
 * @return void
 */
function make_public($bucketName, $objectName)
{
    $storage = new StorageClient();
    $bucket = $storage->bucket($bucketName);
    $object = $bucket->object($objectName);
    $object->update(['acl' => []], ['predefinedAcl' => 'PUBLICREAD']);
    printf('gs://%s/%s is now public' . PHP_EOL, $bucketName, $objectName);
}

Python

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

def make_blob_public(bucket_name, blob_name):
    """Makes a blob publicly accessible."""
    storage_client = storage.Client()
    bucket = storage_client.get_bucket(bucket_name)
    blob = bucket.blob(blob_name)

    blob.make_public()

    print('Blob {} is publicly accessible at {}'.format(
        blob.name, blob.public_url))

Ruby

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

# project_id  = "Your Google Cloud project ID"
# bucket_name = "Your Google Cloud Storage bucket name"
# file_name   = "Name of file in Google Cloud Storage to make public"

require "google/cloud/storage"

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

file.acl.public!

puts "#{file.name} is publicly accessible at #{file.public_url}"

API REST

API JSON

  1. Obtén un token de autorización de acceso 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. {
      "entity": "allUsers",
      "role": "READER"
    }
  4. Utiliza cURL para llamar a la API JSON con una petición Insert ACL, sustituyendo [VALUES_IN_BRACKETS] por los valores adecuados:
    curl -X POST --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]/o/[OBJECT_NAME]/acl"

API XML

  1. Obtén un token de autorización de acceso 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:
  3. <AccessControlList>
      <Entries>
        <Entry>
          <Scope type="AllUsers"/>
          <Permission>READ</Permission>
        </Entry>
      </Entries>
    </AccessControlList>
    
  4. Utiliza cURL para llamar a la API XML con una petición Set Object ACL, sustituyendo [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]/[OBJECT_NAME]?acl"

Hacer que los grupos de objetos se puedan consultar de forma pública

Para hacer que todos los objetos de un segmento se puedan consultar de forma pública, efectúa los pasos siguientes:

Consola

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

  2. Haz clic en el menú desplegable asociado con el segmento que vas a hacer público.

    Es el icono de tres puntos verticales, que se encuentra en el extremo derecho de la fila del segmento.

  3. Elige Editar permisos de segmento.

  4. En el campo Añadir miembros, introduce allUsers.

  5. En el menú desplegable Selecciona una función, elige el submenú Almacenamiento y haz clic en la opción Visor de objetos de Storage.

  6. Haz clic en Añadir.

gsutil

Utiliza el comando gsutil iam ch, sustituyendo [VALUES_IN_BRACKETS] por los valores adecuados:

gsutil iam ch allUsers:objectViewer gs://[BUCKET_NAME]

API REST

API JSON

  1. Obtén un token de autorización de acceso 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. {
      "bindings":[
        {
          "role": "roles/storage.objectViewer",
          "members":["allUsers"]
        }
      ]
    }
  4. Utiliza cURL para llamar a la API JSON con una petición PUT setIamPolicy, sustituyendo [VALUES_IN_BRACKETS] por los valores adecuados:
    curl -X PUT --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]/iam"

API XML

La API XML no admite que todos los objetos de un segmento se puedan consultar públicamente. Por tanto, usa en su lugar gsutil o la API JSON.

Siguientes pasos

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

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