הורדת אובייקטים

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

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

כדי לקבל את ההרשאות הנדרשות להורדת אובייקטים, צריך לבקש מהאדמין להקצות לכם את התפקיד 'צפייה באובייקט אחסון' (roles/storage.objectViewer) בקטגוריה. אם אתם מתכננים להשתמש במסוףGoogle Cloud , אתם צריכים לבקש מהאדמין להקצות לכם את התפקיד 'אדמין לניהול אחסון' (roles/storage.admin) בקטגוריה.

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

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

  • storage.buckets.list
    • ההרשאה הזו נדרשת רק לשימוש במסוף Google Cloud כדי לבצע את המשימות שמופיעות בדף הזה.
  • storage.objects.get
  • storage.objects.list
    • ההרשאה הזו נדרשת רק לשימוש במסוף Google Cloud כדי לבצע את המשימות שמופיעות בדף הזה.

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

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

הורדת אובייקט מקטגוריה

להורדת אובייקט מקטגוריה:

המסוף

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

    כניסה לדף Buckets

  2. ברשימת הקטגוריות, לוחצים על שם הקטגוריה שמכילה את האובייקט שרוצים להוריד.

    הדף Bucket details נפתח עם הכרטיסייה Objects שנבחרה.

  3. עוברים אל האובייקט, שעשוי להיות בתיקייה.

  4. לוחצים על הסמל Download שמשויך לאובייקט.

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

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

שורת הפקודה

משתמשים בפקודה gcloud storage cp:

gcloud storage cp gs://BUCKET_NAME/OBJECT_NAME SAVE_TO_LOCATION

כאשר:

  • BUCKET_NAME הוא שם הקטגוריה שמכילה את האובייקט שאתם מורידים. לדוגמה, my-bucket.

  • OBJECT_NAME הוא שם האובייקט שמורידים. לדוגמה, pets/dog.png.

  • SAVE_TO_LOCATION הוא הנתיב המקומי שבו שומרים את האובייקט. לדוגמה, Desktop/Images.

אם הפעולה בוצעה ללא שגיאות, התגובה אמורה להיות דומה לדוגמה הבאה:

Completed files 1/1 | 164.3kiB/164.3kiB

אם ההורדה נעצרה לפני שהסתיימה, מריצים את אותה פקודת cp כדי להמשיך את ההורדה מהמקום שבו היא נעצרה.

ספריות לקוח

C++

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

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

namespace gcs = ::google::cloud::storage;
[](gcs::Client client, std::string const& bucket_name,
   std::string const& object_name) {
  gcs::ObjectReadStream stream = client.ReadObject(bucket_name, object_name);

  int count = 0;
  std::string line;
  while (std::getline(stream, line, '\n')) {
    ++count;
  }
  if (stream.bad()) throw google::cloud::Status(stream.status());

  std::cout << "The object has " << count << " lines\n";
}

C#

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

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


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

public class DownloadFileSample
{
    public void DownloadFile(
        string bucketName = "your-unique-bucket-name",
        string objectName = "my-file-name",
        string localPath = "my-local-path/my-file-name")
    {
        var storage = StorageClient.Create();
        using var outputFile = File.OpenWrite(localPath);
        storage.DownloadObject(bucketName, objectName, outputFile);
        Console.WriteLine($"Downloaded {objectName} to {localPath}.");
    }
}

Go

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

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

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

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

// downloadFile downloads an object to a file.
func downloadFile(w io.Writer, bucket, object string, destFileName string) error {
	// bucket := "bucket-name"
	// object := "object-name"
	// destFileName := "file.txt"
	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*50)
	defer cancel()

	f, err := os.Create(destFileName)
	if err != nil {
		return fmt.Errorf("os.Create: %w", err)
	}

	rc, err := client.Bucket(bucket).Object(object).NewReader(ctx)
	if err != nil {
		return fmt.Errorf("Object(%q).NewReader: %w", object, err)
	}
	defer rc.Close()

	if _, err := io.Copy(f, rc); err != nil {
		return fmt.Errorf("io.Copy: %w", err)
	}

	if err = f.Close(); err != nil {
		return fmt.Errorf("f.Close: %w", err)
	}

	fmt.Fprintf(w, "Blob %v downloaded to local file %v\n", object, destFileName)

	return nil

}

Java

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

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

הדוגמה הבאה מורידה אובייקט ספציפי:


import com.google.cloud.storage.BlobId;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.StorageOptions;
import java.nio.file.Paths;

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

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

    // The ID of your GCS object
    // String objectName = "your-object-name";

    // The path to which the file should be downloaded
    // String destFilePath = "/local/path/to/file.txt";

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

      storage.downloadTo(BlobId.of(bucketName, objectName), Paths.get(destFilePath));

      System.out.println(
          "Downloaded object "
              + objectName
              + " from bucket name "
              +