הגדרת גישה ל-sink: מערכת קבצים

כשמעבירים נתונים למערכת קבצים מקומית או בענן פרטי (כמו POSIX,‏ NFS או SMB), צריך להגדיר את הפרטים הבאים:

  • הרשאות למערכת הקבצים המקומית: צריך לתת לסוכני ההעברה ביעד גישת כתיבה ברמת מערכת ההפעלה לספריות היעד.
  • הרשאות לקטגוריית הביניים (מקובץ לקובץ בלבד): מקצים תפקידי IAM בקטגוריית הביניים של Cloud Storage שמשמשת להעברת קבצים בין מערכות קבצים.

דרישות מוקדמות

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

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

  1. הרשאות משתמש במערכת ההפעלה: ודאו שלמשתמש במערכת ההפעלה שמריץ את תהליך הקונטיינר יש הרשאות קריאה, כתיבה והפעלה בעץ הספרייה של היעד.

  2. התקנת ספריות: כשמתקינים את הסוכנים ביעד, מתקינים את נתיב ספריית היעד במאגר באמצעות הדגל --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)

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

המסוף

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

    כניסה לדף Buckets

  2. לוחצים על התפריט Bucket overflow () של קטגוריית הביניים ובוחרים באפשרות גישת עריכה.
  3. לוחצים על ‎+ Add principal.
  4. בשדה New principals, מזינים את כתובת האימייל של סוכן השירות.
  5. בתפריטים הנפתחים של Select a role, בוחרים את התפקידים Storage Object Creator,‏ Storage Object Viewer ו-Storage Legacy Bucket Reader.
  6. לוחצים שוב על ‎+ Add principal.
  7. מזינים את כתובת האימייל של חשבונות סוכני ההעברה שמשמשים למאגרי הסוכנים במקור וביעד.
  8. בתפריט הנפתח Select a role, בוחרים באפשרות Storage Object User.
  9. לוחצים על Save.

gcloud

  1. מקצים תפקידים של רישום ביומן ומטא-נתונים לסוכן השירות:

    gcloud storage buckets add-iam-policy-binding gs://INTERMEDIATE_BUCKET_NAME \
        --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.objectCreator
    gcloud storage buckets add-iam-policy-binding gs://INTERMEDIATE_BUCKET_NAME \
        --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.objectViewer
    gcloud storage buckets add-iam-policy-binding gs://INTERMEDIATE_BUCKET_NAME \
        --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.legacyBucketReader
  2. מקצים תפקידים של ניהול אובייקטים לחשבונות של נציגי ההעברה גם במאגר הנציגים של המקור וגם במאגר הנציגים של היעד:

    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

  1. יוצרים אסימון גישה כדי לאמת את הבקשה. אם אתם משתמשים ב-CLI של gcloud, הריצו את הפקודה:

    gcloud auth print-access-token
  2. מאחזרים את מדיניות ה-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.
  3. מעדכנים את מדיניות הקטגוריה של הביניים באמצעות 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.*) נכללות באופן אוטומטי.

המאמרים הבאים