Accéder aux données publiques

La méthode que vous choisissez pour accéder aux données publiques dépend de la façon dont vous voulez les utiliser. Lorsque vous accédez à des données publiques via Google Cloud Console, vous devez vous authentifier auprès de Google. Pour ce faire, vous pouvez utiliser n'importe quel compte Google. Le compte ne doit pas nécessairement être associé au projet contenant les données publiques, ni être inscrit au service Cloud Storage.

En revanche, l'accès aux données publiques avec gsutil ou un lien d'API Cloud Storage ne requiert pas d'authentification. Ces méthodes sont adaptées à des liens génériques pointant vers des données partagées publiquement. Par exemple, un lien d'API peut être utilisé dans une page Web avec des bibliothèques clientes, ou bien avec un outil de ligne de commande tel que cURL.

Pour accéder aux données publiques, procédez comme indiqué ci-dessous :

Vous n'avez pas besoin de vous authentifier pour accéder à ce lien. Vous pouvez l'utiliser, par exemple, en tant que lien dans une page Web ou pour des téléchargements via un outil de ligne de commande tel que cURL.

  1. Obtenez le nom du bucket contenant les données publiques.

  2. Utilisez l'URI suivant pour accéder à un objet du bucket :

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

Par exemple, le bucket public Google gcp-public-data-landsat contient l'ensemble de données public Landsat. Vous pouvez créer le lien suivant vers l'objet partagé publiquement LC08/PRE/063/046/LC80630462016136LGN00/LC80630462016136LGN00_B11.TIF :

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

Console

Vous devez vous authentifier auprès de Google pour accéder à ce lien. Vous devez généralement utiliser la méthode décrite dans l'onglet Lien API pour accéder aux liens vers les objets individuels d'un bucket public. Vous ne pouvez accéder aux objets publics via Cloud Console que si vous disposez de l'autorisation storage.objects.list pour le bucket qui les contient.

  1. Obtenez le nom du bucket public.

  2. À l'aide d'un navigateur Web, accédez au bucket avec l'URI ci-dessous. Vous êtes invité à vous connecter si nécessaire.

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

Par exemple, le bucket public Google gcp-public-data-landsat contient l'ensemble de données public Landsat. Vous pouvez y accéder avec l'URI suivant :

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

gsutil

  1. Si vous ne disposez pas de l'outil gsutil, suivez ces instructions pour l'installer.

  2. Obtenez le nom du bucket contenant les données publiques.

  3. Si le bucket (et pas uniquement une partie des données qu'il contient) est public, vous pouvez répertorier tout ou partie de son contenu (objets) à l'aide de la commande ls.

    Par exemple, le bucket public Google gcp-public-data-landsat contient l'ensemble de données public Landsat. Vous pouvez répertorier les fichiers comportant le préfixe LC08/PRE/063/046/LC80630462016 à l'aide de la commande suivante :

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

  4. Récupérez des objets publics spécifiques figurant dans le bucket à l'aide de la commande cp.

    Par exemple, la commande suivante permet de télécharger un fichier du bucket gcp-public-data-landsat dans votre répertoire local :

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

Exemples de code

C++

Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage 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

Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage 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);
  }
}

Étapes suivantes