העלאות בסטרימינג

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

שימוש באימות סיכום ביקורת (checksum) במהלך סטרימינג

מכיוון שאפשר לקבל סיכום ביקורת (checksum) רק בבקשה הראשונית של העלאה, לעיתים קרובות אי אפשר להשתמש באימות סיכום ביקורת (checksum) של Cloud Storage במהלך הסטרימינג. תמיד מומלץ להשתמש באימות סיכום ביקורת (checksum), ואפשר לעשות זאת באופן ידני אחרי שמסתיימת העלאת הסטרימינג. אבל אימות לאחר סיום ההעברה, פירושו שאפשר יהיה לגשת לנתונים הפגומים בפרק הזמן הנדרש לאימות הפגמים והסרתם.

אם צריכים לאמת סיכום ביקורת (checksum) לפני השלמת ההעלאה והפיכת הנתונים לנגישים, לא משתמשים בהעלאה בסטרימינג. במקום זאת, כדאי להשתמש באפשרות העלאה אחרת שמבצעת אימות סיכום ביקורת (checksum) לפני השלמת האובייקט.

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

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

  • אם ההעלאות כוללות נעילת שמירה של אובייקט, צריך לבקש מהאדמין להקצות לכם את תפקיד ה-IAM 'אדמין של אובייקטים באחסון' (roles/storage.objectAdmin) בקטגוריה.

  • בכל מקרה אחר, צריך לבקש מהאדמין להקצות לכם את תפקיד ה-IAM 'משתמש באובייקט אחסון' (roles/storage.objectUser) בקטגוריה.

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

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

  • storage.objects.create
  • storage.objects.delete
    • ההרשאה הזו נדרשת רק להעלאות שמחליפות אובייקט קיים.
  • storage.objects.list
    • ההרשאה הזו נדרשת רק אם משתמשים ב-Google Cloud CLI כדי לבצע את ההוראות שבדף הזה.
  • storage.objects.setRetention
    • ההרשאה הזו נדרשת רק להעלאות שכוללות נעילת שמירה של אובייקט.

אפשר לקבל את ההרשאות האלה גם באמצעות תפקידים מוגדרים מראש אחרים או תפקידים בהתאמה אישית.

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

שידור של העלאה

הדוגמאות הבאות מראות איך לבצע העלאה בסטרימינג מתהליך לאובייקט של Cloud Storage:

המסוף

מסוף Google Cloud Google Cloud לא תומך בהעלאות בסטרימינג. במקום זאת, משתמשים ב-CLI של gcloud.

שורת הפקודה

  1. מעבירים את הנתונים לפקודה gcloud storage cp ומשתמשים במקף בשביל כתובת ה-URL של המקור:

    PROCESS_NAME | gcloud storage cp - gs://BUCKET_NAME/OBJECT_NAME

    כאשר:

    • PROCESS_NAME הוא שם התהליך שממנו אוספים נתונים. לדוגמה, collect_measurements.
    • BUCKET_NAME הוא שם הקטגוריה שמכילה את האובייקט. לדוגמה, my_app_bucket.
    • OBJECT_NAME הוא שם האובייקט שנוצר מהנתונים. לדוגמה, data_measurements.

ספריות לקוח

C++

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

כדי לבצע אימות ב-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& object_name, int desired_line_count) {
  std::string const text = "Lorem ipsum dolor sit amet";
  gcs::ObjectWriteStream stream =
      client.WriteObject(bucket_name, object_name);

  for (int lineno = 0; lineno != desired_line_count; ++lineno) {
    // Add 1 to the counter, because it is conventional to number lines
    // starting at 1.
    stream << (lineno + 1) << ": " << text << "\n";
  }

  stream.Close();

  StatusOr<gcs::ObjectMetadata> metadata = std::move(stream).metadata();
  if (!metadata) throw std::move(metadata).status();
  std::cout << "Successfully wrote to object " << metadata->name()
            << " its size is: " << metadata->size()
            << "\nFull metadata: " << *metadata << "\n";
}

C#

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

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


using Google.Cloud.Storage.V1;
using System;
using System.IO;

public class UploadFileSample
{
    public void UploadFile(
        string bucketName = "your-unique-bucket-name",
        string localPath = "my-local-path/my-file-name",
        string objectName = "my-file-name")
    {
        var storage = StorageClient.Create();
        using var fileStream = File.OpenRead(localPath);
        storage.UploadObject(bucketName, objectName, null, fileStream);
        Console.WriteLine($"Uploaded {objectName}.");
    }
}

Go

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

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

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

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

// streamFileUpload uploads an object via a stream.
func streamFileUpload(w io.Writer, bucket, object string) error {
	// bucket := "bucket-name"
	// object := "object-name"
	ctx := context.Background()
	client, err := storage.NewClient(ctx)