בדף הזה מוסבר איך למחוק אובייקטים מקטגוריות ב-Cloud Storage. במאמר מידע על מחיקת אובייקטים מופיע סקירה כללית של שיטות למחיקת אובייקטים.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות למחיקת אובייקטים, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בדלי שמכיל את האובייקטים שאתם רוצים למחוק:
-
מחיקת אובייקטים באמצעות Google Cloud CLI או ממשקי REST API:
משתמש באובייקט Storage (
roles/storage.objectUser) -
כדי למחוק אובייקטים באמצעות Google Cloud המסוף:
אדמין של אחסון (
roles/storage.admin) -
לחלופין, כדי למחוק אובייקטים באמצעות Google Cloud המסוף:
צפייה (
roles/viewer) ומשתמש באובייקטים באחסון (roles/storage.objectUser)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
התפקידים המוגדרים מראש האלה כוללים את ההרשאות שנדרשות למחיקת אובייקטים. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
כדי למחוק אובייקטים, צריך את ההרשאות הבאות:
-
מחיקת אובייקטים:
storage.objects.delete -
כדי להציג רשימה של אובייקטים באמצעות מסוף Google Cloud , או באמצעות הדגל
--recursiveאו תווים כלליים ב-Google Cloud CLI:storage.objects.list -
הצגת רשימת קטגוריות באמצעות Google Cloud המסוף:
storage.buckets.list
יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
מחיקת אובייקט בודד
בקטע הזה מוסבר איך למחוק אובייקט אחד בכל פעם.
כדי למחוק אובייקט יחיד:
המסוף
- במסוף Google Cloud , נכנסים לדף Buckets של Cloud Storage.
ברשימת הקטגוריות, לוחצים על שם הקטגוריה שמכילה את האובייקטים שרוצים למחוק.
הדף Bucket details נפתח עם הכרטיסייה Objects שנבחרה.
עוברים אל האובייקט, שאולי יהיה ממוקם בתיקייה.
מסמנים את התיבה שלצד האובייקט שרוצים למחוק.
לוחצים על מחיקה ואז על מחיקה בתיבת הדו-שיח שמופיעה.
שורת הפקודה
משתמשים בפקודה Google Cloud CLI gcloud storage rm:
gcloud storage rm gs://BUCKET_NAME/OBJECT_NAME
כאשר:
-
BUCKET_NAMEהוא שם הקטגוריה שמכילה את האובייקט שרוצים למחוק. לדוגמה,my-bucket. -
OBJECT_NAMEהוא שם האובייקט שרוצים למחוק. לדוגמה,pets/dog.png.
אם הפעולה בוצעה ללא שגיאות, התשובה תיראה כמו בדוגמה הבאה:
Removing objects: Removing gs://example-bucket/file.txt... Completed 1/1
ספריות לקוח
C++
למידע נוסף, קראו את מאמרי העזרה של Cloud Storage C++ API.
כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
C#
למידע נוסף, קראו את מאמרי העזרה של Cloud Storage C# API.
כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Go
למידע נוסף, קראו את מאמרי העזרה של Cloud Storage Go API.
כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Java
למידע נוסף, קראו את מאמרי העזרה של Cloud Storage Java API.
כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Node.js
למידע נוסף, קראו את מאמרי העזרה של Cloud Storage Node.js API.
כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
PHP
למידע נוסף, קראו את מאמרי העזרה של Cloud Storage PHP API.
כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Python
למידע נוסף, קראו את מאמרי העזרה של Cloud Storage Python API.
כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Ruby
למידע נוסף, קראו את מאמרי העזרה של Cloud Storage Ruby API.
כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Rust
ממשקי API ל-REST
API בפורמט JSON
התקנה והפעלה של ה-CLI של gcloud, שמאפשרות ליצור אסימון גישה לכותרת
Authorization.משתמשים ב-
curlכדי לשלוח קריאה ל-API בפורמט JSON באמצעות בקשתDELETE:curl -X DELETE \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/OBJECT_NAME"
כאשר:
-
BUCKET_NAMEהוא שם הקטגוריה שמכילה את האובייקט שרוצים למחוק. לדוגמה,my-bucket. OBJECT_NAMEהוא שם האובייקט שרוצים להוריד, מותאם לקידודי התווים שמתאימים לכתובות URL. לדוגמה,pets/dog.pngיותאם לקידודי התווים שמתאימים לכתובות URL באופן הבא:pets%2Fdog.png.
-
API בפורמט XML
התקנה והפעלה של ה-CLI של gcloud, שמאפשרות ליצור אסימון גישה לכותרת
Authorization.משתמשים ב-
curlכדי לשלוח קריאה ל-API בפורמט XML באמצעות בקשתDELETE Object:curl -X DELETE \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/BUCKET_NAME/OBJECT_NAME"
כאשר:
-
BUCKET_NAMEהוא שם הקטגוריה שמכילה את האובייקט שרוצים למחוק. לדוגמה,my-bucket. OBJECT_NAMEהוא שם האובייקט שרוצים להוריד, מותאם לקידודי התווים שמתאימים לכתובות URL. לדוגמה,pets/dog.pngיותאם לקידודי התווים שמתאימים לכתובות URL באופן הבא:pets%2Fdog.png.
-
מחיקת כמות גדולה של אובייקטים
בקטע הזה מוסבר איך למחוק בבת אחת כמות גדולה של אובייקטים על ידי בחירתם במסוףGoogle Cloud , על ידי מחיקת אובייקטים עם תחילית משותפת באמצעות כלי שורת פקודה, או על ידי ציון רשימה של אובייקטים בבקשות API או בספריות לקוח.
המסוף
- במסוף Google Cloud , נכנסים לדף Buckets של Cloud Storage.
ברשימת הקטגוריות, לוחצים על שם הקטגוריה שמכילה את האובייקטים שרוצים למחוק.
הדף Bucket details נפתח עם הכרטיסייה Objects שנבחרה.
עוברים אל האובייקטים, שאולי יהיו ממוקמים בתיקייה.
מסמנים את התיבה לצד כל אובייקט שרוצים למחוק.
אפשר לסמן את התיבה של התיקיות, ובעקבות זאת יימחקו כל האובייקטים שבתיקייה הזו.
לוחצים על מחיקה ואז על מחיקה בתיבת הדו-שיח שמופיעה.
אם מוחקים מספר אובייקטים בבת אחת, אפשר ללחוץ על הסמל Notifications במסוף Google Cloud כדי לעקוב אחרי התקדמות המחיקה. במסוףGoogle Cloud אפשר למחוק מיליוני אובייקטים בבת אחת, והפעולה הזו מתבצעת ברקע.
במאמר פתרון בעיות מוסבר איך מקבלים מידע מפורט על שגיאות בנושא פעולות ב-Cloud Storage שנכשלו ב Google Cloud מסוף.
שורת הפקודה
Google Cloud CLI
כדי למחוק קבוצות של אובייקטים שיש להם אותה קידומת, למשל אובייקטים שהשמות שלהם מחקים מבנה של תיקיות, משתמשים בדגל --recursive עם gcloud storage rm:
gcloud storage rm --recursive gs://BUCKET_NAME/PREFIX
כאשר:
-
BUCKET_NAMEהוא שם הקטגוריה. לדוגמה,my-bucket. -
PREFIXהוא קידומת משותפת של האובייקטים שרוצים למחוק. לדוגמה,pets/.
Amazon S3 CLI
כדי למחוק כמה אובייקטים ב-Cloud Storage באמצעות Amazon S3 CLI, משתמשים בפקודה aws s3api delete-objects. כדי להפנות את הבקשה אל ה-API בפורמט XML למחיקת כמה אובייקטים ב-Cloud Storage, צריך להגדיר את הדגל --endpoint-url לערך storage.googleapis.com. הגדרות מפורטות של פרמטרים והתנהגות של delete-objects API זמינות במאמרי העזרה של Amazon S3 CLI בנושא delete-objects.
ספריות לקוח
Cloud Storage תומך ב-API בפורמט XML למחיקה של אובייקטים מרובים דרך הממשק התואם ל-Amazon S3.
כדי להשתמש בספריות לקוח שתואמות ל-Amazon S3 למחיקה של אובייקטים בכמות גדולה, צריך להפנות את הבקשה לנקודת הקצה Google Cloud על ידי הגדרת כתובת ה-URL של נקודת הקצה ל-https://storage.googleapis.com בתצורת הלקוח. הגישה הזו יכולה להיות שימושית אם אתם מבצעים אחת מהמשימות הבאות:
- שימוש בבסיסי קוד קיימים או בכלי פיתוח שכבר נוצרו עבור Amazon S3.
- שמירה על עקביות בסביבות מרובות עננים שכוללות גם Amazon S3 וגם Cloud Storage.
בדוגמה הבאה מוצג איך לאתחל לקוח באמצעות ספריית Boto3 כדי ליצור אינטראקציה עם Cloud Storage:
import boto3
def main():
# Initialize the S3 client to point to the Google Cloud Storage endpoint
client = boto3.client(
service_name='s3',
endpoint_url='https://storage.googleapis.com',
aws_access_key_id='YOUR_ACCESS_ID',
aws_secret_access_key='YOUR_SECRET',
)
# Perform delete operations as defined in the library's documentation
# response = client.delete_objects(Bucket='BUCKET_NAME', Delete={'Objects': [...]})
חתימות של שיטות ספציפיות והגדרות של פרמטרים מופיעות delete_objects במאמרי העזרה של Boto3.
API בפורמט XML
כדי למחוק עד 1,000 אובייקטים בבקשה אחת באמצעות API בפורמט XML, מבצעים את השלבים הבאים:
התקנה והפעלה של ה-CLI של gcloud, שמאפשרות ליצור אסימון גישה לכותרת
Authorization.יוצרים מסמך XML שמציין את האובייקטים שרוצים למחוק.
רשימה מלאה של ההגדרות מופיעה במאמר מחיקת כמה אובייקטים במאמרי העזרה של ה-API בפורמט XML. ההגדרות הנפוצות שצריך לכלול בקובץ ה-XML:
<Delete> <Object> <Key>OBJECT_NAME</Key> <VersionId>VERSION_ID</VersionId> </Object> ... <Quiet>QUIET_RESPONSE_BOOLEAN</Quiet> </Delete>כאשר:
-
OBJECT_NAMEהוא שם האובייקט בקידוד כתובת URL. לדוגמה,pets/dog.pngיותאם לקידודי התווים שמתאימים לכתובות URL באופן הבא:pets%2Fdog.png. אפשר לציין עד 1,000 אובייקטים בקובץ ה-XML. -
VERSION_IDהוא מזהה הגרסה של האובייקט. לדוגמה,11111. -
QUIET_RESPONSE_BOOLEANשולט ברמת הפירוט של התגובה של ה-API:- מגדירים את הערך
Falseכדי לקבל תשובה מפורטת. התשובה כוללת פרטים על כל אובייקט, גם אם הוא נמחק בהצלחה וגם אם לא. פעולת המחיקה של אובייקטים מרובים באמצעות API בפורמט XML היא לא אטומית. אם בקשה מסוימת מובילה לכשלים חלקיים, יכול להיות שחלק מהאובייקטים יימחקו בהצלחה וחלק לא. לכן מומלץ להשתמש בתגובה המפורטת כדי לזהות את כל האובייקטים שנמחקו. אם הפעלתם את יומני הביקורת Data Access, תוכלו גם לבדוק את יומני הביקורת כדי לראות פרטים על הכשלים. - מגדירים את הערך
Trueכדי לקבל תשובה שקטה. גוף התגובה לא כולל מידע על האובייקטים שנמחקו בהצלחה.
- מגדירים את הערך
-
משתמשים ב-
curlכדי לשלוח בקשת קטגוריהPOSTל-API בפורמט XML עם פרמטר השאילתה?deleteוקובץ ה-XML:curl -X POST --data-binary @XML_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/BUCKET_NAME?delete"
כאשר:
-
XML_FILE_NAMEהוא השם של קובץ ה-XML שיצרתם.
BUCKET_NAMEהוא שם הקטגוריה שמכילה את האובייקטים שרוצים למחוק.אם מצב
Quietמושבת, תגובה מפורטת עשויה להיראות כך:<DeleteResult> <Deleted> <Key>images/photo1.jpg</Key> <VersionId>11111</VersionId> </Deleted> <Deleted> <Key>documents/report.pdf</Key> <VersionId>22222</VersionId> </Deleted> <Error> <Code>AccessDenied</Code> <Key>private/financial_data.xlsx</Key> <Message>Access Denied. You don't have permission to delete this object.</Message> <VersionId>33333</VersionId> </Error> </DeleteResult>
אם מצב
Quietמופעל, בתגובה מופיעים רק אובייקטים שנכשלו במחיקה. אם כל האובייקטים נמחקים בהצלחה, מוחזר תג<DeleteResult/>ריק. זוהי דוגמה לתגובה שקטה שבה התרחשה שגיאה:<DeleteResult> <Error> <Code>AccessDenied</Code> <Key>private/financial_data.xlsx</Key> <Message>Access Denied. You don't have permission to delete this object.</Message> <VersionId>33333</VersionId> </Error> </DeleteResult>
-
מחיקת עד מיליארדי אובייקטים
כדי למחוק מיליוני או מיליארדי אובייקטים באמצעות משימת מחיקה אחת של אובייקט, משתמשים בפעולות אצווה באחסון. כדי ליצור משימה, מציינים את האובייקטים למחיקה באמצעות רשימת אובייקטים בקובץ מניפסט או באמצעות קידומות של אובייקטים. אחרי שמציינים את רשימת האובייקטים, יוצרים משימה של פעולת אצווה כדי למחוק את האובייקטים.
מחיקה אוטומטית של אובייקטים באמצעות כללים של מחזור החיים של אובייקטים
אם אתם רוצים שאובייקטים יימחקו באופן אוטומטי כשהם עומדים בקריטריונים שאתם מציינים, כמו גיל או סוג אחסון, אתם יכולים להשתמש בניהול מחזור חיים של אובייקטים. לדוגמה, אפשר להגדיר כלל מחזור חיים למחיקת יומנים בני יותר מ-30 יום.
שליחת בקשות למחיקת אובייקטים באצווה באמצעות API בפורמט JSON
כדי לצמצם את מספר חיבורי ה-HTTP שנדרשים כשמוחקים הרבה אובייקטים באמצעות API בפורמט JSON, משתמשים בבקשות בכמות גדולה ב-API בפורמט JSON. כדי לצמצם את התקורה של הרשת, אפשר לקבץ עד 100 קריאות ל-API בבקשת HTTP אחת.
המאמרים הבאים
- אם מחקתם אובייקט בטעות, אתם יכולים לשחזר אובייקטים שנמחקו זמנית.
- אם אתם משתמשים בניהול גרסאות של אובייקטים, חשוב שתדעו שמחיקת אובייקט עשויה להפוך אותו ללא עדכני במקום למחוק אותו באופן סופי. איך מנהלים או מוחקים באופן סופי גרסאות לא עדכניות
- הגדרת ניהול מחזור חיים של אובייקטים כדי לאוטומט את המחיקה של אובייקטים בעתיד.
- מחיקת קטגוריה אם כבר אין לכם צורך בה.