בדף הזה מוסבר איך למחוק אובייקטים מקטגוריות ב-Cloud Storage. סקירה כללית של שיטות למחיקת אובייקטים מופיעה במאמר מידע על מחיקת אובייקטים.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות למחיקת אובייקטים, בקשו מהאדמין לתת לכם את התפקידים הבאים ב-IAM בקטגוריה שמכילה את האובייקטים שאתם רוצים למחוק:
-
מחיקת אובייקטים באמצעות Google Cloud CLI או ממשקי API בארכיטקטורת REST:
Storage Object User (
roles/storage.objectUser) -
מחיקת אובייקטים באמצעות מסוף Google Cloud :
אדמין של Storage (
roles/storage.admin) -
לחלופין, כדי למחוק אובייקטים באמצעות מסוף Google Cloud :
צפייה (
roles/viewer) ו-Storage Object User (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 באמצעות ה-CLI של Amazon S3, משתמשים בפקודה 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 היא לא אטומית. אם בקשה מסוימת נכשלת באופן חלקי, יכול להיות שחלק מהאובייקטים יימחקו אבל אחרים לא. לכן מומלץ להשתמש בתגובה המפורטת כדי לזהות את כל האובייקטים שנמחקו. אם הפעלתם את יומני הביקורת של גישה לנתונים, אתם יכולים גם לבדוק את יומני הביקורת כדי לקבל פרטים על הכישלון. - הגדרתם את התשובה ל-
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, משתמשים בבקשת Batch ב-API בפורמט JSON. כדי לצמצם את התקורה של הרשת, אפשר לקבץ עד 100 קריאות ל-API בבקשת HTTP אחת.
המאמרים הבאים
- אם מחקתם אובייקט בטעות, אתם יכולים לקרוא איך משחזרים אובייקטים שנמחקו באופן זמני.
- אם אתם משתמשים בניהול גרסאות של אובייקטים, חשוב לדעת שמחיקת אובייקט עשויה להפוך אותו ללא עדכני במקום למחוק אותו באופן סופי. איך מנהלים או מוחקים באופן סופי גרסאות לא עדכניות
- להגדיר ניהול מחזור חיים של אובייקטים כדי להפוך את המחיקות של אובייקטים בעתיד לאוטומטיות.
- אם אתם לא צריכים יותר את הקטגוריה, אתם יכולים למחוק אותה.