מחיקת נושא

במאמר הזה מוסבר איך למחוק נושא ממאגר סכימות. יש שתי דרכים למחוק נושא:

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

  • מחיקה סופית. הסרת הנושא והנתונים שמשויכים אליו באופן סופי.

אפשר גם למחוק גרסה ספציפית של סכימה מנושא. מידע נוסף זמין במאמר בנושא מחיקת גרסה של נושא סכימה.

תפקידים והרשאות נדרשים

כדי לקבל את ההרשאות שנדרשות למחיקת נושא, צריך לבקש מהאדמין להקצות לכם ב-IAM את התפקיד עורך של מאגר סכימות מנוהל של Kafka (roles/managedkafka.schemaRegistryEditor) בנושא. כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

זהו תפקיד שמוגדר מראש וכולל את ההרשאות שנדרשות למחיקת נושא. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:

ההרשאות הנדרשות

כדי למחוק נושא, צריך את ההרשאות הבאות:

  • נותנים את ההרשאה הבאה לנושא שרוצים למחוק: managedkafka.subjects.delete
  • אם מוחקים במסוף, צריך לתת את ההרשאה הבאה כדי לראות את הנושא: managedkafka.subjects.list

יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.

מחיקה רכה של נושא

חשוב לוודא שהתנאים הבאים מתקיימים:

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

  • מאגר הסכימות שאליו שייך הנושא או הנושא עצמו לא יכולים להיות במצב Read-only.

כדי לבצע מחיקה רכה של נושא, פועלים לפי השלבים הבאים.

המסוף

  1. נכנסים לדף Schema registries במסוף Google Cloud .

    כניסה לדף Schema registries

  2. לוחצים על שם מאגר הסכימות שמכיל את הנושא שרוצים למחוק.

  3. בקטע Subjects in this schema registry (נושאים במאגר הסכימות הזה), לוחצים על שם הנושא.

  4. בדף פרטי הנושא, לוחצים על מחיקה.

  5. בוחרים באפשרות מחיקה זמנית.

  6. בתיבת הדו-שיח מחיקת נושא סכימה, מקלידים delete בשדה.

  7. לוחצים על Delete. הפעולה הזו מוחקת את הנושא באופן זמני לפני שהיא מוחקת אותו באופן סופי.

REST

הבקשה צריכה להיות מאומתת באמצעות אסימון גישה בכותרת Authorization. כדי לקבל אסימון גישה ל-Application Default Credentials הנוכחיים: gcloud auth application-default print-access-token.

כדי לבצע מחיקה רכה של נושא באמצעות API בארכיטקטורת REST, שולחים בקשת DELETE ל-URI המתאים באמצעות ה-method‏ projects.locations.schemaRegistries.contexts.subjects.delete.

DELETE https://managedkafka.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/schemaRegistries/REGISTRY_ID/subjects/SUBJECT_ID
Authorization: Bearer $(gcloud auth application-default print-access-token)

כדי לבצע מחיקה רכה של נושא בהקשר ספציפי באמצעות API בארכיטקטורת REST, שולחים בקשת DELETE אל מזהה ה-URI המתאים באמצעות ה-method‏ projects.locations.schemaRegistries.contexts.subjects.delete.

DELETE https://managedkafka.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/schemaRegistries/REGISTRY_ID/contexts/CONTEXT_ID/subjects/SUBJECT_ID
Authorization: Bearer $(gcloud auth application-default print-access-token)

מחליפים את מה שכתוב בשדות הבאים:

  • ‫PROJECT_ID (חובה): מזהה הפרויקט ב- Google Cloud.
  • ‫LOCATION (חובה): האזור Google Cloud שבו נמצא מאגר הסכימות.
  • ‫REGISTRY_ID (חובה): המזהה של מאגר הסכימות.
  • ‫CONTEXT_ID (אופציונלי): המזהה או השם של ההקשר, אם מוחקים נושא בהקשר ספציפי.
  • ‫SUBJECT_ID (אופציונלי): המזהה או השם של הנושא שרוצים למחוק.

לדוגמה, כדי לבצע מחיקה רכה של orders-topic-value ממאגר הסכימות test_registry בפרויקט test-gcp-project ובמיקום us-central1, צריך לשלוח את הבקשה הבאה:

DELETE https://managedkafka.googleapis.com/v1/projects/test-gcp-project/locations/us-central1/schemaRegistries/test_registry/subjects/orders-topic-value
Authorization: Bearer $(gcloud auth application-default print-access-token)

אם הבקשה מצליחה, ה-API מחזיר קוד סטטוס 200 OK. גוף התגובה מכיל מערך JSON של מספרי הגרסאות של הסכימות שהיו שייכות לנושא שנמחק.

מחיקה סופית של נושא

מחיקה סופית של נושא היא פעולה שאי אפשר לבטל, והיא גם מוחקת את כל הגרסאות של הסכימה שמשויכות לנושא.

חשוב לוודא שהתנאים הבאים מתקיימים:

  • הנושא שאתם רוצים למחוק לא מוזכר בסכימות אחרות. בקשה למחיקה נכשלת אם גרסה כלשהי בנושא מפנה לסקמות אחרות.

  • מאגר הסכימות שאליו שייך הנושא או הנושא עצמו לא יכולים להיות במצב Read-only.

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

  • אף מפיק או צרכן פעיל לא יכול להסתמך על הסכימות בנושא הזה, כי מחיקה שלו עלולה לגרום לשיבושים.

המסוף

  1. נכנסים לדף Schema registries במסוף Google Cloud .

    כניסה לדף Schema registries

  2. לוחצים על שם מאגר הסכימות שמכיל את הנושא שרוצים למחוק.

  3. בקטע Subjects in this schema registry (נושאים במאגר הסכימות הזה), לוחצים על שם הנושא.

  4. בדף פרטי הנושא, לוחצים על מחיקה.

  5. בוחרים באפשרות מחיקה סופית.

  6. בתיבת הדו-שיח מחיקת נושא סכימה, מקלידים delete בשדה.

  7. לוחצים על Delete. הפעולה הזו מוחקת את הנושא באופן זמני לפני שהיא מוחקת אותו באופן סופי.

REST

כדי למחוק סופית בעלים (subject) באמצעות API בארכיטקטורת REST, צריך קודם למחוק אותו זמנית. אחרי המחיקה עם יכולת שחזור, אפשר להמשיך למחיקה הסופית.

הבקשה צריכה להיות מאומתת באמצעות אסימון גישה בכותרת Authorization. כדי לקבל אסימון גישה ל-Application Default Credentials הנוכחיים: gcloud auth application-default print-access-token.

כדי למחוק סובייקט באופן סופי באמצעות API ל-REST, שולחים בקשת DELETE ל-URI המתאים, כולל פרמטר השאילתה permanent=true, באמצעות ה-method projects.locations.schemaRegistries.subjects.delete.

DELETE https://managedkafka.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/schemaRegistries/REGISTRY_ID/subjects/SUBJECT_ID?permanent=true
Authorization: Bearer $(gcloud auth application-default print-access-token)

כדי למחוק סובייקט באופן סופי בהקשר ספציפי באמצעות API בארכיטקטורת REST, שולחים בקשת DELETE אל ה-URI המתאים, כולל פרמטרים של שאילתה permanent=true, באמצעות ה-method‏ projects.locations.schemaRegistries.contexts.subjects.delete.

DELETE https://managedkafka.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/schemaRegistries/REGISTRY_ID/contexts/CONTEXT_ID/subjects/SUBJECT_ID?permanent=true
Authorization: Bearer $(gcloud auth application-default print-access-token)

מחליפים את מה שכתוב בשדות הבאים:

  • ‫PROJECT_ID (חובה): מזהה הפרויקט ב- Google Cloud.
  • ‫LOCATION (חובה): ה Google Cloud אזור שבו נמצא מאגר הסכימות.
  • ‫REGISTRY_ID (חובה): המזהה של מאגר הסכימות.
  • ‫CONTEXT_ID (אופציונלי): המזהה של ההקשר, אם מוחקים נושא בהקשר ספציפי.
  • ‫SUBJECT_ID (אופציונלי): המזהה או השם של הנושא שרוצים למחוק.

לדוגמה, כדי למחוק סופית את הנושא orders-topic-value שנמחק זמנית ממאגר הסכימות test_registry בפרויקט test-gcp-project ובמיקום us-central1, שולחים את הבקשה הבאה:

DELETE https://managedkafka.googleapis.com/v1/projects/test-gcp-project/locations/us-central1/schemaRegistries/test_registry/subjects/orders-topic-value?permanent=true
Authorization: Bearer $(gcloud auth application-default print-access-token)

אם הבקשה מצליחה, ה-API מחזיר קוד סטטוס 200 OK. גוף התגובה מכיל מערך JSON של מספרי הגרסאות של הסכימות שהיו שייכות לנושא שנמחק.

מידע נוסף זמין במאמר projects.locations.schemaRegistries.contexts.subjects.delete.

שחזור נושא שנמחק זמנית

כדי לשחזר נושא שנמחק זמנית, מבצעים את השלבים הבאים.

המסוף

  1. נכנסים לדף Schema registries במסוף Google Cloud .

    כניסה לדף Schema registries

  2. לוחצים על השם של מאגר הסכימות שמכיל את הנושא שנמחק זמנית.

  3. כדי לנקות את המסנן מחיקה רכה: לא, לוחצים על ביטול מסנן .

  4. לוחצים על שם הנושא שרוצים לשחזר.

  5. בדף פרטי הנושא, לוחצים על יצירת גרסה לשחזור.

  6. בשדה סוג הסכימה, בוחרים באפשרות Avro או מאגר אחסון לפרוטוקולים.

  7. בשדה Schema definition (הגדרת סכימה), מזינים את הגדרת הסכימה. אסור לכלול בשמות של שדות הסכימה מידע רגיש כמו פרטים אישיים מזהים (PII) או נתוני אבטחה.

  8. אם הסכימה שלכם משתמשת במבני נתונים שמוגדרים בסכימות אחרות במאגר הסכימות או תלויה בהם, צריך לבצע את השלבים הבאים:

    1. לוחצים על הוספת הפניה לסכימה.
    2. בשדה Reference name, מזינים את שם ההפניה של הסכימה שאליה מתבצעת ההפניה.
    3. ברשימה Subject, בוחרים את הנושא שמכיל את הסכימה שאליה מתייחסים.
    4. ברשימה Version, בוחרים את מספר הגרסה של הסכימה שאליה מתייחסים.
    5. לוחצים על OK.

    חוזרים על השלבים האלה לכל סכימה שמפנים אליה.

  9. לוחצים על יצירה.

REST

כדי לשחזר נושא שנמחק זמנית, משתמשים בשיטה schemaRegistries.subjects.versions.create.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud
  • ‫LOCATION: המיקום של מאגר הסכימות
  • ‫REGISTRY_ID: המזהה של מאגר הסכימות
  • ‫SUBJECT: שם הנושא
  • ‫SCHEMA_DEFINITION: מחרוזת שמכילה את הגדרת הסכימה

ה-method של ה-HTTP וכתובת ה-URL:

POST https://managedkafka.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/schemaRegistries/REGISTRY_ID/subjects/SUBJECT/versions

תוכן בקשת JSON:

{
  "schema": "SCHEMA_DEFINITION"
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "id": SCHEMA_ID
}

המאמרים הבאים

‫Apache Kafka®‎ הוא סימן מסחרי רשום של The Apache Software Foundation או של השותפים העצמאיים שלה בארצות הברית או במדינות אחרות.