אפשר להשתמש ב-Storage Transfer Service כדי להעביר נתונים ממערכות לאחסון אובייקטים בענן או באתר, שתואמות ל-Amazon S3 API.
Storage Transfer Service ניגש לנתונים שלכם באחסון שתואם ל-S3 באמצעות סוכני העברה שפרוסים במכונות וירטואליות קרוב למקור הנתונים. הסוכנים האלה פועלים בקונטיינר של Docker ושייכים למאגר סוכנים, שהוא אוסף של סוכנים שמשתמשים באותה הגדרה ומעבירים את הנתונים במקביל.
התכונה הזו מאפשרת להעביר נתונים ממאגר אובייקטים מקומי או בענן אל Cloud Storage, להעביר נתונים לארכיון כדי לפנות נפח אחסון מקומי, לשכפל נתונים ל-Google Cloud כדי לשמור על המשכיות עסקית או להעביר נתונים ל-Google Cloud לצורך ניתוח ועיבוד. לקוחות שמעבירים נתונים מ-AWS S3 ל-Cloud Storage יכולים להשתמש בתכונה הזו כדי לשלוט בנתיבי הרשת ל-Google Cloud, וכך להפחית באופן משמעותי את החיובים על העברת נתונים יוצאים.
לפני שמתחילים
לפני שמגדירים את ההעברות, צריך לבצע את השלבים הבאים:
- מתקינים את ה-CLI של gcloud.
- עומדים בדרישות להעברות של מערכת קבצים, כולל התקנת Docker במכונה של סוכן ההעברה.
דרישות מוקדמות
לפני שמגדירים את ההעברה, צריך לוודא שהגדרתם את הדברים הבאים:
- הרשאות משתמש: ודאו שלחשבון המשתמש או לחשבון השירות בניהול המשתמש יש הרשאה להגדיר העברות ומאגרי נציגים. הרשאות משתמש נדרשות
- הרשאות ברמת הפרויקט שמבוססות על סוכנים: ודאו שהגדרתם את התפקידים הנדרשים ברמת הפרויקט לסוכן השירות ולחשבון סוכן ההעברה. הרשאות ברמת הפרויקט שמבוססות על סוכנים
- הרשאות תואמות-S3 במקור: צריך לקבל פרטי כניסה ל-API עם הרשאות קריאה לקטגוריית המקור. הגדרת גישה למקור: אחסון תואם ל-S3
- הרשאות לקטגוריית היעד: נותנים את ההרשאות הנדרשות לקטגוריית היעד של Cloud Storage. הגדרת גישה ל-sink: Cloud Storage
אפשרויות העברה
התכונות הבאות של Storage Transfer Service זמינות להעברות מאחסון תואם-S3 ל-Cloud Storage:
- העברת קבצים ספציפיים באמצעות מניפסט
- אפשר להעביר רשימה של קבצים כדי ש-Storage Transfer Service יפעל לגביהם. פרטים נוספים זמינים במאמר העברת קבצים או אובייקטים ספציפיים באמצעות מניפסט.
- ציון סוג האחסון (storage class)
- אתם יכולים לציין את סוג האחסון ב-Cloud Storage שבו אתם רוצים להשתמש בשביל הנתונים בקטגוריית היעד. אפשר לעיין באפשרויות של
StorageClassכדי לקבל פרטים על REST, או להשתמש בדגל--custom-storage-classעם Google Cloud CLI.שימו לב שהמערכת מתעלמת מההגדרות של סוגי האחסון אם בקטגוריית היעד מופעלת התכונה סיווג אוטומטי. אם התכונה "סיווג אוטומטי" מופעלת, האובייקטים שמועברים לקטגוריה מוגדרים בהתחלה כ-Standard Storage.
- שימור מטא-נתונים
-
כשמעבירים קבצים מאחסון שתואם ל-S3, אפשר להשתמש ב-Storage Transfer Service כדי לשמור מאפיינים מסוימים כמטא-נתונים בהתאמה אישית.
בקטע אחסון ב-Amazon S3 או באחסון תואם-S3 ב-Cloud Storage במאמר שמירת מטא-נתונים מוסבר אילו מטא-נתונים אפשר לשמור ואיך מגדירים את ההעברה.
- רישום ביומן ומעקב
- אפשר לראות העברות מאחסון תואם-S3 ב-Cloud Logging וב-Cloud Monitoring. למידע נוסף, קראו את המאמרים Cloud Logging לשירות Storage Transfer Service ומעקב אחרי משימות העברה. אפשר גם להגדיר התראות Pub/Sub.
יצירת מאגר סוכנים
כדי ליצור מאגר של סוכנים:
מסוף Google Cloud
נכנסים לדף Agent pools במסוף Google Cloud .
הדף Agent pools מוצג, ומופיעה בו רשימה של מאגרי הסוכנים הקיימים.
לוחצים על יצירת מאגר נוסף.
נותנים שם למאגר, ואפשר גם להוסיף תיאור.
אתם יכולים להגדיר מגבלת רוחב פס שתחול על כל המאגר. רוחב הפס שצוין ב-MB/s יחולק בין כל הנציגים במאגר. מידע נוסף זמין במאמר ניהול רוחב הפס של הרשת.
לוחצים על יצירה.
API בארכיטקטורת REST
משתמשים ב-projects.agentPools.create:
POST https://storagetransfer.googleapis.com/v1/projects/PROJECT_ID/agentPools?agent_pool_id=AGENT_POOL_ID
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט שבו יוצרים את מאגר הנציגים. -
AGENT_POOL_ID: המזהה של מאגר הנציגים שאתם יוצרים.
אם מאגר סוכנים תקוע במצב Creating במשך יותר מ-30 דקות, מומלץ למחוק את מאגר הסוכנים וליצור אותו מחדש.
אם מבטלים את ההרשאות הנדרשות של Storage Transfer Service מפרויקט כשמאגר הנציגים נמצא במצב Creating, השירות לא יפעל כמו שצריך.
CLI של gcloud
כדי ליצור מאגר סוכנים באמצעות כלי שורת הפקודה gcloud, מריצים את הפקודה gcloud transfer agent-pools create.
gcloud transfer agent-pools create AGENT_POOL
אלה האפשרויות הזמינות:
AGENT_POOL הוא מזהה ייחודי וקבוע של המאגר הזה.
הפקודה
--no-asyncחוסמת משימות אחרות במסוף עד ליצירת המאגר. אם לא כוללים אותו, יצירת המאגר תתבצע באופן אסינכרוני.--bandwidth-limitמגדיר את רוחב הפס ב-MB/s שיהיה זמין לסוכנים במאגר הזה. מגבלת רוחב הפס חלה על כל הנציגים במאגר, והיא יכולה לעזור למנוע מצב שבו עומס העבודה של ההעברה במאגר ישבש פעולות אחרות שחולקות את רוחב הפס. לדוגמה, מזינים "50" כדי להגדיר מגבלת רוחב פס של 50MB לשנייה. אם לא מציינים את הדגל הזה, הנציגים במאגר הזה ישתמשו בכל רוחב הפס שזמין להם.--display-nameהוא שם שאפשר לשנות כדי לזהות את המאגר הזה. אפשר לכלול פרטים שלא מתאימים לשם המשאב המלא והייחודי של המאגר.
התקנת סוכני העברה
סוכני העברה הם סוכני תוכנה שמתאמים את פעילויות ההעברה מהמקור באמצעות Storage Transfer Service. צריך להתקין אותם במערכת עם גישה לנתוני המקור.
CLI של gcloud
כדי להתקין סוכנים לשימוש עם מקור תואם ל-S3 באמצעות ה-CLI של gcloud, משתמשים בפקודה transfer agents install.
אתם צריכים לספק את פרטי הכניסה כמשתני סביבה בתור הערכים של AWS_ACCESS_KEY_ID ו-AWS_SECRET_ACCESS_KEY, או לשמור אותם כפרטי כניסה שמוגדרים כברירת מחדל בקובצי התצורה של המערכת.
export AWS_ACCESS_KEY_ID=ID
export AWS_SECRET_ACCESS_KEY=SECRET
gcloud transfer agents install --pool=POOL_NAME
כדי להריץ סוכנים באמצעות מפתח של חשבון שירות, משתמשים באפשרות --creds-file:
gcloud transfer agents install --pool=POOL_NAME \
--creds-file=/relative/path/to/service-account-key.json
יצירת משימת העברה
מסוף Google Cloud
כדי ליצור העברה ממקור תואם-S3 לקטגוריה של Cloud Storage:
נכנסים לדף Storage Transfer Service במסוף Google Cloud .
לוחצים על Transfer. נפתח הדף Create a transfer job.
בוחרים באפשרות S3-compatible object storage בתור Source type. היעד חייב להיות Google Cloud Storage.
לוחצים על השלב הבא.
הגדרת המקור
מציינים את המידע הנדרש להעברה:
בוחרים את מאגר הסוכנים שהגדרתם להעברה הזו.
מזינים את שם הקטגוריה ביחס לנקודת הקצה. לדוגמה, אם הנתונים נמצאים במיקום:
https://example.com/bucket_aמזינים:
bucket_aמזינים את נקודת הקצה. אל תכללו את הפרוטוקול (
http://אוhttps://) או את שם הקטגוריה. לדוגמה:example.com
מציינים את המאפיינים האופציונליים של ההעברה:
מזינים את אזור החתימה שבו רוצים להשתמש כדי לחתום על בקשות.
בוחרים את תהליך החתימה לבקשה הזו.
בוחרים את סגנון הפנייה. ההגדרה הזו קובעת אם שם הקטגוריה יופיע בסגנון נתיב (למשל,
https://example.com/bucket-name/key-name) או בסגנון אירוח וירטואלי (למשל,https://bucket-name.example.com/key-name). למידע נוסף, קראו את המאמר Virtual hosting of buckets במסמכי התיעוד של Amazon.בוחרים את פרוטוקול הרשת.
בוחרים את גרסת ה-API של דף האפליקציה שבה רוצים להשתמש. מידע נוסף זמין במסמכי התיעוד של ListObjectsV2 ו-ListObjects.
לוחצים על השלב הבא.
הגדרת הכיור
בשדה Bucket or folder, מזינים את שם קטגוריית היעד ואת שם התיקייה (אופציונלי), או לוחצים על Browse כדי לבחור קטגוריה מרשימת הקטגוריות הקיימות בפרויקט הנוכחי. כדי ליצור קטגוריה חדשה, לוחצים על
Create new bucket.לוחצים על השלב הבא.
בחירת הגדרות העברה
בשדה Description, מזינים תיאור של ההעברה. מומלץ להזין תיאור משמעותי וייחודי כדי שתוכלו להבדיל בין המשימות.
בקטע Metadata options, בוחרים אם להשתמש באפשרויות ברירת המחדל או לוחצים על View and select options כדי לציין ערכים לכל המטא-נתונים הנתמכים. פרטים נוספים זמינים במאמר שמירת מטא-נתונים.
בקטע מתי להחליף, בוחרים אחת מהאפשרויות הבאות:
אם שונה: החלפת קובצי היעד אם לקובץ המקור עם אותו שם יש ערכי Etag או סיכום ביקורת (checksum) שונים.
תמיד: תמיד מחליף את קובצי היעד כשלמקור יש את אותו שם, גם אם הם זהים.
בקטע מתי למחוק, בוחרים אחת מהאפשרויות הבאות:
אף פעם: אף פעם לא למחוק קבצים מהמקור או מהיעד.
Delete file from source after they're transferred: מחיקת קבצים מהמקור אחרי שהם מועברים ליעד. אם קובץ מקור לא מועבר, למשל כי הוא כבר קיים ביעד, קובץ המקור לא נמחק.
Delete files from destination if they're not also at source: אם הקבצים בקטגוריית היעד של Cloud Storage לא נמצאים גם במקור, הקבצים נמחקים מקטגוריית Cloud Storage.
האפשרות הזו מבטיחה שקטגוריית היעד של Cloud Storage תהיה זהה למקור.
בקטע Notification options, בוחרים את נושא Pub/Sub ואת האירועים שעליהם רוצים לקבל התראות. למידע נוסף, קראו את המאמר התראות Pub/Sub.
לוחצים על השלב הבא.
תזמון ההעברה
אפשר לתזמן את ההעברה כך שתפעל פעם אחת בלבד, או להגדיר העברה חוזרת.
לוחצים על Create כדי ליצור את משימת ההעברה.
CLI של gcloud
לפני שמשתמשים ב-CLI של gcloud כדי ליצור העברה, צריך לפעול לפי ההוראות במאמר הגדרת הגישה לכיור של Cloud Storage.
כדי להשתמש ב-CLI של gcloud ליצירת העברה ממקור תואם-S3 לקטגוריה של Cloud Storage, משתמשים בפקודה הבאה.
gcloud transfer jobs create s3://SOURCE_BUCKET_NAME gs://SINK_BUCKET_NAME \
--source-agent-pool=POOL_NAME \
--source-endpoint=ENDPOINT \
--source-signing-region=REGION \
--source-auth-method=AWS_SIGNATURE_V2 | AWS_SIGNATURE_V4 \
--source-request-model=PATH_STYLE | VIRTUAL_HOSTED_STYLE \
--source-network-protocol=HTTP | HTTPS \
--source-list-api=LIST_OBJECTS | LIST_OBJECTS_V2
צריך להשתמש בדגלים הבאים:
--source-agent-poolהוא השם של מאגר הנציגים שבו משתמשים בהעברה הזו.
--source-endpointמציין את נקודת הקצה של מערכת האחסון. לדוגמה,s3.us-east.example.com. כדאי לבדוק עם הספק מהו הפורמט הנכון. אל תכללו את הפרוטוקול (למשל,https://) או את שם הקטגוריה.
שאר הדגלים הם אופציונליים:
-
--source-signing-regionמציין אזור לבקשות חתומות. אם ספק האחסון לא דורש אזור חתימה, אפשר להשמיט את הדגל הזה. -
--source-auth-methodמציין את שיטת האימות שבה צריך להשתמש. הערכים התקינים הםAWS_SIGNATURE_V2אוAWS_SIGNATURE_V4. מידע נוסף זמין במסמכי התיעוד של אמזון בנושא SigV4 ו-SigV2. --source-request-modelמציין את סגנון הפנייה שבו צריך להשתמש. הערכים המותרים הםPATH_STYLEאוVIRTUAL_HOSTED_STYLE. סגנון הנתיב משתמש בפורמטhttps://s3.REGION.example.com/BUCKET_NAME/KEY_NAME. בסגנון של אירוח וירטואלי משתמשים בפורמט `https://BUCKET_NAME.s3.REGION.example.com/KEY_NAME.-
--source-network-protocolמציין את פרוטוקול הרשת שבו הסוכנים צריכים להשתמש במשימה הזו. הערכים התקינים הםHTTPאוHTTPS. -
--source-list-apiמציין את הגרסה של S3 listing API להחזרת אובייקטים מהקטגוריה. הערכים התקינים הםLIST_OBJECTSאוLIST_OBJECTS_V2. מידע נוסף זמין במסמכי התיעוד של אמזון בנושא ListObjectsV2 ו-ListObjects.
כדי לראות אפשרויות נוספות של משימות העברה, מריצים את הפקודה gcloud transfer jobs create --help או קוראים את מאמרי העזרה של gcloud.
API בארכיטקטורת REST
לפני שמשתמשים ב-API בארכיטקטורת REST כדי ליצור העברה, צריך לפעול לפי ההוראות במאמר הגדרת הגישה לכיור של Cloud Storage.
כדי ליצור העברה ממקור תואם ל-S3 באמצעות API בארכיטקטורת REST, יוצרים אובייקט JSON כמו בדוגמה הבאה.
POST https://storagetransfer.googleapis.com/v1/transferJobs
{
...
"transferSpec": {
"source_agent_pool_name":"POOL_NAME",
"awsS3CompatibleData": {
"region":"us-east-1",
"s3Metadata":{
"protocol": "NETWORK_PROTOCOL_HTTPS",
"requestModel": "REQUEST_MODEL_VIRTUAL_HOSTED_STYLE",
"authMethod": "AUTH_METHOD_AWS_SIGNATURE_V4"
},
"endpoint": "example.com",
"bucketName": "BUCKET_NAME",
"path": "PATH",
},
"gcsDataSink": {
"bucketName": "SINK_NAME",
"path": "SINK_PATH"
},
"transferOptions": {
"deleteObjectsFromSourceAfterTransfer": false
}
}
}
תיאורי השדות מפורטים במאמרי העזרה של ה-API של AwsS3CompatibleData.
ספריות לקוח
לפני שמשתמשים בספריות הלקוח כדי ליצור העברה, צריך לפעול לפי ההוראות במאמר הגדרת גישה לכיור של Cloud Storage.
Go
במאמר ספריות הלקוח של Storage Transfer Service מוסבר איך להתקין את ספריית הלקוח ולהשתמש בה ב-Storage Transfer Service. למידע נוסף, קראו את מאמרי העזרה של Storage Transfer Service Go API.
כדי לבצע אימות ב-Storage Transfer Service, עליכם להגדיר את Application Default Credentials. למידע נוסף, ראו הגדרת אימות לסביבת פיתוח מקומית.
Java
במאמר ספריות הלקוח של Storage Transfer Service מוסבר איך להתקין את ספריית הלקוח ולהשתמש בה ב-Storage Transfer Service. למידע נוסף, קראו את מאמרי העזרה של Storage Transfer Service Java API.
כדי לבצע אימות ב-Storage Transfer Service, עליכם להגדיר את Application Default Credentials. למידע נוסף, ראו הגדרת אימות לסביבת פיתוח מקומית.
Node.js
במאמר ספריות הלקוח של Storage Transfer Service מוסבר איך להתקין את ספריית הלקוח ולהשתמש בה ב-Storage Transfer Service. למידע נוסף, קראו את מאמרי העזרה של Storage Transfer Service Node.js API.
כדי לבצע אימות ב-Storage Transfer Service, עליכם להגדיר את Application Default Credentials. למידע נוסף, ראו הגדרת אימות לסביבת פיתוח מקומית.
Python
במאמר ספריות הלקוח של Storage Transfer Service מוסבר איך להתקין את ספריית הלקוח ולהשתמש בה ב-Storage Transfer Service. למידע נוסף, קראו את מאמרי העזרה של Storage Transfer Service Python API.
כדי לבצע אימות ב-Storage Transfer Service, עליכם להגדיר את Application Default Credentials. למידע נוסף, ראו הגדרת אימות לסביבת פיתוח מקומית.
שאלות נפוצות
מה קורה אם הספק התואם ל-S3 משתמש באישור SSL בהתאמה אישית?
אם הספק שתואם ל-S3 משתמש באישור SSL שלא הונפק על ידי רשות אישורים ציבורית, יכול להיות שההעברות ייכשלו עם שגיאת TLS. כדי לפתור את הבעיה, צריך לטעון את אישור הבסיס של הספק לקונטיינר של נציג ההעברה ב-/etc/ssl/certs/CERT_FILE באמצעות הדגל -v של Docker.
לדוגמה:
sudo docker run --ulimit memlock=64000000 -d --rm \ -v HOST_DIRECTORY:CONTAINER_DIRECTORY \ -v PATH/TO/KEY.JSON:/etc/gcloud/key.json:ro \ -v /path/to/your/CERT_FILE:/etc/ssl/certs/CERT_FILE \ -e AWS_ACCESS_KEY_ID=AWS_ACCESS_KEY_ID \ -e AWS_SECRET_ACCESS_KEY=AWS_SECRET_ACCESS_KEY \ gcr.io/cloud-ingest/tsop-agent:latest \ --project-id=PROJECT_ID \ --creds-file=/etc/gcloud/key.json \ --hostname=$(hostname) \ --agent-pool=POOL_NAME
האם יש עלות להעברה מאחסון תואם ל-S3?
העברות מאחסון שתואם ל-S3 לא מחויבות בעמלה "העברות של Storage Transfer Service שדורשות סוכנים". בקטע תמחור מפורטות עמלות נוספות שעשויות לחול. יכול להיות שתחויבו גם על העברת נתונים יוצאים ועל דמי תפעול על ידי ספק שירותי הענן של המקור.
האם יש תמיכה ב-Cloud Logging בהעברות של אחסון תואם-S3?
כן, אפשר להפעיל את Cloud Logging להעברות שלכם לפי ההוראות במאמר Cloud Logging ל-Storage Transfer Service.
האם אפשר להעביר נתונים באמצעות מניפסט?
כן, יש תמיכה בקובצי מניפסט בהעברות שתואמות ל-S3.
אם מוסיפים אובייקט לקטגוריית המקור אחרי שהמשימה התחילה, האם האובייקט הזה יועבר?
השירות Storage Transfer Service מבצע פעולת רשימה בקטגוריית המקור כדי לחשב את ההבדל מהיעד. אם פעולת הרישום כבר הושלמה כשהאובייקט החדש נוסף, המערכת תדלג על האובייקט הזה עד להעברה הבאה.
האם Storage Transfer Service מבצע התאמה של סיכום ביקורת (checksum) במקורות שתואמים ל-S3?
השירות Storage Transfer Service מסתמך על נתוני סיכום ביקורת (checksum) שמוחזרים מהמקור. באחסון שתואם ל-S3, Storage Transfer Service מצפה שה-ETag של האובייקט יהיה גיבוב (hash) ה-MD5 של האובייקט.
עם זאת, לאובייקטים שהועברו לאחסון תואם S3 באמצעות העלאה מרובת חלקים של S3 אין תגי ETag של MD5. במקרה כזה, השירות Storage Transfer Service משתמש בגודל הקובץ כדי לאמת את האובייקט שהועבר.
מהו קצב העברת הנתונים שאפשר להשיג בהעברות מאחסון תואם ל-S3?
כדי להגדיל את קצב ההעברה, אפשר להוסיף עוד סוכני העברה. מומלץ להשתמש ב-3 סוכנים כדי להבטיח עמידות בפני תקלות ולמלא צינור של פחות מ-10Gbps. כדי להרחיב את הפעילות, אפשר להוסיף עוד סוכנים. אפשר להוסיף ולהסיר נציגים בזמן שההעברה מתבצעת.
איפה צריך לפרוס את סוכני ההעברה כדי להעביר נתונים מ-Amazon S3 ל-Cloud Storage?
אתם יכולים להתקין סוכנים ב-Amazon EC2 או ב-EKS באותו אזור שבו נמצא הקטגוריה. אפשר גם להריץ סוכנים ב-Google Cloud באזור הקרוב ביותר.