Haz públicos los datos

En esta página, se muestra cómo hacer que los objetos que posees sean legibles públicamente. Para obtener más información sobre cómo acceder a los datos que se hicieron públicos, consulta Acceso a datos públicos.

Haz que los objetos individuales sean legibles públicamente

Sigue los pasos a continuación para hacer que los objetos individuales sean legibles públicamente:

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 hacer público y navega al objeto si está en un subdirectorio.

  3. Haz clic en el menú desplegable asociado al objeto que deseas hacer público.

    El menú desplegable aparece como tres puntos verticales en el extremo derecho de la fila del objeto.

  4. Selecciona Editar permisos del menú desplegable.

  5. En la superposición que aparece, haz clic en el botón + Agregar elemento.

  6. Agrega un permiso para allUsers.

    • Selecciona Usuario para la Entidad.
    • Ingresa allUsers para el Nombre.
    • Selecciona Lector para el Acceso.
  7. Haz clic en Guardar.

Una vez compartido públicamente, aparece un ícono de vínculo en la columna de acceso público. Puedes hacer clic en este ícono para obtener la URL del objeto.

gsutil

Usa el comando gsutil acl ch y reemplaza [VALUES_IN_BRACKETS] por los valores apropiados:

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

Si es correcto, la respuesta se parece al siguiente ejemplo:

Updated ACL on gs://[BUCKET_NAME]/[OBJECT_NAME]

Muestras 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 object_name) {
  StatusOr<gcs::ObjectMetadata> updated = client.PatchObject(
      bucket_name, object_name, gcs::ObjectMetadataPatchBuilder(),
      gcs::PredefinedAcl::PublicRead());
  if (!updated.ok()) {
    std::cerr << "Error patching object metadata for object " << object_name
              << " in bucket " << bucket_name
              << ", status=" << updated.status() << std::endl;
    return;
  }
  std::cout << "Object updated. The full metadata after the update is: "
            << *updated << 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 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, consulta la documentación de referencia de la API de Cloud Storage para Go.

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, consulta la documentación de referencia de la API de Cloud Storage para Java.

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, 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 bucketName = 'Name of a bucket, e.g. my-bucket';
// const filename = 'File to make public, e.g. file.txt';

// Makes the file public
await storage
  .bucket(bucketName)
  .file(filename)
  .makePublic();

console.log(`gs://${bucketName}/${filename} is now public.`);

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;

/**
 * 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, consulta la documentación de referencia de la API de Cloud Storage para Python.

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, consulta la documentación de referencia de la API de Cloud Storage para Ruby.

# 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_id: 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 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. {
    "entity": "allUsers",
    "role": "READER"
    }
  4. Usa cURL para llamar a la API de JSON con la solicitud de Insert ACL y reemplaza [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 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:
  3. <AccessControlList>
    <Entries>
        <Entry>
          <Scope type="AllUsers"/>
          <Permission>READ</Permission>
        </Entry>
    </Entries>
    </AccessControlList>
    
  4. Usa cURL para llamar a la API de XML con la solicitud de Set Object ACL 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]/[OBJECT_NAME]?acl"

Haz grupos de objetos públicamente legibles

Sigue los pasos a continuación, para hacer legibles públicamente todos los objetos 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, haz clic en el nombre del depósito que deseas hacer público.

  3. Selecciona la pestaña Permisos cerca de la parte superior de la página.

  4. Haz clic en el botón Agregar miembros.

    Aparece el cuadro de diálogo Agregar miembros.

  5. En el campo Miembros, ingresa allUsers.

  6. En el menú desplegable Funciones, selecciona el submenú Almacenamiento y haz clic en la opción Lector de objetos de almacenamiento.

  7. Haz clic en Agregar.

Una vez que se comparte públicamente, aparece un ícono de vínculo para cada objeto en la columna de acceso público. Puedes hacer clic en este ícono para obtener la URL del objeto.

gsutil

Usa el comando gsutil iam ch y reemplaza [VALUES_IN_BRACKETS] por los valores apropiados:

gsutil iam ch allUsers:objectViewer gs://[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. {
      "bindings":[
        {
          "role": "roles/storage.objectViewer",
          "members":["allUsers"]
        }
      ]
    }
  4. Usa cURL para llamar a la API de JSON con la solicitud de PUT setIamPolicy y reemplaza [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 de XML

La API de XML no admite que todos los objetos de un depósito sean legibles públicamente. Usa gsutil o la API de JSON en su lugar.

¿Qué sigue?

¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…

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