יצירת קטגוריות

דף זה מסביר איך ליצור קטגוריות של Cloud Storage. אם לא צוין אחרת בבקשה, קטגוריות נוצרות US במספר אזורים ועם סוג האחסון (storage class) Standard Storage של Google המוגדר כברירת מחדל.

תפקידים נדרשים

על מנת לקבל את ההרשאות הנדרשות ליצירת קטגוריה של Cloud Storage, צריך לבקש מהאדמין להקצות לכם את התפקיד roles/storage.admin ב-IAM בפרויקט.

התפקיד המוגדר מראש הזה מכיל את ההרשאה הנדרשת ליצירת קטגוריה. על מנת לראות את ההרשאות הנדרשות, מרחיבים את הקטע Required Permissions:

ההרשאות הנדרשות

  • storage.buckets.create
  • storage.buckets.list (נדרשת רק אם יוצרים קטגוריה באמצעות מסוף Google Cloud)
  • resourcemanager.projects.get (נדרשת רק אם יוצרים קטגוריה באמצעות מסוף Google Cloud)

יכול להיות שתוכלו לקבל את ההרשאות האלה גם עם תפקידים אחרים שהוגדרו מראש. במאמר תפקידי IAM ל-Cloud Storage מוסבר אילו תפקידים משויכים לאיזה הרשאות.

במאמר ניהול הגישה לפרויקטים מוסבר איך נותנים תפקידים לפרויקטים.

יצירת קטגוריה חדשה

מסוף

  1. במסוף Google Cloud, נכנסים לדף Buckets של Cloud Storage.

    כניסה לדף Buckets

  2. לוחצים על Create.
  3. למלא את פרטי הקטגוריה בדף Create a bucket. על מנת לעבור לשלב הבא לוחצים על Continue.
    • בשדה Name your bucket צריך לכתוב שם שעומד בקריטריונים לשמות של קטגוריות.
    • בשדה בחר היכן לאחסן את הנתונים שלך (בחירת איפה לאחסן את הנתונים שלך), בחר אתסוג מיקום ואת Location (מיקום) שבה יאוחסנו נתוני הקטגוריה באופן סופי.
    • בשדה בחר מחלקת אחסון עבור הנתונים שלך, בוחרים באפשרות מחלקת אחסון ברירת מחדל עבור הקטגוריה, או בוחרים ב-Autoclass ניהול אוטומטי של רמת האחסון של נתוני הקטגוריה.

      הערה: בחלונית Monthly cost estimate בחלונית השמאלית מוערכות העלויות החודשיות של הקטגוריה על סמך סוג האחסון והמיקום שבחרתם, וגם על סמך הצפי גודל הנתונים והפעולות שלהם.

    • בשדה בחר כיצד לשלוט בגישה לאובייקטים, בוחרים אם הקטגוריה אוכפת מניעת גישה גלויה לכולם ואז בוחרים Access control לאובייקטים שבקטגוריה.

      הערה: אם מניעת גישה ציבורית כבר נאכפת על ידי מדיניות הארגון של הפרויקט, המתג מניעת גישה ציבורית נעול.

    • בשדה בחר כיצד להגן על אובייקט נתונים, מגדירים כלי הגנה אם ברצונך, ובוחרים שיטה להצפנת נתונים
  4. לוחצים על Create.

להסבר איך לקבל מידע מפורט על שגיאות של פעולות Cloud Storage במסוף Google Cloud שנכשלו, ראו פתרון בעיות.

שורת הפקודה

gcloud

  1. במסוף Google Cloud, מפעילים את Cloud Shell.

    הפעלת Cloud Shell

    בחלק התחתון של מסוף Google Cloud מתחיל סשן של Cloud Shell ומופיעה הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.

  2. בסביבת הפיתוח, הרץ את הפקודה gcloud storage buckets create:

    gcloud storage buckets create gs://BUCKET_NAME

    כאשר:

    אם הבקשה תתבצע בהצלחה, הפקודה תחזיר את ההודעה הבאה:

    Creating gs://BUCKET_NAME/...

    הגדר את הסימונים האופציונליים הבאים על מנת שתהיה לכם יותר שליטה ביצירת הקטגוריה:

    • --project: ציין את מזהה הפרויקט או את מספר הפרויקט שאליהם הקטגוריה תשויך. לדוגמה,my-project
    • --default-storage-class: ציין את סיווג האחסון שמוגדר כברירת מחדל בקטגוריה. לדוגמה,NEARLINE
    • --location: ציין את מיקום הקטגוריה. לדוגמה,US-EAST1
    • --uniform-bucket-level-access: הפעל גישה אחידה ברמת הקטגוריה לקטגוריה.
    • לרשימת האפשרויות המלאה ליצירת קטגוריות ב-gcloud: buckets create אפשרויות של Google.

    לדוגמה:

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

‏gsutil

  1. במסוף Google Cloud, מפעילים את Cloud Shell.

    הפעלת Cloud Shell

    בחלק התחתון של מסוף Google Cloud מתחיל סשן של Cloud Shell ומופיעה הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.

  2. בסביבת הפיתוח, הרץ את הפקודה gsutil mb:

    gsutil mb gs://BUCKET_NAME

    כאשר:

    אם הבקשה תתבצע בהצלחה, הפקודה תחזיר את ההודעה הבאה:

    Creating gs://BUCKET_NAME/...

    הגדר את הסימונים האופציונליים הבאים על מנת שתהיה לכם יותר שליטה ביצירת הקטגוריה:

    • -p: ציין את מזהה הפרויקט או את מספר הפרויקט שאליהם הקטגוריה תשויך. לדוגמה: my-project.
    • -c: ציין את סיווג האחסון שמוגדר כברירת מחדל בקטגוריה. לדוגמה,NEARLINE
    • -l: ציין את מיקום הקטגוריה. לדוגמה,US-EAST1
    • -b: ציין את הגדרת הגישה האחידה ברמת הקטגוריה לקטגוריה. לדוגמה,ON
    • לרשימה מלאה של האפשרויות ליצירת קטגוריה ב-gsutil, ראה אפשרויות mb.

    לדוגמה:

    gsutil mb -p PROJECT_ID -c STORAGE_CLASS -l BUCKET_LOCATION -b on gs://BUCKET_NAME

ספריות לקוח

C++

למידע נוסף, ניתן לקרוא את מסמכי העזר של ה- API C++ב-Cloud Storage.

כדי לבצע אימות ב-Cloud Storage, יש להגדיר אתApplication Default Credentials. למידע נוסף, ראו הגדרת אימות עבור סביבת פיתוח מקומית.

namespace gcs = ::google::cloud::storage;
using ::google::cloud::StatusOr;
[](gcs::Client client, std::string const& bucket_name,
   std::string const& storage_class, std::string const& location) {
  StatusOr<gcs::BucketMetadata> bucket_metadata =
      client.CreateBucket(bucket_name, gcs::BucketMetadata()
                                           .set_storage_class(storage_class)
                                           .set_location(location));
  if (!bucket_metadata) throw std::move(bucket_metadata).status();

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

C#

למידע נוסף, ניתן לקרוא את מסמכי העזר של ה- API C#ב-Cloud Storage.

כדי לבצע אימות ב-Cloud Storage, יש להגדיר אתApplication Default Credentials. למידע נוסף, ראו הגדרת אימות עבור סביבת פיתוח מקומית.


using Google.Apis.Storage.v1.Data;
using Google.Cloud.Storage.V1;
using System;

public class CreateRegionalBucketSample
{
    /// <summary>
    /// Creates a storage bucket with region.
    /// </summary>
    /// <param name="projectId">The ID of the project to create the buckets in.</param>
    /// <param name="location">The location of the bucket. Object data for objects in the bucket resides in
    /// physical storage within this region. Defaults to US.</param>
    /// <param name="bucketName">The name of the bucket to create.</param>
    /// <param name="storageClass">The bucket's default storage class, used whenever no storageClass is specified
    /// for a newly-created object. This defines how objects in the bucket are stored
    /// and determines the SLA and the cost of storage. Values include MULTI_REGIONAL,
    /// REGIONAL, STANDARD, NEARLINE, COLDLINE, ARCHIVE, and DURABLE_REDUCED_AVAILABILITY.
    /// If this value is not specified when the bucket is created, it will default to
    /// STANDARD.</param>
    public Bucket CreateRegionalBucket(
        string projectId = "your-project-id",
        string bucketName = "your-unique-bucket-name",
        string location = "us-west1",
        string storageClass = "REGIONAL")
    {
        var storage = StorageClient.Create();
        Bucket bucket = new Bucket
        {
            Location = location,
            Name = bucketName,
            StorageClass = storageClass
        };
        var newlyCreatedBucket = storage.CreateBucket(projectId, bucket);
        Console.WriteLine($"Created {bucketName}.");
        return newlyCreatedBucket;
    }
}

Go

למידע נוסף, ניתן לקרוא את מסמכי העזר של ה- API Goב-Cloud Storage.

כדי לבצע אימות ב-Cloud Storage, יש להגדיר אתApplication Default Credentials. למידע נוסף, ראו הגדרת אימות עבור סביבת פיתוח מקומית.

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

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

// createBucketClassLocation creates a new bucket in the project with Storage class and
// location.
func createBucketClassLocation(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()

	storageClassAndLocation := &storage.BucketAttrs{
		StorageClass: "COLDLINE",
		Location:     "asia",
	}
	bucket := client.Bucket(bucketName)
	if err := bucket.Create(ctx, projectID, storageClassAndLocation); err != nil {
		return fmt.Errorf("Bucket(%q).Create: %w", bucketName, err)
	}
	fmt.Fprintf(w, "Created bucket %v in %v with storage class %v\n", bucketName, storageClassAndLocation.Location, storageClassAndLocation.StorageClass)
	return nil
}

Java

למידע נוסף, ניתן לקרוא את מסמכי העזר של ה- API Javaב-Cloud Storage.

כדי לבצע אימות ב-Cloud Storage, יש להגדיר אתApplication Default Credentials. למידע נוסף, ראו הגדרת אימות עבור סביבת פיתוח מקומית.

import com.google.cloud.storage.Bucket;
import com.google.cloud.storage.BucketInfo;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.StorageClass;
import com.google.cloud.storage.StorageOptions;

public class CreateBucketWithStorageClassAndLocation {
  public static void createBucketWithStorageClassAndLocation(String projectId, String bucketName) {
    // The ID of your GCP project
    // String projectId = "your-project-id";

    // The ID to give your GCS bucket
    // String bucketName = "your-unique-bucket-name";

    Storage storage = StorageOptions.newBuilder().setProjectId(projectId).build().getService();

    // See the StorageClass documentation for other valid storage classes:
    // https://googleapis.dev/java/google-cloud-clients/latest/com/google/cloud/storage/StorageClass.html
    StorageClass storageClass = StorageClass.COLDLINE;

    // See this documentation for other valid locations:
    // http://g.co/cloud/storage/docs/bucket-locations#location-mr
    String location = "ASIA";

    Bucket bucket =
        storage.create(
            BucketInfo.newBuilder(bucketName)
                .setStorageClass(storageClass)
                .setLocation(location)
                .build());

    System.out.println(
        "Created bucket "
            + bucket.getName()
            + " in "
            + bucket.getLocation()
            + " with storage class "
            + bucket.getStorageClass());
  }
}

Node.js

למידע נוסף, ניתן לקרוא את מסמכי העזר של ה- API Node.jsב-Cloud Storage.

כדי לבצע אימות ב-Cloud Storage, יש להגדיר אתApplication Default Credentials. למידע נוסף, ראו הגדרת אימות עבור סביבת פיתוח מקומית.

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

// The name of a storage class
// See the StorageClass documentation for other valid storage classes:
// https://googleapis.dev/java/google-cloud-clients/latest/com/google/cloud/storage/StorageClass.html
// const storageClass = 'coldline';

// The name of a location
// See this documentation for other valid locations:
// http://g.co/cloud/storage/docs/locations#location-mr
// const location = 'ASIA';

// 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 createBucketWithStorageClassAndLocation() {
  // For default values see: https://cloud.google.com/storage/docs/locations and
  // https://cloud.google.com/storage/docs/storage-classes
  const [bucket] = await storage.createBucket(bucketName, {
    location,
    [storageClass]: true,
  });

  console.log(
    `${bucket.name} created with ${storageClass} class in ${location}`
  );
}

createBucketWithStorageClassAndLocation().catch(console.error);

PHP

למידע נוסף, ניתן לקרוא את מסמכי העזר של ה- API PHPב-Cloud Storage.

כדי לבצע אימות ב-Cloud Storage, יש להגדיר אתApplication Default Credentials. למידע נוסף, ראו הגדרת אימות עבור סביבת פיתוח מקומית.

use Google\Cloud\Storage\StorageClient;

/**
 * Create a new bucket with a custom default storage class and location.
 *
 * @param string $bucketName The name of your Cloud Storage bucket.
 *        (e.g. 'my-bucket')
 */
function create_bucket_class_location(string $bucketName): void
{
    $storage = new StorageClient();
    $storageClass = 'COLDLINE';
    $location = 'ASIA';
    $bucket = $storage->createBucket($bucketName, [
        'storageClass' => $storageClass,
        'location' => $location,
    ]);

    $objects = $bucket->objects([
        'encryption' => [
            'defaultKmsKeyName' => null,
        ]
    ]);

    printf('Created bucket %s in %s with storage class %s', $bucketName, $storageClass, $location);
}

Python

למידע נוסף, ניתן לקרוא את מסמכי העזר של ה- API Pythonב-Cloud Storage.

כדי לבצע אימות ב-Cloud Storage, יש להגדיר אתApplication Default Credentials. למידע נוסף, ראו הגדרת אימות עבור סביבת פיתוח מקומית.

from google.cloud import storage

def create_bucket_class_location(bucket_name):
    """
    Create a new bucket in the US region with the coldline storage
    class
    """
    # bucket_name = "your-new-bucket-name"

    storage_client = storage.Client()

    bucket = storage_client.bucket(bucket_name)
    bucket.storage_class = "COLDLINE"
    new_bucket = storage_client.create_bucket(bucket, location="us")

    print(
        "Created bucket {} in {} with storage class {}".format(
            new_bucket.name, new_bucket.location, new_bucket.storage_class
        )
    )
    return new_bucket

Ruby

למידע נוסף, ניתן לקרוא את מסמכי העזר של ה- API Rubyב-Cloud Storage.

כדי לבצע אימות ב-Cloud Storage, יש להגדיר אתApplication Default Credentials. למידע נוסף, ראו הגדרת אימות עבור סביבת פיתוח מקומית.

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

  require "google/cloud/storage"

  storage = Google::Cloud::Storage.new
  bucket  = storage.create_bucket bucket_name,
                                  location:      "ASIA",
                                  storage_class: "COLDLINE"

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

Terraform

אתם יכולים להשתמש במשאב של Terraform על מנת ליצור קטגוריית אחסון.

# Create new storage bucket in the US multi-region
# with coldline storage
resource "random_id" "bucket_prefix" {
  byte_length = 8
}

resource "google_storage_bucket" "static" {
  name          = "${random_id.bucket_prefix.hex}-new-bucket"
  location      = "US"
  storage_class = "COLDLINE"

  uniform_bucket_level_access = true
}

ממשקי API ל-REST

ב-API מסוג JSON:

  1. מקבלים אסימון גישה להרשאה מ-OAuth 2.0 Playground. מגדירים את ה-Playground לשימוש בפרטי כניסה משלכם ל-OAuth. ההוראות מפורטות במאמר אימות API.
  2. ליצור קובץ JSON עם ההגדרות של הקטגוריה, וצריך לכלול name עבור הקטגוריה. על מנת לקבל רשימה מלאה של ההגדרות, עיינו בתיעוד של Buckets:Insert. אלה ההגדרות הנפוצות שיש להגדיר:
  3. {
      "name": "BUCKET_NAME",
      "location": "BUCKET_LOCATION",
      "storageClass": "STORAGE_CLASS",
      "iamConfiguration": {
        "uniformBucketLevelAccess": {
          "enabled": true
        },
      }
    }

    כאשר:

  4. השתמש ב-cURL על מנת להפעיל את JSON API:
    curl -X POST --data-binary @JSON_FILE_NAME \
         -H "Authorization: Bearer OAUTH2_TOKEN" \
         -H "Content-Type: application/json" \
         "https://storage.googleapis.com/storage/v1/b?project=PROJECT_IDENTIFIER"

    כאשר:

    • JSON_FILE_NAME הוא השם של קובץ ה-JSON שיצרת בשלב 2.
    • OAUTH2_TOKEN הוא אסימון הגישה שיצרתם בשלב 1.
    • PROJECT_IDENTIFIER הוא המזהה או המספר של הפרויקט שאליו הקטגוריה תשויך. לדוגמה,my-project

ממשק API בשפת XML

  1. מקבלים אסימון גישה להרשאה מ-OAuth 2.0 Playground. מגדירים את ה-Playground לשימוש בפרטי כניסה משלכם ל-OAuth. ההוראות מפורטות במאמר אימות API.
  2. ליצור קובץ XML שמכיל את הפרטים הבאים:
  3. <CreateBucketConfiguration>
       <LocationConstraint>BUCKET_LOCATION</LocationConstraint>
       <StorageClass>STORAGE_CLASS</StorageClass>
    </CreateBucketConfiguration>

    כאשר:

  4. השתמש ב-cURL על מנת להפעיל את XML API:
    curl -X PUT --data-binary @XML_FILE_NAME \
         -H "Authorization: Bearer OAUTH2_TOKEN" \
         -H "x-goog-project-id: PROJECT_ID" \
         "https://storage.googleapis.com/BUCKET_NAME"

    כאשר:

    • XML_FILE_NAME הוא השם של קובץ ה-XML שיצרתם בשלב 2.
    • OAUTH2_TOKEN הוא אסימון הגישה שיצרתם בשלב 1.
    • PROJECT_ID הוא מזהה הפרויקט שאליו הקטגוריה תשויך. לדוגמה, my-project
    • BUCKET_NAME הוא השם שברצונכם לתת לקטגוריה, בכפוף לדרישות למתן שמות. לדוגמה, my-bucket

המאמרים הבאים

נסו בעצמכם

אנחנו ממליצים למשתמשים חדשים ב-Google Cloud ליצור חשבון על מנת שיוכלו לבחון את הביצועים של Cloud Storage בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.

התנסות בחינם ב-Cloud Storage