공개 데이터 액세스

공개 데이터에 액세스하는 방법은 데이터로 어떤 작업을 하느냐에 따라 다릅니다. 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 공개 데이터세트가 포함되어 있습니다. 다음을 사용하여 버킷에 액세스할 수 있습니다.

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

자바

자세한 내용은 Cloud Storage 자바 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);
  }
}

다음 단계