Auf öffentliche Daten zugreifen

Mit welcher Methode Sie auf öffentliche Daten zugreifen, hängt davon ab, wie Sie mit diesen Daten arbeiten möchten. Wenn Sie über die Google Cloud Platform Console auf öffentliche Daten zugreifen, müssen Sie sich bei Google authentifizieren. Sie können sich mit jedem Google-Konto authentifizieren. Dieses Konto muss weder mit dem Projekt verknüpft sein, das die öffentlichen Daten enthält, noch muss es für den Cloud Storage-Dienst registriert werden.

Wenn Sie hingegen mit gsutil oder über einen Cloud Storage API-Link auf öffentliche Daten zugreifen, ist keine Authentifizierung erforderlich. Diese Methoden eignen sich für allgemeine Links zu öffentlich freigegebenen Daten. Ein API-Link kann beispielsweise auf einer Webseite, mit Clientbibliotheken oder mit einem Befehlszeilentool wie cURL verwendet werden.

So greifen Sie auf öffentliche Daten zu:

Für das Zugreifen auf diesen Link ist keine Authentifizierung erforderlich. Er eignet sich zum Beispiel als Link für eine Webseite oder für den Download mit einem Befehlszeilentool wie cURL.

  1. Rufen Sie den Namen des Buckets ab, der die öffentlichen Daten enthält.

  2. Verwenden Sie den folgenden URI, um auf ein Objekt im Bucket zuzugreifen:

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

Der öffentliche Google-Bucket gcp-public-data-landsat enthält beispielsweise das öffentliche Landsat-Dataset. Mit dem folgenden Link können Sie eine Verknüpfung zum öffentlich freigegebenen Objekt LC08/PRE/063/046/LC80630462016136LGN00/LC80630462016136LGN00_B11.TIF herstellen:

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

Console

Für das Zugreifen auf diesen Link ist eine Authentifizierung bei Google erforderlich. Im Allgemeinen sollten Sie die auf dem Tab API link beschriebene Methode verwenden, um auf Links zu einzelnen Objekten in einem öffentlichen Bucket zuzugreifen. Sie können nur dann über die Cloud Console auf öffentliche Objekte zugreifen, wenn Sie für den Bucket mit den Objekten die Berechtigung storage.objects.list haben.

  1. Rufen Sie den Namen des öffentlichen Buckets ab.

  2. Greifen Sie über einen Webbrowser mit dem folgenden URI auf den Bucket zu. Möglicherweise werden Sie aufgefordert, sich anzumelden:

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

Der öffentliche Google-Bucket gcp-public-data-landsat enthält beispielsweise das öffentliche Landsat-Dataset. Auf diesen Bucket können Sie folgendermaßen zugreifen:

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

gsutil

  1. Wenn Sie gsutil noch nicht installiert haben, folgen Sie dieser Anleitung zur Installation von gsutil.

  2. Rufen Sie den Namen des Buckets ab, der die öffentlichen Daten enthält.

  3. Wenn der gesamte Bucket und nicht nur ein Teil der darin enthaltenen Daten öffentlich ist, können Sie mit dem Befehl ls einige oder alle im Bucket enthaltenen Daten (Objekte) auflisten.

    Der öffentliche Google-Bucket gcp-public-data-landsat enthält beispielsweise das öffentliche Landsat-Dataset. Sie können Dateien mit dem Präfix LC08/PRE/063/046/LC80630462016 mit folgendem Befehl auflisten:

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

  4. Einzelne im Bucket enthaltene öffentliche Objekte können Sie mit dem Befehl cp abrufen.

    Mit dem folgenden Befehl wird beispielsweise eine Datei aus dem Bucket gcp-public-data-landsat in Ihr lokales Verzeichnis heruntergeladen:

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

Codebeispiele

C++

Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage C++ API.

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

Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Java API.

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);
  }
}

Weitere Informationen