בדף הזה מוסבר איך משתמשים בתכונה "רפליקציה בין קטגוריות".
סקירה כללית על רפליקציה בין קטגוריות
במקרים מסוימים, יכול להיות שתרצו להעתיק נתונים מקטגוריה אחת של 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 (
roles/storagetransfer.user) -
הכול, כולל מחיקת משימות:
אדמין של Storage Transfer (
roles/storagetransfer.admin)
התפקידים המוגדרים מראש האלה כוללים את ההרשאות שנדרשות כדי להשתמש ברפליקציה בין קטגוריות. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
כדי להשתמש ברפליקציה בין קטגוריות, נדרשות ההרשאות הבאות:
-
יצירה, הרצה ועדכון של משימות:
-
storagetransfer.jobs.create -
storagetransfer.jobs.get -
storagetransfer.jobs.list -
storagetransfer.jobs.run -
storagetransfer.jobs.update
-
-
מחיקת משרות:
storagetransfer.jobs.delete
במאמר שימוש ב-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.. כדי לקבל את כתובת האימייל של סוכן השירות של Storage Transfer Service, אתם יכולים להשתמש ב-API של Storage Transfer ServicegoogleServiceAccounts.get.
או:
חשבון שירות שמנוהל על ידי משתמש. כתובת האימייל של חשבון השירות הזה היא בפורמט
SERVICE_ACCOUNT_NAME@PROJECT_ID.. אתם יכולים ליצור חשבון שירות משלכם ולתת לו את ההרשאות שנדרשות כדי לשכפל את הנתונים.במאמר הקצאת הרשאות של סוכן שירות לחשבון שירות בניהול המשתמש מוסבר איך להשתמש בחשבון שירות בניהול המשתמש עם Storage Transfer Service. יש הרשאות נוספות שנדרשות מעבר לאלה שמופיעות ברשימות הבאות. באופן ספציפי, צריך לתת לסוכן השירות גישה לחשבון השירות שמנוהל על ידי המשתמש, על ידי הקצאת התפקיד "יצירת אסימונים בחשבון שירות" (
roles/iam.serviceAccountTokenCreator). מידע נוסף זמין במאמר מתן גישה לסוכן השירות.
כדי לשכפל את האובייקטים ולהגדיר התראות Pub/Sub לקטגוריית המקור, סוכן השירות של Storage Transfer Service או חשבון השירות של המשתמש צריכים את ההרשאות הבאות:
ההרשאות הנדרשות
בפרויקט המקור צריך לתת את ההרשאות הבאות:
pubsub.topics.createpubsub.subscriptions.createpubsub.subscriptions.consume
צריך לתת את ההרשאות הבאות בקטגוריית המקור:
storage.buckets.getstorage.buckets.updatestorage.objects.get
צריך לתת את ההרשאות הבאות בקטגוריית היעד:
storage.buckets.getstorage.objects.createstorage.objects.get
אפשר לתת את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או באמצעות הקצאה של כל התפקידים המוגדרים מראש הבאים:
- תפקיד עריכה ב-Pub/Sub (
roles/pubsub.editor) בפרויקט המקור - התפקידים "בעלים של קטגוריית אחסון מדור קודם" (
roles/storage.legacyBucketOwner) ו"צפייה באובייקטים של אחסון" (roles/storage.objectViewer) בקטגוריית המקור - התפקידים Storage Object User (
roles/storage.objectUser) ו-Storage Legacy Bucket Reader (roles/storage.legacyBucketReader) בקטגוריית היעד
הקצאת התפקידים הנדרשים ל-Pub/Sub
ב-Cloud Storage משתמשים בסוכן שירות כדי לנהל את התראות Pub/Sub. כתובת האימייל של סוכן השירות הזה היא בפורמט service-PROJECT_NUMBER@gs-project-accounts..
כדי להגדיר את Pub/Sub ולפרסם הודעות בנושא, סוכן השירות של Cloud Storage צריך את ההרשאות הבאות:
ההרשאות הנדרשות
-
pubsub.topics.publishבנושא Pub/Sub
אפשר לתת את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או באמצעות התפקיד המוגדר מראש הבא:
- פרסום הודעות ב-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, אפשר ליצור משימת רפליקציה לקטגוריות קיימות.
להתקין ולהפעיל את ה-CLI של gcloud, שמאפשר ליצור אסימון גישה לכותרת
Authorization.יוצרים קובץ 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לא נתמך במשימות של שכפול בין קטגוריות.משתמשים ב-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
להתקין ולהפעיל את ה-CLI של gcloud, שמאפשר ליצור אסימון גישה לכותרת
Authorization.משתמשים ב-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
מחליפים את:
-
JOB_NAMEבמזהה הייחודי של משימת הרפליקציה. לדוגמה,1234567890. כדי למצוא את המזהה של משימת ההעברה, מציגים את רשימת משימות הרפליקציה.
ממשקי API בארכיטקטורת REST
API בפורמט JSON
להתקין ולהפעיל את ה-CLI של gcloud, שמאפשר ליצור אסימון גישה לכותרת
Authorization.משתמשים ב-
cURLכדי לשלוח קריאה ל-API בארכיטקטורת REST של Storage Transfer Service באמצעות בקשת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"
מחליפים את:
-
JOB_NAMEבמזהה הייחודי של משימת הרפליקציה. לדוגמה,1234567890. כדי למצוא את המזהה של משימת הרפליקציה, מציגים את רשימת משימות הרפליקציה.
-
עדכון של משימת רפליקציה
אפשר לעדכן את השדות הבאים של משימת רפליקציה:
- תיאור משימת השכפול
- ההגדרה להרצת משימת רפליקציה
- הגדרת ההתראות שפורסמו ב-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
להתקין ולהפעיל את ה-CLI של gcloud, שמאפשר ליצור אסימון גישה לכותרת
Authorization.יוצרים קובץ JSON שמכיל את המבנה הבא, שכולל את השדות של האובייקט
TransferJobשרוצים לעדכן:{ "projectId": string, "transferJob": { object (TransferJob) }, "updateTransferJobFieldMask": UPDATE_MASK }
מחליפים את מה שכתוב בשדות הבאים:
object (TransferJob)מוחלף בשדות של משימת הרפליקציה שרוצים לעדכן. מידע נוסף מופיע בייצוג המשאבים שלTransferJob.
UPDATE_MASKהיא רשימה מופרדת בפסיקים של שמות השדות שרוצים לעדכן. הערכים יכולים להיות אחד או יותר מהבאים:description,transferSpec,notificationConfig,loggingConfig,status.
למידע נוסף על שמות השדות שאפשר לכלול, ראו גוף הבקשה של
transferJobs.patch.משתמשים ב-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"
מחליפים את:
-
JOB_NAMEבמזהה הייחודי של משימת הרפליקציה. לדוגמה,1234567890. כדי למצוא את המזהה של משימת הרפליקציה, מציגים את רשימת משימות הרפליקציה.
-
מחיקת משימת רפליקציה
המסוף
במאמר מחיקת משימת רפליקציה באמצעות מסוף Google Cloud מוסבר איך למחוק משימת רפליקציה באמצעות מסוף Google Cloud .
שורת הפקודה
משתמשים בפקודה gcloud alpha transfer jobs delete:
gcloud alpha transfer jobs delete JOB_NAME
מחליפים את:
-
JOB_NAMEבמזהה הייחודי של משימת הרפליקציה. לדוגמה,1234567890. כדי למצוא את המזהה של משימת הרפליקציה, מציגים את רשימת משימות הרפליקציה.
ממשקי API בארכיטקטורת REST
API בפורמט JSON
להתקין ולהפעיל את ה-CLI של gcloud, שמאפשר ליצור אסימון גישה לכותרת
Authorization.משתמשים ב-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"
מחליפים את:
-
JOB_NAMEבמזהה הייחודי של משימת הרפליקציה. לדוגמה,1234567890. כדי למצוא את המזהה של משימת הרפליקציה, מציגים את רשימת משימות הרפליקציה.
-