계층적 네임스페이스가 사용 설정된 버킷 만들기 및 관리

이 페이지에서는 계층적 네임스페이스가 사용 설정된 버킷을 생성, 나열, 삭제하는 방법을 설명합니다.

버킷 만들기

이 섹션에서는 계층적 네임스페이스가 사용 설정된 버킷을 만드는 방법을 설명합니다.

콘솔

  1. Google Cloud 콘솔에서 Cloud Storage 버킷 페이지로 이동합니다.

    버킷으로 이동

  2. 만들기를 클릭합니다.
  3. 버킷 만들기 페이지에서 버킷 정보를 입력한 후 계속을 클릭합니다.
    1. 시작하기 섹션에서 다음을 수행합니다.
      1. 버킷 이름 요구사항을 충족하는 전역적으로 고유한 버킷 이름을 입력합니다.
      2. 계층적 네임스페이스(프리뷰)를 사용 설정하려면 펼치기 화살표를 클릭하여 파일 지향 및 데이터 집약적인 워크로드에 최적화 섹션을 펼친 다음 이 버킷에서 계층적 네임스페이스 사용 설정을 선택합니다.

        참고: 기존 버킷에는 계층적 네임스페이스를 사용 설정할 수 없습니다.

      3. 선택사항: 버킷 라벨을 추가하려면 펼치기 화살표를 클릭하여 라벨 섹션을 펼친 다음 라벨 추가를 클릭하고 라벨에 keyvalue를 지정합니다.
    2. 데이터 저장 위치 선택 섹션에서 다음을 수행합니다.
      1. 위치 유형으로 리전을 선택합니다.
      2. 위치 목록에서 버킷 데이터가 영구적으로 저장될 리전을 선택합니다.
    3. 데이터의 스토리지 클래스 선택 섹션에서 버킷에 기본 스토리지 클래스를 선택하거나, 버킷 데이터의 자동 스토리지 클래스 관리에 자동 클래스를 선택합니다.

      참고: 오른쪽 창에 있는 월별 예상 비용 패널은 선택한 스토리지 클래스와 위치, 예상 데이터 크기 및 작업을 기준으로 버킷의 월별 비용을 추정합니다.

    4. 객체 액세스를 제어하는 방식 선택 섹션에서 버킷이 공개 액세스 방지를 적용할지 여부를 선택하고 액세스 제어에서 균일을 선택합니다.

      참고: 프로젝트의 공개 액세스 방지가 프로젝트의 조직 정책에 의해 이미 시행된 경우 공개 액세스 방지 전환이 잠겨 있습니다.

    5. 객체 데이터 보호 방법 선택 섹션에서 다음을 수행합니다.
      1. 선택사항: 커스텀 소프트 삭제 정책, 객체 버전 관리 또는 보관 정책 구성과 같은 데이터 보호 방법을 선택합니다.
      2. 데이터 암호화 방법을 선택하려면 데이터 암호화라는 펼치기 화살표를 클릭합니다.
  4. 만들기를 클릭합니다.

Google Cloud 콘솔에서 실패한 Cloud Storage 작업에 대한 자세한 오류 정보를 가져오는 방법은 문제 해결을 참조하세요.

명령줄

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. 개발 환경에서 gcloud alpha storage buckets create 명령어를 실행합니다.

    gcloud alpha storage buckets create gs://BUCKET_NAME --location=BUCKET_LOCATION --uniform-bucket-level-access --enable-hierarchical-namespace

    각 항목의 의미는 다음과 같습니다.

    • BUCKET_NAME은 버킷에 부여할 이름이며, 이름 지정 요구사항이 적용됩니다. 예를 들면 my-bucket입니다.
    • BUCKET_LOCATION은 버킷 위치입니다. 예를 들면 us-east1입니다.
    • --uniform-bucket-level-access: 버킷에 균일한 버킷 수준 액세스를 사용 설정합니다.
    • --enable-hierarchical-namespace: 버킷에 계층적 네임스페이스를 사용 설정합니다. 기존 버킷에는 계층적 네임스페이스를 사용 설정할 수 없습니다.

    요청이 성공하면 명령어에서 다음과 같은 메시지를 반환합니다.

    Creating gs://BUCKET_NAME/...

    버킷 생성을 더욱 세밀하게 제어하려면 다음 플래그를 설정합니다.

    • --project: 버킷을 연결할 프로젝트 ID 또는 프로젝트 번호를 지정합니다. 예를 들면 my-project입니다.
    • --default-storage-class: 버킷의 기본 스토리지 클래스를 지정합니다. 예를 들면 STANDARD입니다.
    • Google Cloud CLI를 사용하여 버킷을 만드는 옵션의 전체 목록은 buckets create 옵션을 참조하세요.

    예를 들면 다음과 같습니다.

    gcloud alpha storage buckets create gs://BUCKET_NAME --project=PROJECT_ID --default-storage-class=STORAGE_CLASS --location=BUCKET_LOCATION --uniform-bucket-level-access

클라이언트 라이브러리

C++

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

Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.

namespace gcs = ::google::cloud::storage;
using ::google::cloud::StatusOr;
[](gcs::Client client, std::string const& bucket_name) {
  auto metadata = client.CreateBucket(
      bucket_name,
      gcs::BucketMetadata()
          .set_hierarchical_namespace(gcs::BucketHierarchicalNamespace{true})
          .set_iam_configuration(gcs::BucketIamConfiguration{
              gcs::UniformBucketLevelAccess{true, {}}, absl::nullopt}));
  if (!metadata) throw std::move(metadata).status();

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

Go

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

Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.

import (
	"context"
	"fmt"
	"io"
	"time"

	"cloud.google.com/go/storage"
)

// createBucketHierarchicalNamespace creates a new bucket with hierarchical
// namespace features enabled.
func createBucketHierarchicalNamespace(w io.Writer, projectID, bucketName string) error {
	// projectID := "my-project-id"
	// bucketName := "bucket-name"

	ctx := context.Background()
	client, err := storage.NewClient(ctx)
	if err != nil {
		return fmt.Errorf("storage.NewClient: %w", err)
	}
	defer client.Close()

	ctx, cancel := context.WithTimeout(ctx, time.Second*30)
	defer cancel()

	attrs := &storage.BucketAttrs{
		HierarchicalNamespace: &storage.HierarchicalNamespace{
			Enabled: true,
		},
		// Hierarchical namespace buckets must use uniform bucket-level access.
		UniformBucketLevelAccess: storage.UniformBucketLevelAccess{
			Enabled: true,
		},
	}
	bucket := client.Bucket(bucketName)
	if err := bucket.Create(ctx, projectID, attrs); err != nil {
		return fmt.Errorf("Bucket(%q).Create: %w", bucketName, err)
	}
	fmt.Fprintf(w, "Created bucket %v with hierarchical namespace enabled\n", bucketName)
	return nil
}

Java

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

Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.

import com.google.cloud.storage.Bucket;
import com.google.cloud.storage.BucketInfo;
import com.google.cloud.storage.BucketInfo.HierarchicalNamespace;
import com.google.cloud.storage.BucketInfo.IamConfiguration;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.StorageOptions;

public final class CreateHierarchicalNamespaceBucket {

  public static void createHierarchicalNamespaceBucket(String projectId, String bucketName)
      throws Exception {
    // The ID of your GCP project
    // String projectId = "your-project-id";

    // The ID to give your GCS bucket
    // String bucketName = "your-unique-bucket-name";
    StorageOptions storageOptions = StorageOptions.newBuilder().setProjectId(projectId).build();
    try (Storage storage = storageOptions.getService()) {

      BucketInfo bucketInfo =
          BucketInfo.newBuilder(bucketName)
              .setIamConfiguration(
                  // Hierarchical namespace buckets must use uniform bucket-level access.
                  IamConfiguration.newBuilder().setIsUniformBucketLevelAccessEnabled(true).build())
              .setHierarchicalNamespace(HierarchicalNamespace.newBuilder().setEnabled(true).build())
              .build();

      Bucket bucket = storage.create(bucketInfo);

      System.out.printf(
          "Created bucket %s with Hierarchical Namespace enabled.%n", bucket.getName());
    }
  }
}

Node.js

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

Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// The ID of your GCS bucket
// const bucketName = 'your-unique-bucket-name';

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

// Creates a client
// The bucket in the sample below will be created in the project associated with this client.
// For more information, please see https://cloud.google.com/docs/authentication/production or https://googleapis.dev/nodejs/storage/latest/Storage.html
const storage = new Storage();

async function createBucketWithHierarchicalNamespace() {
  const [bucket] = await storage.createBucket(bucketName, {
    iamConfiguration: {
      uniformBucketLevelAccess: {
        enabled: true,
      },
    },
    hierarchicalNamespace: {
      enabled: true,
    },
  });

  console.log(
    `Created '${bucket.name}' with hierarchical namespace enabled.`
  );
}

createBucketWithHierarchicalNamespace().catch(console.error);

PHP

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

Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.

use Google\Cloud\Storage\StorageClient;

/**
 * Create a new bucket with Hierarchical Namespace enabled.
 *
 * @param string $bucketName The name of your Cloud Storage bucket.
 *        (e.g. 'my-bucket')
 */
function create_bucket_hierarchical_namespace(string $bucketName): void
{
    $storage = new StorageClient();
    $bucket = $storage->createBucket($bucketName, [
        'hierarchicalNamespace' => ['enabled' => true],
        'iamConfiguration' => ['uniformBucketLevelAccess' => ['enabled' => true]]
    ]);

    printf('Created bucket %s with Hierarchical Namespace enabled.', $bucket->name());
}

Python

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

Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.

from google.cloud import storage


def create_bucket_hierarchical_namespace(bucket_name):
    """Creates a bucket with hierarchical namespace enabled."""
    # The ID of your GCS bucket
    # bucket_name = "your-bucket-name"

    storage_client = storage.Client()
    bucket = storage_client.bucket(bucket_name)
    bucket.iam_configuration.uniform_bucket_level_access_enabled = True
    bucket.hierarchical_namespace_enabled = True
    bucket.create()

    print(f"Created bucket {bucket_name} with hierarchical namespace enabled.")

Ruby

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

Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.

def create_bucket_hierarchical_namespace bucket_name:
  # The ID to give your GCS bucket
  # bucket_name = "your-unique-bucket-name"

  require "google/cloud/storage"

  storage = Google::Cloud::Storage.new

  hierarchical_namespace = Google::Apis::StorageV1::Bucket::HierarchicalNamespace.new enabled: true

  storage.create_bucket bucket_name do |b|
    b.uniform_bucket_level_access = true
    b.hierarchical_namespace = hierarchical_namespace
  end

  puts "Created bucket #{bucket_name} with Hierarchical Namespace enabled."
end

REST API

JSON API

  1. Authorization 헤더에 대한 액세스 토큰을 생성하려면 gcloud CLI가 설치 및 초기화되어 있어야 합니다.

    또는 OAuth 2.0 Playground를 사용하여 액세스 토큰을 만들고 Authorization 헤더에 포함할 수 있습니다.

  2. 버킷의 설정이 포함된 JSON 파일을 만듭니다. 여기에는 버킷의 name이 포함되어야 합니다. 전체 설정 목록은 Buckets: Insert 문서를 참조하세요. 다음은 일반적으로 포함되는 설정입니다.
  3. {
      "name": "BUCKET_NAME",
      "location": "BUCKET_LOCATION",
      "storageClass": "STORAGE_CLASS",
      "hierarchicalNamespace": {
        "enabled": "BOOLEAN"
      },
      "iamConfiguration": {
        "uniformBucketLevelAccess": {
          "enabled": true
      },
    },
    }

    각 항목의 의미는 다음과 같습니다.

    • BUCKET_NAME은 버킷에 지정할 이름이며, 이름 지정 요구사항이 적용됩니다. 예를 들면 my-bucket입니다.
    • BUCKET_LOCATION은 버킷의 객체 데이터를 저장할 위치입니다. 예를 들면 US-EAST1입니다.
    • STORAGE_CLASS는 버킷의 기본 스토리지 클래스입니다. 예를 들면 STANDARD입니다.
    • hierarchicalNamespace.enabledTRUE로 설정되어 버킷에 계층적 네임스페이스가 사용 설정됩니다. 기존 버킷에는 계층적 네임스페이스를 사용 설정할 수 없습니다.
  4. uniformBucketLevelAccess.enabledTRUE로 설정되어 버킷에 균일한 버킷 수준 액세스가 사용 설정됩니다.
  5. JSON API를 호출하려면 cURL사용합니다.
    curl -X POST --data-binary @JSON_FILE_NAME \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://storage.googleapis.com/storage/v1/b?project=PROJECT_IDENTIFIER"

    각 항목의 의미는 다음과 같습니다.

    • JSON_FILE_NAME은 버킷 설정이 포함된 JSON 파일의 이름입니다.
    • PROJECT_IDENTIFIER는 버킷과 연결할 프로젝트의 ID 또는 번호입니다. 예를 들면 my-project입니다.

버킷의 스토리지 레이아웃은 객체가 버킷 내에서 플랫 네임스페이스 또는 계층적 네임스페이스로 정렬되는 방식을 나타냅니다. 버킷의 스토리지 레이아웃을 보는 방법에 관한 안내는 버킷의 스토리지 레이아웃 가져오기를 참조하세요.

스토리지 레이아웃과 관계없이 모든 버킷을 나열하려면 버킷 나열에 설명된 안내를 따르세요.

계층적 네임스페이스가 사용 설정된 버킷은 다른 버킷과 동일한 방식으로 삭제할 수 있습니다. 삭제의 목적으로 계층적 네임스페이스로 사용 설정된 버킷에 비어 있는 폴더만 있고 객체나 관리 폴더가 없는 경우 버킷은 비어 있는 것으로 간주됩니다. 버킷 삭제에 관한 안내는 버킷 삭제를 참조하세요.

다음 단계

직접 사용해 보기

Google Cloud를 처음 사용하는 경우 계정을 만들어 실제 시나리오에서 Cloud Storage의 성능을 평가할 수 있습니다. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.

Cloud Storage 무료로 사용해 보기