Membuat dan mengelola bucket dengan namespace hierarkis diaktifkan

Halaman ini menjelaskan cara membuat, mencantumkan, dan menghapus bucket dengan namespace hierarkis diaktifkan.

Membuat bucket

Bagian ini menjelaskan cara membuat bucket dengan namespace hierarkis mengaktifkan pembuatan versi.

Konsol

  1. Di Konsol Google Cloud, buka halaman Bucket Cloud Storage.

    Buka Bucket

  2. Klik Create.
  3. Di halaman Create a bucket, masukkan informasi bucket Anda, lalu klik Continue:
    1. Di bagian Mulai, lakukan hal berikut:
      1. Masukkan nama bucket yang unik secara global yang memenuhi persyaratan nama bucket.
      2. Untuk mengaktifkan namespace hierarki (pratinjau), klik panah peluas untuk meluaskan bagian Optimalkan untuk beban kerja berorientasi file dan intensif data, lalu pilih Aktifkan Hierarkis namespace di bucket ini.

        Catatan:Anda tidak dapat mengaktifkan namespace hierarkis di bucket yang sudah ada.

      3. Opsional: Untuk menambahkan label bucket, klik Panah peluas untuk meluaskan bagian Label, lalu klik Tambahkan label, dan tentukan key dan value untuk label Anda.
    2. Di bagian Pilih tempat untuk menyimpan data, lakukan hal berikut:
      1. Pilih Region sebagai Location type.
      2. Di daftar Location, pilih region tempat data bucket akan disimpan secara permanen.
    3. Pada bagian Pilih kelas penyimpanan untuk data Anda, pilih kelas penyimpanan default untuk bucket, atau pilih Autoclass untuk pengelolaan kelas penyimpanan otomatis data bucket.

      Catatan: Panel Estimasi biaya bulanan di bagian memperkirakan biaya bulanan bucket berdasarkan kelas penyimpanan yang dipilih dan lokasi, serta ukuran dan operasi data yang Anda harapkan.

    4. Di bagian Choose how to control access to objects, pilih apakah bucket Anda memberlakukan pencegahan akses publik, dan untuk Kontrol akses, pilih Seragam.

      Catatan: Jika pencegahan akses publik sudah diterapkan oleh kebijakan organisasi, tombol Cegah akses publik dikunci.

    5. Di bagian Choose how to protection object data, lakukan hal berikut:
      1. Opsional: Pilih metode Perlindungan data seperti mengonfigurasi kebijakan kustom untuk penghapusan sementara, pembuatan versi objek, atau kebijakan retensi.
      2. Untuk memilih metode Enkripsi data, klik peluas panah berlabel Enkripsi data.
  4. Klik Create.

Untuk mempelajari cara mendapatkan informasi error mendetail tentang operasi Cloud Storage yang gagal di Konsol Google Cloud, lihat Pemecahan masalah.

Command line

  1. Di konsol Google Cloud, aktifkan Cloud Shell.

    Aktifkan Cloud Shell

    Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.

  2. Di lingkungan pengembangan Anda, jalankan gcloud alpha storage buckets create berikut:

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

    Dengan keterangan:

    • BUCKET_NAME adalah nama yang ingin Anda berikan untuk bucket, dengan tunduk kepada persyaratan penamaan. Contoh, my-bucket.
    • BUCKET_LOCATION adalah lokasi bucket Anda. Misalnya, us-east1.
    • --uniform-bucket-level-access: Aktifkan akses level bucket seragam untuk direktori VM dengan bucket.
    • --enable-hierarchical-namespace: Aktifkan namespace hierarkis untuk direktori VM dengan bucket. Anda tidak dapat mengaktifkan namespace hierarkis dalam bucket yang sudah ada.

    Jika permintaan berhasil, perintah akan menampilkan pesan berikut ini:

    Creating gs://BUCKET_NAME/...

    Tetapkan flag berikut untuk mendapatkan kontrol yang lebih besar atas pembuatan bucket Anda:

    • --project: Menentukan project ID atau nomor project yang akan dikaitkan dengan bucket Anda. Contoh, my-project.
    • --default-storage-class: Menentukan storage default bucket Anda. Misalnya, STANDARD.
    • Untuk mengetahui daftar lengkap opsi pembuatan bucket menggunakan Google Cloud CLI, lihat Opsi buckets create.

    Contoh:

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

Library Klien

C++

Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage C++ API.

Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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

Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage Go API.

Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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

Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage Java API.

Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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

Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage Node.js API.

Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

/**
 * 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

Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage PHP API.

Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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

Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage Python API.

Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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

Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage Ruby API.

Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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. Instal dan lakukan inisialisasi gcloud CLI, untuk membuat token akses bagi header Authorization.

    Atau, Anda dapat membuat token akses menggunakan OAuth 2.0 Playground dan menyertakannya di header Authorization.

  2. Buat file JSON yang berisi setelan untuk bucket, yang harus menyertakan name untuk bucket. Lihat Dokumentasi Bucket: Menyisipkan untuk daftar lengkap pengaturan. Berikut adalah setelan umum yang dapat disertakan:
  3. {
      "name": "BUCKET_NAME",
      "location": "BUCKET_LOCATION",
      "storageClass": "STORAGE_CLASS",
      "hierarchicalNamespace": {
        "enabled": "BOOLEAN"
      },
      "iamConfiguration": {
        "uniformBucketLevelAccess": {
          "enabled": true
      },
    },
    }

    Dengan keterangan:

    • BUCKET_NAME adalah nama yang ingin Anda berikan pada bucket, sesuai dengan persyaratan penamaan. Misalnya, my-bucket.
    • BUCKET_LOCATION adalah lokasi tempat Anda ingin menyimpan data objek bucket. Misalnya, US-EAST1.
    • STORAGE_CLASS adalah kelas penyimpanan default untuk bucket Anda. Misalnya, STANDARD.
    • hierarchicalNamespace.enabled ditetapkan ke TRUE untuk mengaktifkan namespace hierarkis untuk bucket Anda. Anda tidak dapat mengaktifkan namespace hierarkis di bucket yang ada.
  4. uniformBucketLevelAccess.enabled ditetapkan ke TRUE guna mengaktifkan akses level bucket yang seragam untuk bucket Anda.
  5. Gunakan cURL untuk memanggil JSON API:
    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"

    Dengan keterangan:

    • JSON_FILE_NAME adalah nama file JSON yang berisi setelan bucket.
    • PROJECT_IDENTIFIER adalah ID atau nomor project yang akan dikaitkan dengan bucket Anda. Contoh, my-project.

Tata letak penyimpanan bucket menjelaskan cara objek disusun dalam bucket, baik dalam namespace datar maupun namespace hierarkis. Untuk petunjuk tentang cara melihat untuk tata letak penyimpanan bucket, lihat Mendapatkan tata letak penyimpanan bucket.

Untuk menampilkan daftar semua bucket, terlepas dari tata letak penyimpanannya, ikuti petunjuknya dijelaskan dalam Daftar bucket.

Anda dapat menghapus bucket dengan namespace hierarkis yang diaktifkan dengan cara yang sama seperti bucket lainnya. Untuk tujuan penghapusan, jika bucket diaktifkan dengan namespace hierarkis hanya berisi folder kosong dan tidak ada objek atau folder terkelola, bucket dianggap kosong. Untuk mengetahui petunjuk cara menghapus bucket, lihat Menghapus bucket.

Langkah selanjutnya

Coba sendiri

Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa Cloud Storage dalam skenario dunia nyata. Pelanggan baru mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.

Coba Cloud Storage gratis