Como acessar dados públicos

Qual método você escolhe para acessar dados públicos depende de como você quer trabalhar com os dados. Ao acessar os dados públicos por meio do Console do Google Cloud, é necessário autenticar com o Google. Autentique-se com qualquer conta do Google. Ela não precisa estar associada ao projeto que contém os dados públicos nem inscrita no serviço do Cloud Storage.

Por outro lado, o acesso a dados públicos com o gsutil ou um link da API Cloud Storage não requer autenticação. Esses métodos são adequados para links de propósito geral para dados compartilhados publicamente. Por exemplo, um link de API pode ser usado em uma página da Web, com bibliotecas de clientes ou com uma ferramenta de linha de comando, como cURL.

Para acessar dados públicos:

O acesso a esse link não requer autenticação. É adequado, por exemplo, como um link em uma página da Web ou para download com uma ferramenta de linha de comando, como cURL.

  1. Consiga o nome do bucket que contém os dados públicos.

  2. Use o URI a seguir para acessar um objeto no bucket:

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

Por exemplo, o bucket público do Google gcp-public-data-landsat contém o Conjunto de dados públicos da Landsat. É possível vincular o objeto compartilhado publicamente LC08/PRE/063/046/LC80630462016136LGN00/LC80630462016136LGN00_B11.TIF com o link:

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

Console

O acesso a esse link requer autenticação com o Google. Normalmente, é necessário usar o método descrito na guia Link da API para acessar links de objetos individuais em um bucket público. Só será possível acessar objetos públicos pelo Console do Cloud se você tiver a permissão storage.objects.list para o bucket que contém os objetos.

  1. Consiga o nome do bucket público.

  2. Usando um navegador da Web, acesse o bucket com o URI a seguir (você será solicitado a fazer login, se necessário):

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

Por exemplo, o bucket público do Google gcp-public-data-landsat contém o Conjunto de dados públicos da Landsat. Você pode acessar o bucket com:

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

gsutil

  1. Se você não tiver o gsutil, siga estas instruções para instalar o gsutil.

  2. Consiga o nome do bucket que contém os dados públicos.

  3. Se o bucket for público (e não apenas alguns dos dados contidos nele), você poderá listar alguns ou todos os dados (objetos) contidos no bucket usando o comando ls.

    Por exemplo, o bucket público do Google gcp-public-data-landsat contém o Conjunto de dados públicos da Landsat. É possível listar arquivos com o prefixo LC08/PRE/063/046/LC80630462016 com o comando:

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

  4. Use o comando cp para receber objetos públicos específicos contidos no bucket.

    Por exemplo, o comando a seguir faz o download de um arquivo do bucket gcp-public-data-landsat para o diretório local:

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

Amostras de código

C++

Para mais informações, consulte a documentação de referência da API do 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

Para mais informações, consulte a documentação de referência da API 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);
  }
}

A seguir