העברה מכתובות URL ציבוריות אל Cloud Storage

בעזרת Storage Transfer Service אפשר להעתיק קבצים מרשימה של כתובות URL ציבוריות לקטגוריה שלכם ב-Cloud Storage.

כשיוצרים העברה, צריך לספק קישור לקובץ של ערכים מופרדים בטאבים (TSV) שמכיל את כתובות ה-URL ואת הפרטים של האובייקטים שרוצים להעביר. אפשר לארח את קובץ ה-TSV בכל מיקום HTTP או HTTPS שנגיש לציבור, או לאחסן אותו בקטגוריה של Cloud Storage.

בדף הזה מוסבר איך ליצור רשימת כתובות URL ולהעביר אותה לפקודה ליצירת משימה.

הדרישות לגבי קובץ המקור

  • כתובות ה-URL צריכות להיות נגישות לציבור ולהשתמש בפרוטוקולי HTTP או HTTPS.
  • השרת שמארח כל אובייקט:
    • אסור לדחות את הגישה לאובייקט באמצעות robots.txt.
    • תמיכה בבקשות Range.
    • מחזירה כותרת Content-Length בכל תגובה.

הפורמט של רשימת כתובות ה-URL

רשימת כתובות URL צריכה לעמוד בדרישות הבאות:

  • הקובץ צריך להיות בפורמט של ערכים מופרדים בטאבים.
  • כתובות ה-URL צריכות להיות מסודרות בסדר לקסיקוגרפי לפי UTF-8.
  • בשורה הראשונה צריך לציין את TsvHttpData-1.0.
  • אחרי השורה הראשונה, מציינים אובייקט אחד בכל שורה.
  • כל שורה חייבת להכיל את כתובת ה-URL, ויכולה להכיל גם את גודל הקובץ ואת סכום הבדיקה MD5 של האובייקט בקידוד Base64.

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

TsvHttpData-1.0
https://example.com/myfile.pdf    1357    wHENa08V36iPYAsOa2JAdw==
https://example2.com/images/dataset1/flower.png    2468    R9acAaveoPd2y8nniLUYbw==

כל שורה מכילה:

  • כתובת ה-URL מסוג HTTP או HTTPS של אובייקט מקור.
  • (אופציונלי) גודל האובייקט בבייטים.

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

  • (אופציונלי) סכום הביקורת MD5 של האובייקט בקידוד Base64.

    מוודאים שסכום ה-MD5 שצוין תואם לסכום ה-MD5 שחושב מהבייטים שהועברו. אם סיכום הביקורת (checksum) מסוג MD5 של האובייקט שמתקבל ב-Cloud Storage לא תואם לסיכום הביקורת מסוג MD5 שצוין, העברת האובייקט תיכשל.

הערכים של גודל האובייקט ושל סכום הביקורת MD5 הם אופציונליים, אבל מומלץ מאוד לכלול אותם כדי לוודא תקינות נתונים.

אירוח רשימת כתובות ה-URL

רשימת כתובות ה-URL יכולה להיות מאוחסנת באחד משני המיקומים הבאים:

  • כתובת URL שגלויה לכולם.
  • קטגוריה של Cloud Storage, שסוכן השירות של Storage Transfer Service קיבל אליה גישה.

כתובות URL שנגישות לכולם

כשמאחסנים את רשימת כתובות ה-URL בכתובת URL שזמינה לכל, צריך לעמוד בדרישות הבאות:

  • כתובת ה-URL חייבת להתחיל ב-http:// או ב-https://.
  • השרת צריך להגדיר כותרת Etag חזקה בתגובת ה-HTTP כשהוא מחזיר את רשימת כתובות ה-URL.

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

קטגוריות של Cloud Storage

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

צריך לתת לסוכן השירות את ההרשאות הבאות:

  • ההרשאה storage.object.get באובייקט. אפשר להעניק את ההרשאה הזו באמצעות התפקיד roles/storage.legacyObjectReader בקטגוריה, או באמצעות תפקיד בהתאמה אישית.
  • ההרשאה storage.buckets.get בקטגוריה. אפשר להעניק את ההרשאה הזו באמצעות התפקיד roles/storage.legacyBucketReader או באמצעות תפקיד בהתאמה אישית.

כדי לתת הרשאות לסוכן השירות:

איך מוצאים את האימייל של סוכן השירות

  1. עוברים לדף העיון googleServiceAccounts.get.

    תיפתח חלונית אינטראקטיבית עם הכותרת Try this method (נסו את השיטה הזו).

  2. בחלונית, בקטע Request parameters, מזינים את מזהה הפרויקט. הפרויקט שאתם מציינים כאן צריך להיות הפרויקט שבו אתם משתמשים כדי לנהל את Storage Transfer Service, והוא יכול להיות שונה מהפרויקט של מאגר הנתונים (bucket) של רשימת כתובות ה-URL.

  3. לוחצים על Execute.

כתובת האימייל של סוכן השירות מוחזרת כערך של accountEmail ובפורמט project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com.

מעתיקים את הערך הזה.

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

כדי להעניק לסוכן השירות את התפקיד roles/storage.objectViewer ואת התפקיד roles/storage.bucketViewer בקטגוריית היעד שמכילה את רשימת כתובות ה-URL, פועלים לפי ההוראות במאמר הגדרה וניהול של מדיניות IAM בקטגוריות.

חשבון המשתמש שאתם מוסיפים הוא כתובת האימייל של סוכן השירות. אם נדרש, מזהה החשבון הראשי הוא serviceAccount. לדוגמה, serviceAccount:project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com.

יצירת העברת רשימת כתובות URL

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

מסוף Google Cloud

פועלים לפי ההוראות במאמר יצירת משימת העברה.

כשבוחרים מקור:

  1. בקטע סוג המקור, בוחרים באפשרות רשימת כתובות URL ולוחצים על השלב הבא.

  2. בקטע כתובת URL של קובץ TSV, מזינים את כתובת ה-URL של קובץ הערכים המופרדים בטאבים (TSV). כתובת ה-URL היא כתובת HTTP/HTTPS (לדוגמה, https://example.com/urllist.tsv) או נתיב ב-Cloud Storage (לדוגמה, gs://my-bucket/urllist.tsv).

‫CLI של gcloud

כדי ליצור משימת העברה חדשה, משתמשים בפקודה gcloud transfer jobs create.

gcloud transfer jobs create \
  SOURCE DESTINATION

בהעברות של רשימות כתובות URL, הערך של SOURCE הוא כתובת ה-URL של קובץ ה-TSV. כתובת ה-URL היא כתובת HTTP/HTTPS (לדוגמה, https://example.com/urllist.tsv) או נתיב ב-Cloud Storage (לדוגמה, gs://my-bucket/urllist.tsv).

למידע נוסף על יצירת העברות באמצעות ה-CLI של gcloud, אפשר לעיין במאמר בנושא יצירת משימות העברה.

REST

כדי ליצור משימת העברה של רשימת כתובות URL באמצעות API בארכיטקטורת REST, מציינים את כתובת ה-URL של קובץ ה-TSV בשדה listUrl:

{
  "projectId": "PROJECT_ID",
  "transferSpec": {
    "httpDataSource": {
      "listUrl": "URL"
    },
    "gcsDataSink": {
      "bucketName": "DESTINATION_BUCKET"
    }
  },
  "status": "ENABLED"
}

הערך של URL הוא כתובת HTTP/HTTPS (לדוגמה, https://example.com/urllist.tsv) או נתיב ב-Cloud Storage (לדוגמה, gs://my-bucket/urllist.tsv).

פרטים נוספים על יצירת העברות באמצעות API בארכיטקטורת REST מופיעים במאמר הפניית API בארכיטקטורת REST.