כשמעבירים נתונים למערכת קבצים מקומית או בענן פרטי (כמו POSIX, NFS או SMB), צריך להגדיר את הפרטים הבאים:
- הרשאות למערכת הקבצים המקומית: צריך לתת לסוכני ההעברה ביעד גישת כתיבה ברמת מערכת ההפעלה לספריות היעד.
- הרשאות לקטגוריית הביניים (מקובץ לקובץ בלבד): מקצים תפקידי IAM בקטגוריית הביניים של Cloud Storage שמשמשת להעברת קבצים בין מערכות קבצים.
דרישות מוקדמות
- הרשאות משתמש: ודאו שלחשבון המשתמש או לחשבון השירות בניהול המשתמש יש הרשאה להגדיר משימות העברה ומאגרי סוכנים. הרשאות משתמש נדרשות
- הרשאות ברמת הפרויקט שמבוססות על סוכנים: ודאו שהגדרתם את התפקידים הנדרשים ברמת הפרויקט לסוכן השירות ולחשבון סוכן ההעברה. הרשאות ברמת הפרויקט שמבוססות על סוכנים
הרשאות למערכת הקבצים המקומית של היעד
סוכני ההעברה כותבים קבצים ישירות למערכת הקבצים של המארח. כדי לאפשר כתיבה מוצלחת:
הרשאות משתמש במערכת ההפעלה: ודאו שלמשתמש במערכת ההפעלה שמריץ את תהליך הקונטיינר יש הרשאות קריאה, כתיבה והפעלה בעץ הספרייה של היעד.
התקנת ספריות: כשמתקינים את הסוכנים ביעד, מתקינים את נתיב ספריית היעד במאגר באמצעות הדגל
--mount-directories:gcloud transfer agents install --pool=DESTINATION_POOL_NAME \ --mount-directories=/path/to/destination/dir
הרשאות לקטגוריית ביניים (העברות מקובץ לקובץ)
בהעברות בין שתי מערכות קבצים, נעשה שימוש בקטגוריה של Cloud Storage כמתווכת כדי להעביר קבצים במהלך ההעברה.
התפקידים המוגדרים מראש הבאים נותנים לסוכן השירות את הגישה הנדרשת לקטגוריית הביניים:
- יצירת אובייקטים באחסון (
roles/storage.objectCreator) - צפייה באובייקטים באחסון (
roles/storage.objectViewer) - קריאה בקטגוריה באחסון מדור קודם (
roles/storage.legacyBucketReader)
התפקיד הבא מעניק את הגישה הנדרשת לקטגוריית הביניים לחשבונות של סוכני ההעברה:
- משתמש באובייקטים באחסון (
roles/storage.objectUser)
מקצים את התפקידים הבאים בקטגוריית הביניים:
המסוף
- במסוף Google Cloud , נכנסים לדף Buckets של Cloud Storage.
- לוחצים על התפריט Bucket overflow () של קטגוריית הביניים ובוחרים באפשרות גישת עריכה.
- לוחצים על + Add principal.
- בשדה New principals, מזינים את כתובת האימייל של סוכן השירות.
- בתפריטים הנפתחים של Select a role, בוחרים את התפקידים
Storage Object Creator,Storage Object Viewerו-Storage Legacy Bucket Reader. - לוחצים שוב על + Add principal.
- מזינים את כתובת האימייל של חשבונות סוכני ההעברה שמשמשים למאגרי הסוכנים במקור וביעד.
- בתפריט הנפתח Select a role, בוחרים באפשרות
Storage Object User. - לוחצים על Save.
gcloud
מקצים תפקידים של רישום ביומן ומטא-נתונים לסוכן השירות:
gcloud storage buckets add-iam-policy-binding gs://INTERMEDIATE_BUCKET_NAME \ --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.objectCreatorgcloud storage buckets add-iam-policy-binding gs://INTERMEDIATE_BUCKET_NAME \ --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.objectViewergcloud storage buckets add-iam-policy-binding gs://INTERMEDIATE_BUCKET_NAME \ --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.legacyBucketReaderמקצים תפקידים של ניהול אובייקטים לחשבונות של נציגי ההעברה גם במאגר הנציגים של המקור וגם במאגר הנציגים של היעד:
gcloud storage buckets add-iam-policy-binding gs://INTERMEDIATE_BUCKET_NAME \ --member=serviceAccount_OR_user:TRANSFER_AGENT_ACCOUNT --role=roles/storage.objectUserמחליפים את:
- INTERMEDIATE_BUCKET_NAME: השם של קטגוריית ה-Staging הזמנית.
- SERVICE_AGENT_EMAIL: כתובת האימייל של סוכן השירות.
- serviceAccount_OR_user: מציינים את הערך
serviceAccountאם חשבון סוכן ההעברה הוא חשבון שירות, או את הערךuserאם הסוכנים הותקנו באמצעות חשבון משתמש. - TRANSFER_AGENT_ACCOUNT: כתובת האימייל של החשבון שבו פועלים נציגי ההעברה. אם מאגרי הנציגים של המקור והיעד משתמשים בחשבונות שונים, חוזרים על הפקודה הזו.
API בארכיטקטורת REST
יוצרים אסימון גישה כדי לאמת את הבקשה. אם אתם משתמשים ב-CLI של
gcloud, הריצו את הפקודה:gcloud auth print-access-token
מאחזרים את מדיניות ה-IAM הקיימת של הקטגוריה (
GET https://storage./storage/v1/b/<var>INTERMEDIATE_BUCKET_NAME</var>/iam), מוסיפים את הקישורים הבאים למערךbindingsשלה ושומרים את המדיניות הממוזגת בתורintermediate_policy.json:{ "bindings": [ { "role": "roles/storage.objectCreator", "members": ["serviceAccount:SERVICE_AGENT_EMAIL"] }, { "role": "roles/storage.objectViewer", "members": ["serviceAccount:SERVICE_AGENT_EMAIL"] }, { "role": "roles/storage.legacyBucketReader", "members": ["serviceAccount:SERVICE_AGENT_EMAIL"] }, { "role": "roles/storage.objectUser", "members": ["serviceAccount_OR_user:TRANSFER_AGENT_ACCOUNT"] } ] }
מחליפים את:
- SERVICE_AGENT_EMAIL: כתובת האימייל של סוכן השירות.
- serviceAccount_OR_user: מציינים את הערך
serviceAccountאם החשבון של סוכן ההעברה הוא חשבון שירות, או את הערךuserאם הסוכנים הותקנו באמצעות חשבון משתמש. - TRANSFER_AGENT_ACCOUNT: כתובת האימייל של החשבון שבו הותקנו סוכני ההעברה. אם מאגרי הנציגים של המקור והיעד משתמשים בחשבונות שונים, צריך לכלול את שני החשבונות במערך
membersשלroles/storage.objectUser.
מעדכנים את מדיניות הקטגוריה של הביניים באמצעות
curl:curl -X PUT --data-binary @intermediate_policy.json \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Type: application/json" \ "https://storage./storage/v1/b/INTERMEDIATE_BUCKET_NAME/iam"מחליפים את:
- OAUTH2_TOKEN: טוקן הגישה מסוג OAuth 2.0 שנוצר בשלב 1.
- INTERMEDIATE_BUCKET_NAME: השם של קטגוריית הביניים.
מידע נוסף על ארכיטקטורות של העברה מקובץ לקובץ זמין במאמר העברות ממערכת קבצים למערכת קבצים.
ביצועים ואופטימיזציה
- כדי למקסם את התפוקה כשמעבירים למערכות קבצים גדולות, צריך להתקין כמה סוכנים במאגר הסוכנים של היעד (מומלץ לפחות 3). שיטות מומלצות לסוכני העברות
- אם אתם מעבירים קבצים גדולים מקובץ לקובץ, כדאי להפעיל העלאות מרובות חלקים לקטגוריית הביניים. כשמשתמשים בתפקיד Storage Object User (
roles/storage.objectUser), ההרשאות הנדרשות להעלאה מרובת חלקים (storage.multipartUploads.*) נכללות באופן אוטומטי.