一般公開データへのアクセス

一般公開データにアクセスするために選択する方法は、データを操作する方法によります。Google Cloud Console から一般公開データにアクセスする場合は、Google で認証する必要があります。任意の Google アカウントで認証できます。アカウントは一般公開データを含むプロジェクトに関連付けられている必要はなく、Cloud Storage サービスに登録する必要もありません。

これに対し、gsutil や Cloud Storage API リンクで一般公開データにアクセスする場合には、認証を行う必要はありません。これらの方法は、一般公開されるデータの汎用リンクに適しています。たとえば、クライアント ライブラリや cURL などのコマンドライン ツールを使って API リンクをウェブページで使用できます。

一般公開データにアクセスするには:

このリンクにアクセスするのに認証は必要ありません。たとえば、ウェブページ内のリンクや、cURL などのコマンドライン ツールでのダウンロードに適しています。

  1. 一般公開データが含まれるバケットの名前を取得します。

  2. 次の URI を使用してバケットのオブジェクトにアクセスします。

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

たとえば、Google 一般公開バケット gcp-public-data-landsat には Landsat 一般公開データセットが含まれています。次のリンクを使用して、一般公開オブジェクト 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

このリンクにアクセスするには、Google での認証が必要です。一般には [API リンク] タブで説明されている方法を使用して、公開バケット内の個々のオブジェクトへのリンクにアクセスしてください。オブジェクトが含まれているバケットに対する storage.objects.list 権限がある場合は、Cloud Console 経由で一般公開オブジェクトのみにアクセスできます。

  1. 公開バケットの名前を取得します。

  2. ウェブブラウザを使用し、次の URI を使ってバケットにアクセスします(必要に応じてログインするよう求められます)。

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

たとえば、Google 一般公開バケット gcp-public-data-landsat には Landsat 一般公開データセットが含まれています。次の URL でこのバケットにアクセスできます。

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

gsutil

  1. gsutil がインストールされていない場合は、こちらの手順に沿って gsutil をインストールします。

  2. 一般公開データが含まれるバケットの名前を取得します。

  3. バケットが公開されている場合(かつ、バケット内の一部のデータだけが公開されているわけではない場合)は、ls コマンドを使用して、そのバケットに含まれるデータ(オブジェクト)の一部またはすべての一覧を表示できます。

    たとえば、Google 一般公開バケット gcp-public-data-landsat には Landsat 一般公開データセットが含まれています。次のコマンドに接頭辞 LC08/PRE/063/046/LC80630462016 を付けてファイルを一覧表示できます。

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

  4. cp コマンドを使用して、バケット内の特定の一般公開オブジェクトを取得します。

    たとえば、次のコマンドを使ってバケット gcp-public-data-landsat からローカル ディレクトリにファイルをダウンロードできます。

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

コードサンプル

C++

詳細については、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

詳細については、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);
  }
}

次のステップ