정적 웹사이트 호스팅

이 가이드는 소유한 도메인의 정적 웹사이트를 호스팅하기 위해 Cloud Storage 버킷을 구성하는 방법을 설명합니다. 정적 웹페이지에는 HTML, CSS, 자바스크립트와 같은 클라이언트 측 기술이 포함될 수 있습니다. 반면, PHP 등의 서버 측 스크립트를 비롯한 동적 콘텐츠는 포함될 수 없습니다. 예제와 팁을 포함하여 정적 웹페이지에 대한 자세한 내용은 정적 웹사이트 페이지를 참조하세요.

이 가이드는 동적 웹사이트의 정적 애셋을 호스팅하는 데도 적용됩니다.

목표

이 가이드에서는 다음 단계를 진행합니다.

  • CNAME 레코드를 사용하여 도메인을 Cloud Storage로 지정합니다.
  • 도메인에 연결된 버킷을 만듭니다.
  • 사이트의 파일을 업로드하고 공유합니다.
  • 웹사이트를 테스트합니다.

비용

이 가이드에서는 다음과 같은 청구 가능한 Cloud Platform 구성요소를 사용합니다.

  • Cloud Storage

정적 웹사이트 호스팅 시 발생할 수 있는 요금에 대한 자세한 내용은 스토리지 요금 모니터링 팁을 참조하세요. Cloud Storage 비용에 대한 자세한 내용은 가격 책정 페이지를 참조하세요.

시작하기 전에

  1. Google 계정에 로그인합니다.

    아직 계정이 없으면 새 계정을 등록하세요.

  2. Google Cloud Platform 프로젝트를 선택하거나 만듭니다.

    리소스 관리 페이지로 이동

  3. Google Cloud Platform 프로젝트에 결제가 사용 설정되어 있는지 확인하세요.

    결제 사용 설정 방법 알아보기

  4. 자신이 소유하거나 관리하는 도메인이 있어야 합니다. 기존 도메인이 없는 경우, Google Domains와 같은 다양한 서비스를 사용하여 새 도메인을 등록할 수 있습니다.

    이 가이드는 example.com 도메인을 사용합니다.

  5. 사용할 도메인을 소유 또는 관리하고 있는지 확인합니다. www.example.com과 같은 하위 도메인이 아니라 example.com과 같은 최상위 도메인을 확인해야 합니다.

    참고: 버킷에 연결된 도메인을 소유하고 있는 경우, 이전에 이 단계를 이미 수행했을 수 있습니다. Google Domains를 통해 도메인을 구입한 경우, 자동으로 확인이 수행됩니다.

CNAME 레코드 만들기

CNAME 레코드는 DNS 레코드의 한 유형입니다. 이 레코드는 URL을 요청하는 트래픽을 도메인에서 제공할 리소스(이 경우 Cloud Storage 버킷에 있는 객체)로 전달합니다. www.example.com의 경우, CNAME 레코드에는 다음 정보가 포함될 수 있습니다.

NAME                  TYPE     DATA
www.example.com       CNAME    c.storage.googleapis.com.

CNAME 리디렉션에 대한 자세한 내용은 CNAME 별칭 URI를 참조하세요.

도메인을 Cloud Storage에 연결하려면 다음을 수행합니다.

  1. c.storage.googleapis.com.을 가리키는 CNAME 레코드를 만듭니다.

    도메인 등록 서비스에는 CNAME 레코드 추가가 포함된 도메인 관리 방법이 있어야 합니다. 예를 들어 Google Domains를 사용하는 경우, Google Domains 도움말 페이지에서 CNAME 레코드를 추가하는 방법을 확인할 수 있습니다.

버킷 만들기

도메인용으로 만든 CNAME과 이름이 일치하는 버킷을 만듭니다.

예를 들어, www.example.comc.storage.googleapis.com.을 가리키는 CNAME 레코드를 추가했다면 'www.example.com' 이름으로 버킷을 만듭니다.

버킷을 만드는 방법은 다음과 같습니다.

콘솔

  1. Google Cloud Platform Console에서 Cloud Storage 브라우저를 엽니다.
    Cloud Storage 브라우저 열기
  2. 버킷 만들기를 클릭합니다.

  3. 버킷 만들기 대화상자에서 다음을 지정합니다.

    • 버킷 이름

    • 버킷의 저장소 등급: 다중 지역

    • 버킷 위치: 미국

  4. 만들기를 클릭합니다.

성공하면 '이 버킷에 객체가 없습니다'라는 텍스트와 함께 버킷 페이지로 이동합니다.

gsutil

gsutil mb 명령어를 사용합니다.

gsutil mb gs://www.example.com

성공하면 다음과 같은 결과가 반환됩니다.

Creating gs://www.example.com/...

코드 샘플

C++

자세한 내용은 Cloud Storage C++ API 참조 문서를 참조하세요.

namespace gcs = google::cloud::storage;
using ::google::cloud::StatusOr;
[](gcs::Client client, std::string bucket_name) {
  StatusOr<gcs::BucketMetadata> bucket_metadata =
      client.CreateBucket(bucket_name, gcs::BucketMetadata());

  if (!bucket_metadata) {
    throw std::runtime_error(bucket_metadata.status().message());
  }

  std::cout << "Bucket " << bucket_metadata->name() << " created."
            << "\nFull Metadata: " << *bucket_metadata << "\n";
}

C#

자세한 내용은 Cloud Storage C# API 참조 문서를 참조하세요.

private void CreateBucket(string bucketName)
{
    var storage = StorageClient.Create();
    storage.CreateBucket(s_projectId, bucketName);
    Console.WriteLine($"Created {bucketName}.");
}

Go

자세한 내용은 Cloud Storage Go API 참조 문서를 참조하세요.

bucket := client.Bucket(bucketName)
if err := bucket.Create(ctx, projectID, &storage.BucketAttrs{
	StorageClass: "COLDLINE",
	Location:     "asia",
}); err != nil {
	return err
}

자바

자세한 내용은 Cloud Storage 자바 API 참조 문서를 참조하세요.

Bucket bucket =
    storage.create(
        BucketInfo.newBuilder(bucketName)
            // See here for possible values: http://g.co/cloud/storage/docs/storage-classes
            .setStorageClass(StorageClass.COLDLINE)
            // Possible values: http://g.co/cloud/storage/docs/bucket-locations#location-mr
            .setLocation("asia")
            .build());

Node.js

자세한 내용은 Cloud Storage Node.js API 참조 문서를 참조하세요.

// Imports the Google Cloud client library
const {Storage} = require('@google-cloud/storage');

// Creates a client
const storage = new Storage();

/**
 * TODO(developer): Uncomment the following line before running the sample.
 */
// const bucketName = 'Name of a bucket, e.g. my-bucket';

// Creates a new bucket in the Asia region with the coldline default storage
// class. Leave the second argument blank for default settings.
//
// For default values see: https://cloud.google.com/storage/docs/locations and
// https://cloud.google.com/storage/docs/storage-classes
await storage.createBucket(bucketName, {
  location: 'ASIA',
  storageClass: 'COLDLINE',
});

console.log(`Bucket ${bucketName} created.`);

PHP

자세한 내용은 Cloud Storage PHP API 참조 문서를 참조하세요.

use Google\Cloud\Storage\StorageClient;

/**
 * Create a Cloud Storage Bucket.
 *
 * @param string $bucketName name of the bucket to create.
 * @param string $options options for the new bucket.
 *
 * @return Google\Cloud\Storage\Bucket the newly created bucket.
 */
function create_bucket($bucketName, $options = [])
{
    $storage = new StorageClient();
    $bucket = $storage->createBucket($bucketName, $options);
    printf('Bucket created: %s' . PHP_EOL, $bucket->name());
}

Python

자세한 내용은 Cloud Storage Python API 참조 문서를 참조하세요.

def create_bucket(bucket_name):
    """Creates a new bucket."""
    storage_client = storage.Client()
    bucket = storage_client.create_bucket(bucket_name)
    print('Bucket {} created'.format(bucket.name))

Ruby

자세한 내용은 Cloud Storage Ruby API 참조 문서를 참조하세요.

# project_id    = "Your Google Cloud project ID"
# bucket_name   = "Name of Google Cloud Storage bucket to create"
# location      = "Location of where to create Cloud Storage bucket"
# storage_class = "Storage class of Cloud Storage bucket"

require "google/cloud/storage"

storage = Google::Cloud::Storage.new project_id: project_id
bucket  = storage.create_bucket bucket_name,
                                location:      location,
                                storage_class: storage_class

puts "Created bucket #{bucket.name} in #{location}" +
     " with #{storage_class} class"

REST API

JSON API

  1. OAuth 2.0 Playground에서 승인 액세스 토큰을 가져옵니다. Playground에서 OAuth 사용자 인증 정보를 사용하도록 구성합니다.
  2. 웹사이트 이름에 name 속성을 할당하는 .json 파일을 만듭니다.
  3. {
    "name": "www.example.com"
    }
  4. cURL을 사용하여 JSON API를 호출합니다. www.example.com의 경우는 다음과 같습니다.
    curl -X POST --data-binary @website-bucket-name.json \
     -H "Authorization: Bearer ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg" \
     -H "Content-Type: application/json" \
     "https://www.googleapis.com/storage/v1/b?project=my-static-website"

XML API

  1. OAuth 2.0 Playground에서 승인 액세스 토큰을 가져옵니다. OAuth 사용자 인증 정보를 사용할 수 있도록 플레이그라운드를 구성합니다.
  2. cURL을 사용하여 웹사이트 이름으로 버킷을 만드는 XML API를 호출합니다. www.example.com의 경우는 다음과 같습니다.
    curl -X PUT \
     -H "Authorization: Bearer ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg" \
     -H "x-goog-project-id: my-static-website" \
     "https://storage.googleapis.com/www.example.com"

사이트 파일 업로드

웹사이트가 제공할 파일을 버킷에 추가하려면 다음을 따르세요.

콘솔

  1. Google Cloud Platform Console에서 Cloud Storage 브라우저를 엽니다.
    Cloud Storage 브라우저 열기
  2. 버킷 목록에서 앞서 만든 버킷의 이름을 클릭합니다.

  3. 객체 탭에서 파일 업로드 버튼을 클릭합니다.

  4. 파일 대화상자에서 원하는 파일을 탐색하고 선택합니다.

업로드가 완료되면 버킷에서 파일 이름, 크기, 형식, 마지막 수정일을 볼 수 있습니다.

예를 들어, GCP 콘솔에서 index.html404.html이라는 두 파일이 있는 버킷은 다음과 같이 나타납니다.

버킷 웹사이트 예
웹사이트로 구성된 버킷 예입니다.

gsutil

gsutil cp 명령어를 사용하여 파일을 버킷에 복사합니다. 예를 들어, 현재 위치 Desktop에서 index.html 파일을 복사하려면 다음을 따르세요.

gsutil cp Desktop/index.html gs://www.example.com

성공하면 다음과 같은 결과가 반환됩니다.

Copying file://Desktop/index.html [Content-Type=text/html]...
Uploading   gs://www.example.com/index.html:       0 B/2.58 KiB
Uploading   gs://www.example.com/index.html:       2.58 KiB/2.58 KiB

코드 샘플

C++

자세한 내용은 Cloud Storage C++ API 참조 문서를 참조하세요.

namespace gcs = google::cloud::storage;
using ::google::cloud::StatusOr;
[](gcs::Client client, std::string file_name, std::string bucket_name,
   std::string object_name) {
  // Note that the client library automatically computes a hash on the
  // client-side to verify data integrity during transmission.
  StatusOr<gcs::ObjectMetadata> object_metadata = client.UploadFile(
      file_name, bucket_name, object_name, gcs::IfGenerationMatch(0));

  if (!object_metadata) {
    throw std::runtime_error(object_metadata.status().message());
  }

  std::cout << "Uploaded " << file_name << " to object "
            << object_metadata->name() << " in bucket "
            << object_metadata->bucket()
            << "\nFull metadata: " << *object_metadata << "\n";
}

C#

자세한 내용은 Cloud Storage C# API 참조 문서를 참조하세요.

private void UploadFile(string bucketName, string localPath,
    string objectName = null)
{
    var storage = StorageClient.Create();
    using (var f = File.OpenRead(localPath))
    {
        objectName = objectName ?? Path.GetFileName(localPath);
        storage.UploadObject(bucketName, objectName, null, f);
        Console.WriteLine($"Uploaded {objectName}.");
    }
}

Go

자세한 내용은 Cloud Storage Go API 참조 문서를 참조하세요.

f, err := os.Open("notes.txt")
if err != nil {
	return err
}
defer f.Close()

wc := client.Bucket(bucket).Object(object).NewWriter(ctx)
if _, err = io.Copy(wc, f); err != nil {
	return err
}
if err := wc.Close(); err != nil {
	return err
}

자바

자세한 내용은 Cloud Storage 자바 API 참조 문서를 참조하세요.

Storage storage = StorageOptions.getDefaultInstance().getService();
BlobId blobId = BlobId.of("bucket", "blob_name");
BlobInfo blobInfo = BlobInfo.newBuilder(blobId).setContentType("text/plain").build();
Blob blob = storage.create(blobInfo, "Hello, Cloud Storage!".getBytes(UTF_8));

Node.js

자세한 내용은 Cloud Storage Node.js API 참조 문서를 참조하세요.

// Imports the Google Cloud client library
const {Storage} = require('@google-cloud/storage');

// Creates a client
const storage = new Storage();

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// const bucketName = 'Name of a bucket, e.g. my-bucket';
// const filename = 'Local file to upload, e.g. ./local/path/to/file.txt';

// Uploads a local file to the bucket
await storage.bucket(bucketName).upload(filename, {
  // Support for HTTP requests made with `Accept-Encoding: gzip`
  gzip: true,
  // By setting the option `destination`, you can change the name of the
  // object you are uploading to a bucket.
  metadata: {
    // Enable long-lived HTTP caching headers
    // Use only if the contents of the file will never change
    // (If the contents will change, use cacheControl: 'no-cache')
    cacheControl: 'public, max-age=31536000',
  },
});

console.log(`${filename} uploaded to ${bucketName}.`);

PHP

자세한 내용은 Cloud Storage PHP API 참조 문서를 참조하세요.

use Google\Cloud\Storage\StorageClient;

/**
 * Upload a file.
 *
 * @param string $bucketName the name of your Google Cloud bucket.
 * @param string $objectName the name of the object.
 * @param string $source the path to the file to upload.
 *
 * @return Psr\Http\Message\StreamInterface
 */
function upload_object($bucketName, $objectName, $source)
{
    $storage = new StorageClient();
    $file = fopen($source, 'r');
    $bucket = $storage->bucket($bucketName);
    $object = $bucket->upload($file, [
        'name' => $objectName
    ]);
    printf('Uploaded %s to gs://%s/%s' . PHP_EOL, basename($source), $bucketName, $objectName);
}

Python

자세한 내용은 Cloud Storage Python API 참조 문서를 확인하세요.

Blob.upload_from_file(), Blob.upload_from_filename() 또는 Blob.upload_from_string() 메소드를 사용하여 객체를 업로드합니다.
def upload_blob(bucket_name, source_file_name, destination_blob_name):
    """Uploads a file to the bucket."""
    storage_client = storage.Client()
    bucket = storage_client.get_bucket(bucket_name)
    blob = bucket.blob(destination_blob_name)

    blob.upload_from_filename(source_file_name)

    print('File {} uploaded to {}.'.format(
        source_file_name,
        destination_blob_name))

Ruby

자세한 내용은 Cloud Storage Ruby API 참조 문서를 참조하세요.

# project_id        = "Your Google Cloud project ID"
# bucket_name       = "Your Google Cloud Storage bucket name"
# local_file_path   = "Path to local file to upload"
# storage_file_path = "Path to store the file in Google Cloud Storage"

require "google/cloud/storage"

storage = Google::Cloud::Storage.new project_id: project_id
bucket  = storage.bucket bucket_name

file = bucket.create_file local_file_path, storage_file_path

puts "Uploaded #{file.name}"

REST API

JSON API

  1. OAuth 2.0 Playground에서 승인 액세스 토큰을 가져옵니다. Playground에서 OAuth 사용자 인증 정보를 사용하도록 구성합니다.
  2. 파일 데이터를 요청 본문에 추가합니다.
  3. cURL을 사용하여 POST Object 요청으로 JSON API를 호출합니다. www.example.com 색인 페이지의 경우는 다음과 같습니다.
    curl -X POST --data-binary @index.html \
        -H "Content-Type: text/html" \
        -H "Authorization: Bearer ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg" \
        "https://www.googleapis.com/upload/storage/v1/b/www.example.com/o?uploadType=media&name=index.html"

JSON API를 사용한 객체 업로드에 대한 자세한 내용은 단순 업로드 수행을 참조하세요.

XML API

  1. OAuth 2.0 Playground에서 승인 액세스 토큰을 가져옵니다. Playground에서 OAuth 사용자 인증 정보를 사용하도록 구성합니다.
  2. 객체 데이터를 요청 본문에 추가합니다.
  3. cURL을 사용하여 PUT Object 요청으로 XML API를 호출합니다. www.example.com 색인 페이지의 경우는 다음과 같습니다.
    curl -X PUT --data-binary @index.html \
        -H "Authorization: Bearer ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg" \
        -H "Content-Type: text/html" \
        "https://storage.googleapis.com/www.example.com/index.html"

파일 공유

버킷의 모든 파일을 공개적으로 액세스할 수 있도록 설정하거나 개별 객체를 웹사이트를 통해 액세스할 수 있도록 설정할 수 있습니다. 일반적으로 버킷의 모든 파일을 액세스 가능하게 설정하는 것이 더 쉽고 빠릅니다.

개별 파일의 액세스 가능성을 제어하려는 경우 버킷에 기본 객체 ACL을 설정하여 기본적으로 이후에 버킷에 업로드되는 파일이 공유되도록 할 수 있습니다.

권장사항: 특수 페이지 할당

MainPageSuffix 속성으로 제어되는 색인 페이지 서픽스와 NotFoundPage 속성으로 제어되는 커스텀 오류 페이지를 할당할 수 있습니다. 이 중 원하는 한 가지를 할당할 수 있지만 색인 페이지가 없을 경우에는 사용자가 http://www.example.com과 같은 최상위 사이트에 액세스할 때 아무것도 제공되지 않습니다.

색인 페이지

색인 페이지(webserver 디렉토리 색인이라고도 함)는 연결된 파일이 없는 URL 요청 시 방문자에게 제공되는 파일입니다. MainPageSuffix를 할당하면 Cloud Storage는 방문자가 요청한 URL과 접두사가 일치하는 이름의 파일을 찾습니다.

예를 들어, 정적 웹사이트의 MainPageSuffixindex.html로 설정한다고 가정해 보겠습니다. 그리고 버킷 www.example.comdirectory라는 이름의 파일이 없다고 가정합니다. 이 상황에서 사용자가 URL http://www.example.com/directory를 요청하면 Cloud Storage는 www.example.com/directory/index.html 파일을 제공하려고 시도합니다. 해당 파일이 존재하지 않으면 Cloud Storage는 오류 페이지를 반환합니다.

또한 사용자가 최상위 사이트를 요청하면 MainPageSuffix가 제공되는 파일을 제어합니다. 위의 예를 계속해 보면, 사용자가 http://www.example.com을 요청하면 Cloud Storage가 파일 www.example.com/index.html을 제공하려고 시도합니다.

오류 페이지

오류 페이지는 기존 파일과 일치하지 않는 URL을 요청한 정적 사이트 방문자에게 반환되는 파일입니다. MainPageSuffix를 할당한 경우, Cloud Storage는 요청된 이름의 파일이 없거나 해당 색인 페이지가 없는 경우에만 오류 페이지를 반환합니다.

오류 페이지가 반환되는 경우의 http 응답 코드는 404입니다. 오류 페이지로 작동하는 파일을 제어하는 속성은 NotFoundPage입니다. NotFoundPage를 설정하지 않으면 사용자에게 일반 오류 페이지가 표시됩니다.

MainPageSuffixNotFoundPage 설정

다음 샘플에서 MainPageSuffixindex.html로 설정되고 NotFoundPage404.html로 설정됩니다.

콘솔

  1. Google Cloud Platform Console에서 Cloud Storage 브라우저를 엽니다.
    Cloud Storage 브라우저 열기
  2. 버킷 목록에서 앞서 만든 버킷을 찾습니다.

  3. 버킷 옆에 있는 추가 작업 아이콘 추가 작업 아이콘을 클릭하고 웹사이트 구성 수정을 선택합니다.

  4. 웹사이트 구성 대화상자에서 기본 페이지404(찾을 수 없음) 페이지를 지정합니다.

  5. 저장을 클릭합니다.

gsutil

gsutil web set 명령어와 함께 -m 플래그를 사용하여 MainPageSuffix 속성을 설정하고 -e 플래그를 사용하여 NotFoundPage 속성을 설정합니다.

gsutil web set -m index.html -e 404.html gs://www.example.com

성공하면 다음과 같은 결과가 반환됩니다.

Setting website config on gs://www.example.com/...

REST API

JSON API

  1. OAuth 2.0 Playground에서 승인 액세스 토큰을 가져옵니다. Playground에서 OAuth 사용자 인증 정보를 사용하도록 구성합니다.
  2. website 객체에서 mainPageSuffixnotFoundPage 속성을 원하는 페이지로 설정하는 .json 파일을 만듭니다.
    {
    "website":{
    "mainPageSuffix": "index.html",
    "notFoundPage": "404.html"
    }
    }
  3. cURL을 사용하여 PATCH Bucket 요청으로 JSON API를 호출합니다. www.example.com의 경우는 다음과 같습니다.
    curl -X PATCH --data-binary @web-config.json \
     -H "Authorization: Bearer ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg" \
     -H "Content-Type: application/json" \
     "https://www.googleapis.com/storage/v1/b/www.example.com"

XML API

  1. OAuth 2.0 Playground에서 승인 액세스 토큰을 가져옵니다. Playground에서 OAuth 사용자 인증 정보를 사용하도록 구성합니다.
  2. WebsiteConfiguration 요소에서 MainPageSuffixNotFoundPage 요소를 원하는 페이지로 설정하는 .xml 파일을 만듭니다.
    <WebsiteConfiguration>
    <MainPageSuffix>index.html</MainPageSuffix>
    <NotFoundPage>404.html</NotFoundPage>
    </WebsiteConfiguration>
  3. cURL을 사용하여 PUT Bucket 요청과 websiteConfig 쿼리 문자열 매개변수로 XML API를 호출합니다. www.example.com의 경우는 다음과 같습니다.
    curl -X PUT --data-binary @web-config.xml \
        -H "Authorization: Bearer ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg" \
        https://storage.googleapis.com/www.example.com?websiteConfig

웹사이트 테스트

브라우저에서 도메인 이름을 요청하여 버킷에서 콘텐츠가 제공되는지 확인합니다. 객체에 대한 경로 또는 MainPageSuffix 속성을 설정한 경우 도메인 이름으로만 이를 수행할 수 있습니다.

예를 들어, www.example.com 이름의 버킷에 저장된 test.html이라는 객체가 있는 경우, 브라우저에서 www.example.com/test.html로 이동하여 액세스할 수 있는지 확인합니다.

삭제

정적 웹사이트 호스팅 가이드를 완료했으면 할당량을 소비하여 이후에 요금이 청구되지 않도록 GCP에서 만든 리소스를 삭제할 수 있습니다. 다음 섹션에서는 이러한 리소스를 삭제하거나 사용 중지하는 방법을 설명합니다.

프로젝트 삭제

비용이 청구되지 않도록 하는 가장 쉬운 방법은 가이드에서 만든 프로젝트를 삭제하는 것입니다.

프로젝트를 삭제하려면 다음 안내를 따르세요.

  1. GCP Console에서 프로젝트 페이지로 이동합니다.

    프로젝트 페이지로 이동

  2. 프로젝트 목록에서 삭제할 프로젝트를 선택하고 삭제 삭제를 클릭합니다.
  3. 대화상자에서 프로젝트 ID를 입력한 다음 종료를 클릭하여 프로젝트를 삭제합니다.

버킷 삭제

전체 프로젝트를 삭제하지 않으려는 경우, 웹사이트 호스팅에 사용된 버킷을 삭제할 수 있습니다.

콘솔

  1. Google Cloud Platform Console에서 Cloud Storage 브라우저를 엽니다.
    Cloud Storage 브라우저 열기
  2. 삭제할 버킷의 확인란을 선택합니다.

  3. 삭제를 클릭합니다.

  4. 표시되는 오버레이 창에서 삭제를 클릭하여 버킷과 콘텐츠를 삭제합니다.

gsutil

-r 플래그와 함께 gsutil rm 명령어를 사용하여 버킷과 버킷 내 콘텐츠를 삭제합니다.

gsutil rm -r gs://www.example.com

다음 예와 같은 응답이 표시됩니다.

Removing gs://www.example.com/...

코드 샘플

C++

자세한 내용은 Cloud Storage C++ API 참조 문서를 참조하세요.

namespace gcs = google::cloud::storage;
[](gcs::Client client, std::string bucket_name) {
  google::cloud::Status status = client.DeleteBucket(bucket_name);

  if (!status.ok()) {
    throw std::runtime_error(status.message());
  }

  std::cout << "The bucket " << bucket_name << " was deleted successfully.\n";
}

C#

자세한 내용은 Cloud Storage C# API 참조 문서를 참조하세요.

private void DeleteBucket(string bucketName)
{
    var storage = StorageClient.Create();
    storage.DeleteBucket(bucketName);
    Console.WriteLine($"Deleted {bucketName}.");
}

Go

자세한 내용은 Cloud Storage Go API 참조 문서를 참조하세요.

if err := client.Bucket(bucketName).Delete(ctx); err != nil {
	return err
}

자바

자세한 내용은 Cloud Storage 자바 API 참조 문서를 참조하세요.

boolean deleted = bucket.delete(BucketSourceOption.metagenerationMatch());
if (deleted) {
  // the bucket was deleted
} else {
  // the bucket was not found
}

Node.js

자세한 내용은 Cloud Storage Node.js API 참조 문서를 참조하세요.

// Imports the Google Cloud client library
const {Storage} = require('@google-cloud/storage');

// Creates a client
const storage = new Storage();

/**
 * TODO(developer): Uncomment the following line before running the sample.
 */
// const bucketName = 'Name of a bucket, e.g. my-bucket';

// Deletes the bucket
await storage.bucket(bucketName).delete();

console.log(`Bucket ${bucketName} deleted.`);

PHP

자세한 내용은 Cloud Storage PHP API 참조 문서를 참조하세요.

use Google\Cloud\Storage\StorageClient;

/**
 * Delete a Cloud Storage Bucket.
 *
 * @param string $bucketName the name of the bucket to delete.
 *
 * @return void
 */
function delete_bucket($bucketName)
{
    $storage = new StorageClient();
    $bucket = $storage->bucket($bucketName);
    $bucket->delete();
    printf('Bucket deleted: %s' . PHP_EOL, $bucket->name());
}

Python

자세한 내용은 Cloud Storage Python API 참조 문서를 참조하세요.

def delete_bucket(bucket_name):
    """Deletes a bucket. The bucket must be empty."""
    storage_client = storage.Client()
    bucket = storage_client.get_bucket(bucket_name)
    bucket.delete()
    print('Bucket {} deleted'.format(bucket.name))

Ruby

자세한 내용은 Cloud Storage Ruby API 참조 문서를 참조하세요.

# project_id  = "Your Google Cloud project ID"
# bucket_name = "Name of your Google Cloud Storage bucket to delete"

require "google/cloud/storage"

storage = Google::Cloud::Storage.new project_id: project_id
bucket  = storage.bucket bucket_name

bucket.delete

puts "Deleted bucket: #{bucket.name}"

REST API

JSON API

삭제하기 전에 버킷을 비워야 합니다.

  1. OAuth 2.0 Playground에서 승인 액세스 토큰을 가져옵니다. OAuth 사용자 인증 정보를 사용할 수 있도록 플레이그라운드를 구성합니다.
  2. cURL을 사용하여 JSON API를 호출합니다. 여기서 [VALUES_IN_BRACKETS]를 적절한 값으로 바꿉니다.
    curl -X DELETE -H "Authorization: Bearer [OAUTH2_TOKEN]" \
        "https://www.googleapis.com/storage/v1/b/www.example.com"

성공하면 응답에 204 상태 코드가 포함됩니다.

자세한 내용은 버킷: 삭제 JSON 참조 페이지를 참조하세요.

XML API

삭제하기 전에 버킷을 비워야 합니다.

  1. OAuth 2.0 Playground에서 승인 액세스 토큰을 가져옵니다. OAuth 사용자 인증 정보를 사용할 수 있도록 플레이그라운드를 구성합니다.
  2. cURL을 사용하여 XML API를 호출합니다. 여기서 [VALUES_IN_BRACKETS]를 적절한 값으로 바꿉니다.
    curl -X DELETE -H "Authorization: Bearer [OAUTH2_TOKEN]" \
        "https://storage.googleapis.com/www.example.com"

자세한 내용은 버킷 삭제 XML 참조 페이지를 참조하세요.

다음 단계

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

도움이 필요하시나요? 지원 페이지를 방문하세요.