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

‫Google Cloud CLI כולל ממשק CLI ל-Cloud Storage,‏ gcloud storage, שיכול לפעול מהר יותר באופן משמעותי מ-gsutil כשמבצעים העלאות והורדות, וצריך פחות התאמה של פרמטרים. לפקודות gcloud storage יש תחביר ומבנה פקודות שמוכרים למשתמשי gsutil, אבל הם שונים במהות בדרכים חשובות רבות. כדי להקל את המעבר ל-CLI של gcloud, ‏ 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.

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