ספריית Shim להרצת gcloud storage

סקירה כללית

‫Cloud SDK כולל ממשק CLI חדש, gcloud storage, שיכול לפעול מהר יותר באופן משמעותי מ-gsutil כשמבצעים העלאות והורדות, וצריך פחות התאמה של פרמטרים. ל-CLI החדש יש תחביר ומבנה פקודות שמוכרים למשתמשי gsutil, אבל הוא שונה במהותו בדרכים חשובות רבות. כדי להקל את המעבר ל-CLI החדש, gsutil מספק ספריית Shim שמתרגמת את פקודות gsutil לפקודות gcloud storage אם קיימת פקודה מקבילה, ועוברת חזרה להתנהגות הרגילה של gsutil אם אין פקודה מקבילה.

הפעלה

מגדירים את use_gcloud_storage=True בקובץ התצורה .boto, בקטע [GSUtil]:

[GSUtil]
use_gcloud_storage=True

אפשר גם להגדיר את הדגל לפקודות בודדות באמצעות הדגל -o ברמה העליונה:

gsutil -o "GSUtil:use_gcloud_storage=True" -m cp -p file gs://bucket/obj

הפקודות הזמינות

ממשק ה-CLI של gcloud storage תומך רק בקבוצת משנה של פקודות gsutil. הרשימה הבאה מציגה פקודות שנתמכות על ידי ספריית ה-Shim, ומתארת את ההבדלים בהתנהגות, אם קיימים.

acl

  • אין תמיכה בפקודת המשנה ch.

autoclass

  • פועלת כמצופה.

bucketpolicyonly

  • פועלת כמצופה.

cat

  • מדפיסה נתונים של אובייקט שני, גם אם האובייקט הראשון לא תקין.

compose

  • פועלת כמצופה.

cors

  • פקודת המשנה get מדפיסה "[]" במקום "gs://[bucket name] has no CORS configuration".

cp

  • מעתיקה אובייקט שני גם אם האובייקט הראשון לא תקין.

  • לא תומכת בעותקים מקובץ לקובץ.

  • תומכת בהעתקת אובייקטים מענן לענן עם קווים נטויים בסוף השם.

  • הדגל של כל הגרסאות (-A) מאפשר הפעלה רציפה באופן עצמאי במקום להציג שגיאה.

defacl

  • אין תמיכה בפקודת המשנה ch.

defstorageclass

  • פועלת כמצופה.

hash

  • לאובייקטים בענן, המערכת ב-gsutil מתעלמת מהדגלים -m ו--c שמשפיעים על אילו גיבובים מוצגים. ההתנהגות הזו קבועה לספריית shim ולאחסון gcloud.

iam

  • אין תמיכה בפקודת המשנה ch.

  • הדגל -f ימשיך בכל שגיאה, ולא רק בשגיאות API.

kms

  • פקודת המשנה להרשאה מחזירה הודעות אינפורמטיביות בפורמט שונה.

  • פקודת המשנה להצפנה מחזירה הודעות אינפורמטיביות בפורמט שונה.

labels

  • פקודת המשנה get מדפיסה "[]" במקום "gs://[bucket name] has no labels configuration".

lifecycle

  • פועלת כמצופה.

logging

  • לפקודת המשנה get יש ריווח שונה של JSON, והיא לא מדפיסה הודעה אינפורמטיבית אם לא נמצאו הגדרות.

ls

  • פועלת כמצופה.

mb

  • פועלת כמצופה.

mv

  • ראו את ההערות לגבי הפקודה cp.

notification

  • פקודת המשנה list מדפיסה את פרטי ההגדרות כ-YAML.

  • פקודת המשנה delete מאפשרת מעקב אחרי ההתקדמות ופעולות מקבילות.

pap

  • פועלת כמצופה.

rb

  • פועלת כמצופה.

requesterpays

  • פועלת כמצופה.

rewrite

  • הדגל k- לא יקפיץ הודעת שגיאה אם נשלחת אליו קריאה ללא מפתח חדש. המפתח הישן נשמר גם כשעובדים עם ספריית shim וגם כשלא עובדים איתה.

rm

  • אין תמיכה בסמנים של מחיקה מסוג $folder$.

rpo

  • פועלת כמצופה.

setmeta

  • לא תקפיץ הודעת שגיאה אם לא היו שינויים בכותרות.

stat

  • כוללת שדה 'Storage class update time:‎' שעשוי להשפיע על הפורמט של הפלט.

ubla

  • פועלת כמצופה.

versioning

  • פועלת כמצופה.

web

  • לפקודת המשנה get יש ריווח שונה של JSON, והיא לא מדפיסה הודעה אינפורמטיבית אם לא נמצאו הגדרות.

ההגדרות של קובץ boto

ההגדרות בקובץ boto ממופות ביחס של 1:1 למשתני הסביבה של gcloud, במקרים הרלוונטיים.

[Credentials]

  • aws_access_key_id: AWS_ACCESS_KEY_ID

  • aws_secret_access_key: AWS_SECRET_ACCESS_KEY

  • use_client_certificate: CLOUDSDK_CONTEXT_AWARE_USE_CLIENT_CERTIFICATE

[Boto]

  • proxy: CLOUDSDK_PROXY_ADDRESS

  • proxy_type: CLOUDSDK_PROXY_TYPE

  • proxy_port: CLOUDSDK_PROXY_PORT

  • proxy_user: CLOUDSDK_PROXY_USERNAME

  • proxy_pass: CLOUDSDK_PROXY_PASSWORD

  • proxy_rdns: CLOUDSDK_PROXY_RDNS

  • http_socket_timeout: CLOUDSDK_CORE_HTTP_TIMEOUT

  • ca_certificates_file: CLOUDSDK_CORE_CUSTOM_CA_CERTS_FILE

  • max_retry_delay: CLOUDSDK_STORAGE_BASE_RETRY_DELAY

  • num_retries: CLOUDSDK_STORAGE_MAX_RETRIES

[GSUtil]

  • check_hashes: CLOUDSDK_STORAGE_CHECK_HASHES

  • default_project_id: CLOUDSDK_CORE_PROJECT

  • disable_analytics_prompt: CLOUDSDK_CORE_DISABLE_USAGE_REPORTING

  • use_magicfile: CLOUDSDK_STORAGE_USE_MAGICFILE

  • parallel_composite_upload_threshold: CLOUDSDK_STORAGE_PARALLEL_COMPOSITE_UPLOAD_THRESHOLD

  • resumable_threshold: CLOUDSDK_STORAGE_RESUMABLE_THRESHOLD

[OAuth2]

  • client_id: CLOUDSDK_AUTH_CLIENT_ID

  • client_secret: CLOUDSDK_AUTH_CLIENT_SECRET

  • provider_authorization_uri: CLOUDSDK_AUTH_AUTH_HOST

  • provider_token_uri: CLOUDSDK_AUTH_TOKEN_HOST

הערות כלליות על תאימות

  • בגלל התאימות בכל הפלטפורמות העיקריות, אפשרות ריבוי עיבודים מופעלת בכל הפקודות כברירת מחדל (מקבילה לאפשרות 'm-' שתמיד כלולה ב-gsutil).

  • רצף של יותר מ-2 כוכביות (למשל ***) תמיד נחשב לכוכבית יחידה.

  • שלא כמו gsutil, ‏gcloud לא מיועד לשימוש בהפעלות מקבילות, ולכן פעולה כזו (כלומר הפעלת ה-shim מ-2 טרמינלים בו-זמנית) עלולה לגרום להתנהגות בלתי צפויה.

  • בהנחה שקטגוריה מכילה אובייקט gs://bucket/nested/foo.txt, האיטרטור של התו הכללי לחיפוש ב-gsutil יהיה תואם ל-foo.txt במקרה של כתובת URL כמו gs://bucket/*/nested/*. ב-shim לא תהיה התאמה ל-foo.txt עם אותה כתובת URL.

  • המידע יתעדכן ככל שתהיה תמיכה בפקודות חדשות גם ב-gcloud storage וגם בספריית shim.

  • אם יש בעיות ב-Unicode, נסו להגדיר את משתנה הסביבה PYTHONUTF8 לערך 1. באופן ספציפי, זה יכול לעזור בשורת הפקודה (CMD) של Windows.