שימוש בשכפול בין קטגוריות

בדף הזה יש סקירה כללית של רפליקציה בין קטגוריות והוראות לשימוש בתכונה.

סקירה כללית של רפליקציה בין קטגוריות

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

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

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

שכפול בין קטגוריות משתמש ב-Storage Transfer Service כדי לשכפל אובייקטים וב-Pub/Sub כדי לקבל התראות על שינויים בקטגוריות המקור והיעד. אפשר להפעיל רפליקציה בין קטגוריות בקטגוריות חדשות שיוצרים ובקטגוריות קיימות. רוב האובייקטים יכולים לעבור רפליקציה תוך דקות, אבל אובייקטים בגודל של יותר מ-GiB אחד יכולים לעבור רפליקציה תוך כמה שעות.

מגבלות

  • אין תמיכה בשמות מותאמים אישית בעבודות שכפול בין מאגרי מידע. בקשות שכוללות ערך בשדה name יחזירו שגיאה.

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

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

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

  • כשמשכפלים אובייקטים, מטא-נתונים של חותמות זמן (לדוגמה, timeCreated ו-timeUpdated) לא נשמרים. פרטים על שמירת מטא-נתונים זמינים במאמר בנושא העברות בין קטגוריות של Cloud Storage.

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

  • אובייקטים שכבר נמצאים בדלי כשיוצרים משימת שכפול לא משוכפלים באופן אוטומטי. רק אובייקטים חדשים ומעודכנים משוכפלים. כדי לשכפל אובייקטים קיימים, יוצרים משימת העברה חד-פעמית ב-Storage Transfer Service מהקטגוריה הקיימת לקטגוריה החדשה. הוראות מפורטות זמינות במאמר בנושא יצירת העברות.

לפני שמתחילים

לפני שמתחילים, צריך לבצע את השלבים הבאים.

הפעלת Storage Transfer Service API

אם עדיין לא עשיתם זאת, מפעילים את Storage Transfer Service API.

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

כדי לקבל את ההרשאות שנדרשות לשימוש בשכפול בין קטגוריות, צריך לבקש מהאדמין להקצות לכם את תפקיד ה-IAM‏ Storage Transfer User ‏ (roles/storagetransfer.user) בקטגוריה או בפרויקט המקור.

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

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

כדי להשתמש בשכפול בין מאגרי מידע, נדרשות ההרשאות הבאות:

  • storagetransfer.jobs.create
  • storagetransfer.jobs.delete
  • storagetransfer.jobs.get
  • storagetransfer.jobs.list
  • storagetransfer.jobs.run
  • storagetransfer.jobs.update

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

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

שכפול בין קטגוריות משתמש ב-Storage Transfer Service כדי לשכפל אובייקטים מקטגוריית המקור לקטגוריית היעד, וב-Pub/Sub כדי לקבל התראות על שינויים בקטגוריית המקור.

כדי שהשירותים האלה יוכלו לשמש לשכפול בין מאגרי מידע, צריך להעניק את ההרשאות הנדרשות לחשבון השירות שמשמש את Storage Transfer Service לשכפול נתונים, ולסוכן השירות שמשמש את Pub/Sub לכתיבת התראות.

מתן התפקידים הנדרשים ל-Storage Transfer Service

אפשר להעניק את ההרשאות הנדרשות לשכפול נתונים באמצעות Storage Transfer Service לאחד משני חשבונות שירות. אחת מהאפשרויות:

  • סוכן השירות של Storage Transfer Service, שנוצר ומנוהל באופן אוטומטי על ידי Google. כתובת האימייל של סוכן השירות הזה היא בפורמט השמות project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com. אפשר לקבל את כתובת האימייל של סוכן השירות של Storage Transfer Service באמצעות Storage Transfer Service googleServiceAccounts.get API.

או:

  • חשבון שירות שמנוהל על ידי משתמש. כתובת האימייל של חשבון השירות הזה היא בפורמט SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com. אתם יכולים ליצור חשבון שירות משלכם ולהעניק לו את ההרשאות הנדרשות כדי לשכפל את הנתונים.

    הוראות לשימוש בחשבון שירות שמנוהל על ידי משתמש עם Storage Transfer Service מופיעות במאמר הקצאת הרשאות של סוכן שירות לחשבון שירות שמנוהל על ידי משתמש. נדרשות הרשאות נוספות מעבר לאלה שמפורטות ברשימות הבאות. בפרט, צריך להקצות לסוכן השירות את התפקיד 'יצירת אסימונים בחשבון שירות' (roles/iam.serviceAccountTokenCreator) כדי לתת לו גישה לחשבון השירות שמנוהל על ידי המשתמש. מידע נוסף זמין במאמר מתן גישה לסוכן השירות.

לסוכן השירות של Storage Transfer Service או לחשבון השירות של המשתמש צריכות להיות ההרשאות הבאות כדי לשכפל את האובייקטים ולהגדיר התראות Pub/Sub לקטגוריית המקור:

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

צריך לתת את ההרשאות הבאות בפרויקט המקור:

  • pubsub.topics.create
  • pubsub.subscriptions.create
  • pubsub.subscriptions.consume

צריך לתת את ההרשאות הבאות בקטגוריית המקור:

  • storage.buckets.get
  • storage.buckets.update
  • storage.objects.get

צריך לתת את ההרשאות הבאות בקטגוריית היעד:

  • storage.buckets.get
  • storage.objects.create
  • storage.objects.get

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

  • התפקיד 'עריכה ב-Pub/Sub' (roles/pubsub.editor) בפרויקט המקור
  • התפקידים Storage Legacy Bucket Owner (roles/storage.legacyBucketOwner) ו-Storage Object Viewer (roles/storage.objectViewer) בקטגוריית המקור
  • התפקידים Storage Legacy Bucket Writer‏ (roles/storage.legacyBucketWriter) ו-Storage Object Viewer‏ (roles/storage.objectViewer) בקטגוריית היעד

הקצאת התפקידים הנדרשים ל-Pub/Sub

ב-Cloud Storage משתמשים בסוכן שירות שמנוהל על ידי Google כדי לנהל התראות Pub/Sub. כתובת האימייל של סוכן השירות הזה היא בפורמט service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com.

סוכן השירות של Cloud Storage צריך את ההרשאות הבאות כדי להגדיר את Pub/Sub ולפרסם הודעות בנושא:

ההרשאות הנדרשות
  • pubsub.topics.publish בנושא Pub/Sub
  • pubsub.subscriptions.consume בנושא Pub/Sub
  • pubsub.subscriptions.create בפרויקט המקור

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

  • פרסום הודעות ב-Pub/Sub‏ (roles/pubsub.publisher) בפרויקט המקור

יצירת עבודת שכפול

המסוף

הוראות ליצירת משימת שכפול באמצעות מסוף Google Cloud זמינות במאמר יצירת משימת שכפול באמצעות מסוף Google Cloud .

שורת הפקודה

כשמשתמשים ב-Google Cloud CLI, אפשר ליצור משימת שכפול לדליים קיימים.

כדי ליצור עבודת שכפול, משתמשים בפקודה gcloud alpha transfer jobs create עם הדגל --replication:

gcloud alpha transfer jobs create gs://SOURCE_BUCKET_NAME gs://DESTINATION_BUCKET_NAME --replication

מחליפים את:

  • SOURCE_BUCKET_NAME בשם של קטגוריית המקור שרוצים לשכפל. לדוגמה, my-source-bucket.

  • DESTINATION_BUCKET_NAME בשם של קטגוריית היעד. לדוגמה, my-destination-bucket.

שימו לב: לא ניתן להשתמש בדגל --name בעבודות שכפול בין מאגרי מידע.

ממשקי API ל-REST

API ל-JSON

כשמשתמשים ב-API בפורמט JSON, אפשר ליצור משימת שכפול לקטגוריות קיימות.

  1. התקנה והפעלה של ה-CLI של gcloud, שמאפשרות ליצור אסימון גישה לכותרת Authorization.

  2. יוצרים קובץ JSON שמכיל אובייקט TransferJob עם משאב ReplicationSpec מאותחל:

    TransferJob {
     ReplicationSpec: {
       "gcsDataSource": {
         "bucketName": "SOURCE_BUCKET_NAME"
       },
       "gcsDataSink" {
         "bucketName": "DESTINATION_BUCKET_NAME"
       },
       "objectConditions": {
       },
       "transferOptions": {
         "overwriteWhen": "OVERWRITE_OPTION"
       }
     }
     ...
    }

    מחליפים את:

    • SOURCE_BUCKET_NAME בשם של קטגוריית המקור שמכילה את האובייקטים שרוצים לשכפל. לדוגמה, example-source-bucket.

    • DESTINATION_BUCKET_NAME בשם קטגוריית היעד שאליה יועתקו האובייקטים. לדוגמה, example-destination-bucket.

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

      • ALWAYS: תמיד להחליף אובייקטים בקטגוריית היעד

      • DIFFERENT: מחליף אובייקטים בקטגוריית היעד רק אם נתוני אובייקט היעד שונים מנתוני אובייקט המקור

      • NEVER: אף פעם לא להחליף אובייקטים בקטגוריית היעד

    חשוב לזכור שאין תמיכה בשדה name בעבודות שכפול בין מאגרי מידע.

  3. משתמשים ב-cURL כדי לשלוח קריאה ל-Storage Transfer Service API בארכיטקטורת REST באמצעות בקשת transferJobs.create:

    curl -X POST --data-binary @JSON_FILE_NAME \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://storagetransfer.googleapis.com/v1/transferJobs"

    מחליפים את מה שכתוב בשדות הבאים:

    • JSON_FILE_NAME הוא השם של קובץ ה-JSON שיצרתם בשלב 2.

כדי לבדוק את הסטטוס של עבודת השכפול, צופים ביומנים של Storage Transfer Service ב-Cloud Logging.

הצגת רשימה של משימות שכפול

המסוף

הוראות לשימוש במסוף Google Cloud לצורך הצגת רשימה של משימות שכפול זמינות במאמר הצגת רשימה של משימות שכפול באמצעות מסוף Google Cloud .

שורת הפקודה

משתמשים בפקודה gcloud alpha transfer jobs list עם הדגל --job-type:

gcloud alpha transfer jobs list --job-type=replication

ממשקי API ל-REST

API ל-JSON

  1. התקנה והפעלה של ה-CLI של gcloud, שמאפשרות ליצור אסימון גישה לכותרת Authorization.

  2. משתמשים ב- cURL כדי לשלוח קריאה ל-Storage Transfer Service API בארכיטקטורת REST באמצעות בקשת transferJobs.list:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://storagetransfer.googleapis.com/v1/transferJobs"

צפייה במשימת שכפול

המסוף

הוראות לשימוש במסוף Google Cloud להצגת משימת שכפול מפורטות במאמר הצגת משימת שכפול באמצעות מסוף Google Cloud .

שורת הפקודה

משתמשים בפקודה gcloud alpha transfer jobs describe:

gcloud alpha transfer jobs describe JOB_NAME

מחליפים את:

ממשקי API ל-REST

API ל-JSON

  1. התקנה והפעלה של ה-CLI של gcloud, שמאפשרות ליצור אסימון גישה לכותרת Authorization.

  2. משתמשים ב- cURL כדי לשלוח קריאה ל-Storage Transfer Service API בארכיטקטורת REST באמצעות בקשת transferJobs.get:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://storagetransfer.googleapis.com/v1/transferJobs/JOB_NAME"

    מחליפים את:

עדכון של משימת שכפול

אפשר לעדכן את השדות הבאים של עבודת שכפול:

  • תיאור של עבודת השכפול

  • ההגדרה להרצת משימת שכפול

  • ההגדרה של התראות שמתפרסמות ב-Pub/Sub

  • התנהגות הרישום ביומן של פעולות של משימות שכפול

  • הסטטוס של עבודת השכפול (מופעלת, מושבתת או נמחקה)

המסוף

הוראות לעדכון משימת שכפול במסוף Google Cloud זמינות במאמר עדכון משימת שכפול באמצעות מסוף Google Cloud .

שורת הפקודה

משתמשים בפקודה gcloud alpha transfer jobs update עם הדגלים ששולטים במאפיינים של עבודת השכפול שרוצים לעדכן. רשימה של הדגלים האפשריים מופיעה במאמרי העזרה בנושא gcloud alpha transfer jobs update.

לדוגמה, כדי לעדכן את התנהגות השכתוב של אובייקט בעבודת הרפליקציה, מריצים את הפקודה gcloud alpha transfer jobs update עם הדגל --overwrite-when:

gcloud alpha transfer jobs update JOB_NAME --overwrite-when=OVERWRITE_OPTION

מחליפים את:

  • JOB_NAME במזהה הייחודי של עבודת השכפול. לדוגמה, 1234567890. כדי למצוא את המזהה של עבודת ההעברה, אפשר לרשום או להציג את עבודת ההעברה.

  • OVERWRITE_OPTION עם אפשרות להגדיר איך אובייקטים קיימים בקטגוריית היעד יוחלפו כתוצאה מעבודת שכפול. זה יכול לקרות כשאובייקט היעד ואובייקט המקור הם בעלי אותו שם. הערך חייב להיות אחד מהערכים הבאים:

    • always: תמיד מחליף את אובייקטי היעד.

    • different: מחליף רק אובייקטים בקטגוריית היעד אם נתוני אובייקט היעד שונים מנתוני אובייקט המקור.

    • never: אף פעם לא מתבצעת החלפה של אובייקטים ביעד.

ממשקי API ל-REST

API ל-JSON

  1. התקנה והפעלה של ה-CLI של gcloud, שמאפשרות ליצור אסימון גישה לכותרת Authorization.

  2. יוצרים קובץ JSON שמכיל את המבנה הבא, שכולל את השדות של אובייקט TransferJob שרוצים לעדכן:

    {
     "projectId": string,
     "transferJob": {
       object (TransferJob)
     },
       "updateTransferJobFieldMask": UPDATE_MASK
    }

    מחליפים את מה שכתוב בשדות הבאים:

    • מחליפים את object (TransferJob) בשדות של עבודת השכפול שרוצים לעדכן. מידע נוסף זמין בTransferJobייצוג המשאבים.

    • UPDATE_MASK היא רשימה מופרדת בפסיקים של שמות השדות שרוצים לעדכן. הערכים יכולים להיות אחד או יותר מהערכים הבאים: description, ‏ transferSpec, ‏ notificationConfig,‏ loggingConfig, ‏ status.

    מידע נוסף על שמות השדות שאפשר לכלול זמין בגוף הבקשה transferJobs.patch.

  3. משתמשים ב-cURL כדי לשלוח קריאה ל-Storage Transfer Service API בארכיטקטורת REST באמצעות בקשת transferJobs.patch:

    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://storagetransfer.googleapis.com/v1/transferJobs/JOB_NAME"

    מחליפים את:

מחיקת משימת שכפול

המסוף

הוראות למחיקת משימת שכפול במסוף מופיעות במאמר מחיקת משימת שכפול באמצעות המסוף. Google Cloud Google Cloud

שורת הפקודה

משתמשים בפקודה gcloud alpha transfer jobs delete:

gcloud alpha transfer jobs delete JOB_NAME

מחליפים את:

ממשקי API ל-REST

API ל-JSON

  1. התקנה והפעלה של ה-CLI של gcloud, שמאפשרות ליצור אסימון גישה לכותרת Authorization.

  2. משתמשים ב- cURL כדי לשלוח קריאה ל-Storage Transfer Service API בארכיטקטורת REST באמצעות בקשת transferJobs.delete:

    curl -X DELETE \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://storagetransfer.googleapis.com/v1/transferJobs/JOB_NAME"

    מחליפים את: