Accede a datos públicos

El método que elijas para acceder a datos públicos dependerá de cómo desees trabajar con ellos. Cuando accedes a datos públicos mediante Google Cloud Platform Console, debes autenticarte con Google. Puedes autenticarte con cualquier Cuenta de Google; no es necesario que la cuenta esté asociada con el proyecto que contiene los datos públicos y tampoco que esté registrada para el servicio de Cloud Storage.

Por el contrario, si accedes a datos públicos con gsutil o con un vínculo de la API de Cloud Storage, no se requiere autenticación. Estos métodos son apropiados para los vínculos de uso general de los datos compartidos de forma pública. Por ejemplo, el vínculo de una API se puede usar en una página web, con bibliotecas cliente o con una herramienta de línea de comandos como cURL.

Para acceder a los datos públicos, sigue estos pasos:

El acceso a este vínculo no requiere autenticación. Por ejemplo, es adecuado como un vínculo en una página web o para descargar con una herramienta de línea de comandos como cURL.

  1. Obtén el nombre del depósito que contiene los datos públicos.

  2. Usa el siguiente URI para acceder a un objeto en el depósito:

    https://storage.googleapis.com/BUCKET_NAME/OBJECT_NAME

Por ejemplo, el depósito público de Google gcp-public-data-landsat contiene el conjunto de datos públicos Landsat dataset. Puedes vincular al objeto compartido públicamente LC08/PRE/063/046/LC80630462016136LGN00/LC80630462016136LGN00_B11.TIF con este vínculo:

https://storage.googleapis.com/gcp-public-data-landsat/LC08/PRE/063/046/LC80630462016136LGN00/LC80630462016136LGN00_B11.TIF

Console

Para acceder a este vínculo se requiere autenticación con Google. Por lo general, debes usar el método descrito en la pestaña de vínculo a la API para acceder a vínculos a objetos individuales en un depósito público. Solo puedes acceder a objetos públicos mediante Cloud Console si tienes el permiso storage.objects.list para el depósito que contiene los objetos.

  1. Obtén el nombre del depósito público.

  2. Mediante un navegador web, accede al depósito con el siguiente URI (se te pedirá acceder si es necesario):

    https://console.cloud.google.com/storage/browser/BUCKET_NAME

Por ejemplo, el depósito público de Google gcp-public-data-landsat contiene el conjunto de datos públicos Landsat dataset. Puedes acceder al depósito con el siguiente vínculo:

https://console.cloud.google.com/storage/browser/gcp-public-data-landsat

gsutil

  1. Si no tienes gsutil, sigue estas instrucciones para su instalación.

  2. Obtén el nombre del depósito que contiene los datos públicos.

  3. Si el depósito es público (y no solo algunos de los datos en él), puedes enumerar algunos o todos los datos (objetos) contenidos en el depósito mediante el comando ls.

    Por ejemplo, el depósito público de Google gcp-public-data-landsat contiene el conjunto de datos públicos Landsat dataset. Puedes enumerar los archivos con el prefijo LC08/PRE/063/046/LC80630462016 mediante el siguiente comando:

    gsutil ls -r gs://gcp-public-data-landsat/LC08/PRE/063/046/LC80630462016*

  4. Obtén objetos públicos específicos contenidos en el depósito mediante el comando cp.

    Por ejemplo, el siguiente comando descarga un archivo del depósito gcp-public-data-landsat a tu directorio local:

    gsutil cp gs://gcp-public-data-landsat/LC08/PRE/063/046/LC80630462016136LGN00/LC80630462016136LGN00_B11.TIF .

Muestras de código

C++

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

namespace gcs = google::cloud::storage;
[](std::string const& bucket_name, std::string const& object_name) {
  // Create a client that does not authenticate with the server.
  gcs::Client client{gcs::oauth2::CreateAnonymousCredentials()};

  // Read an object, the object must have been made public.
  gcs::ObjectReadStream stream = client.ReadObject(bucket_name, object_name);

  int count = 0;
  std::string line;
  while (std::getline(stream, line, '\n')) {
    ++count;
  }
  std::cout << "The object has " << count << " lines\n";
}

Java

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

import com.google.cloud.storage.Blob;
import com.google.cloud.storage.BlobId;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.StorageOptions;
import java.nio.file.Path;

public class DownloadPublicObject {
  public static void downloadPublicObject(
      String bucketName, String publicObjectName, Path destFilePath) {
    // The name of the bucket to access
    // String bucketName = "my-bucket";

    // The name of the remote public file to download
    // String publicObjectName = "publicfile.txt";

    // The path to which the file should be downloaded
    // Path destFilePath = Paths.get("/local/path/to/file.txt");

    // Instantiate an anonymous Google Cloud Storage client, which can only access public files
    Storage storage = StorageOptions.getUnauthenticatedInstance().getService();

    Blob blob = storage.get(BlobId.of(bucketName, publicObjectName));
    blob.downloadTo(destFilePath);

    System.out.println(
        "Downloaded public object "
            + publicObjectName
            + " from bucket name "
            + bucketName
            + " to "
            + destFilePath);
  }
}

Python

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

from google.cloud import storage

def download_public_file(bucket_name, source_blob_name, destination_file_name):
    """Downloads a public blob from the bucket."""
    # bucket_name = "your-bucket-name"
    # source_blob_name = "storage-object-name"
    # destination_file_name = "local/path/to/file"

    storage_client = storage.Client.create_anonymous_client()

    bucket = storage_client.bucket(bucket_name)
    blob = bucket.blob(source_blob_name)
    blob.download_to_filename(destination_file_name)

    print(
        "Downloaded public blob {} from bucket {} to {}.".format(
            source_blob_name, bucket.name, destination_file_name
        )
    )

Próximos pasos