נושא ייבוא של Amazon Managed Streaming for Apache Kafka (Amazon MSK) מאפשר לכם להטמיע נתונים מ-Amazon MSK כמקור חיצוני ב-Pub/Sub באופן רציף. לאחר מכן תוכלו להזרים את הנתונים לכל אחד מהיעדים ש-Pub/Sub תומך בהם.
במאמר הזה מוסבר איך ליצור ולנהל נושאים לייבוא של Amazon MSK. כדי ליצור נושא רגיל, ראו יצירת נושא רגיל.
מידע נוסף על ייבוא נושאים זמין במאמר מידע על ייבוא נושאים.
לפני שמתחילים
מגדירים את התפקידים וההרשאות שנדרשים לניהול נושאי ייבוא של Amazon MSK, כולל:
מגדירים איחוד של Workload Identity כדי ש-Google Cloud יוכל לגשת לשירות הסטרימינג החיצוני.
תפקידים והרשאות נדרשים
כדי לקבל את ההרשאות שנדרשות ליצירה ולניהול של נושאי ייבוא של Amazon MSK, צריך לבקש מהאדמין להקצות לכם ב-IAM את התפקיד עריכה ב-Pub/Sub (roles/pubsub.editor) בנושא או בפרויקט.
כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
זהו תפקיד שמוגדר מראש וכולל את ההרשאות שנדרשות ליצירה ולניהול של נושאי ייבוא של Amazon MSK. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
כדי ליצור ולנהל נושאי ייבוא של Amazon MSK, צריך את ההרשאות הבאות:
- יצירת נושא ייבוא: pubsub.topics.create
- מחיקת נושא ייבוא: pubsub.topics.delete
- קבלת נושא ייבוא: pubsub.topics.get
- רשימה של נושא ייבוא: pubsub.topics.list
- פרסום בנושא ייבוא: pubsub.topics.publish ו-pubsub.serviceAgent
- עדכון נושא לייבוא: pubsub.topics.update
- קבלת מדיניות IAM לנושא ייבוא: pubsub.topics.getIamPolicy
-
מגדירים את מדיניות ה-IAM לנושא ייבוא:
pubsub.topics.setIamPolicy
יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
אפשר להגדיר בקרת גישה ברמת הפרויקט וברמת המשאב הבודד.
הגדרת זהות מאוחדת לגישה ל-Amazon MSK
איחוד שירותי אימות הזהות של עומסי עבודה מאפשר Google Cloud לשירותים לגשת לעומסי עבודה שפועלים מחוץ ל- Google Cloud. בזכות איחוד שירותי אימות הזהות, לא צריך לשמור או להעביר פרטי כניסה ל- Google Cloud כדי לגשת למשאבים בעננים אחרים. במקום זאת, אפשר להשתמש בזהויות של עומסי העבודה עצמם כדי לבצע אימות ב- Google Cloud ולגשת למשאבים.
יצירת חשבון שירות ב Google Cloud
השלב הזה הוא אופציונלי. אם כבר יש לכם חשבון שירות, אתם יכולים להשתמש בו במקום ליצור חשבון שירות חדש. אם אתם משתמשים בחשבון שירות קיים, עוברים אל תיעוד המזהה הייחודי של חשבון השירות כדי להמשיך לשלב הבא.
בנושאי ייבוא של Amazon MSK, Pub/Sub משתמש בחשבון השירות כזהות כדי לגשת למשאבים מ-AWS.
מידע נוסף על יצירת חשבון שירות, כולל דרישות מוקדמות, תפקידים והרשאות נדרשים והנחיות למתן שמות, זמין במאמר יצירת חשבונות שירות. אחרי שיוצרים חשבון שירות, יכול להיות שיהיה צריך להמתין 60 שניות לפחות לפני שאפשר להשתמש בו. הסיבה לכך היא מודל העקביות ההדרגתי: יכול להיות שייקח זמן עד שחשבון השירות החדש יופיע.
תיעוד המזהה הייחודי של חשבון השירות
כדי להגדיר תפקיד במסוף AWS, צריך מזהה ייחודי של חשבון שירות.
נכנסים לדף הפרטים חשבון שירות במסוף Google Cloud .
לוחצים על חשבון השירות שיצרתם או על החשבון שאתם מתכננים להשתמש בו.
בדף פרטי חשבון השירות, רושמים את המזהה הייחודי.
תצטרכו את המזהה כחלק מתהליך העבודה להגדרת תפקיד במסוף AWS.
הוספת התפקיד 'יצירת אסימונים בחשבון שירות' לחשבון השירות של Pub/Sub
התפקיד 'יצירת אסימונים בחשבון שירות' (roles/iam.serviceAccountTokenCreator) מאפשר לחשבונות משתמשים ליצור פרטי כניסה לטווח קצר לחשבון שירות. האסימונים או פרטי הכניסה האלה משמשים להתחזות לחשבון השירות.
מידע נוסף על התחזות לחשבון שירות זמין במאמר התחזות לחשבון שירות.
אפשר גם להוסיף את התפקיד 'פרסום הודעות ב-Pub/Sub' (roles/pubsub.publisher) במהלך התהליך הזה. מידע נוסף על התפקיד ועל הסיבה להוספתו זמין במאמר הוספת התפקיד 'פרסום הודעות ב-Pub/Sub' לחשבון השירות של Pub/Sub.
נכנסים לדף IAM במסוף Google Cloud .
מסמנים את התיבה Include Google-provided role grants.
מחפשים את חשבון השירות בפורמט
service-{PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com.לוחצים על הלחצן Edit Principal (עריכת חשבון המשתמש) בחשבון השירות הזה.
אם צריך, לוחצים על הוספת תפקיד נוסף.
מחפשים את התפקיד 'יצירת אסימונים בחשבון שירות' (
roles/iam.serviceAccountTokenCreator) ולוחצים עליו.לוחצים על Save.
יצירת מדיניות ב-AWS
אתם צריכים מדיניות ב-AWS שתאפשר ל-Pub/Sub לבצע אימות ב-AWS כדי ש-Pub/Sub יוכל להטמיע נתונים מ-Amazon MSK.
- שיטות נוספות ומידע על יצירת מדיניות ב-AWS זמינים במאמר יצירת מדיניות IAM.
כדי ליצור מדיניות ב-AWS:
נכנסים ל-AWS Management Console ופותחים את IAM console.
בחלונית הניווט של המסוף IAM, לוחצים על Access Management > Policies.
לוחצים על יצירת מדיניות.
בקטע Click a service (בחירת שירות), לוחצים על MSK.
בקטע Action allowed (הפעולה מותרת), לוחצים על Read (קריאה) > GetBootstrapBrokers.
הפעולה הזו מעניקה הרשאה לקבל את ברוקרי האתחול ש-Pub/Sub משתמש בהם כדי להתחבר לאשכול MSK.
לוחצים על הוספת הרשאות נוספות.
בקטע Select a service (בחירת שירות), לוחצים על Apache Kafka APIs for MSK (ממשקי API של Apache Kafka ל-MSK).
בקטע פעולה מותרת, בוחרים באפשרויות הבאות:
List > DescribeTopic
הפעולה הזו מעניקה הרשאה לאפשר לנושא של Pub/Sub לקבל פרטים על נושא Kafka ב-Amazon MSK.
קריאה > ReadData
הפעולה הזו מעניקה הרשאה לקרוא נתונים מנושא Amazon MSK Kafka.
Write > Connect
הפעולה הזו מעניקה הרשאה להתחבר לאשכול Amazon MSK Kafka ולאמת אותו.
בקטע Resources, מציינים את cluster ARN (אם רוצים להגביל את המדיניות לאשכולות ספציפיים, וזה מומלץ).
לוחצים על הוספת הרשאות נוספות.
בקטע Select a service (בחירת שירות), לוחצים על STS.
בקטע Action allowed (פעולה מותרת), לוחצים על Write (כתיבה) > AssumeRoleWithWebIdentity (הנחה של תפקיד עם זהות אינטרנט).
הפעולה הזו מעניקה הרשאה לקבל קבוצה של פרטי כניסה זמניים לאבטחה עבור Pub/Sub כדי לבצע אימות ל-Amazon MSK באמצעות איחוד שירותי אימות הזהות.
לוחצים על הבא.
מזינים שם ותיאור למדיניות.
לוחצים על יצירת מדיניות.
יצירת תפקיד ב-AWS באמצעות מדיניות אמון מותאמת אישית
צריך ליצור תפקיד ב-AWS כדי ש-Pub/Sub יוכל לבצע אימות ב-AWS כדי להטמיע נתונים מ-Amazon MSK.
נכנסים ל-AWS Management Console ופותחים את IAM console.
בחלונית הניווט של המסוף, בקטע IAM, לוחצים על Roles (תפקידים).
לוחצים על יצירת תפקיד.
בקטע Select trusted entity (בחירת ישות מהימנה), לוחצים על Custom trust policy (מדיניות אמון בהתאמה אישית).
בקטע Custom trust policy, מזינים או מדביקים את הטקסט הבא:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "accounts.google.com" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "accounts.google.com:sub": "<SERVICE_ACCOUNT_UNIQUE_ID>" } } } ] }מחליפים את
<SERVICE_ACCOUNT_UNIQUE_ID>במזהה הייחודי של חשבון השירות שרשמתם בשלב רשימת המזהה הייחודי של חשבון השירות.לוחצים על הבא.
בקטע Add permissions (הוספת הרשאות), מחפשים את המדיניות המותאמת אישית שיצרתם ולוחצים עליה.
לוחצים על הבא.
מזינים שם ותיאור לתפקיד.
לוחצים על יצירת תפקיד.
הוספת התפקיד 'פרסום הודעות ב-Pub/Sub' לחשבון המשתמש ב-Pub/Sub
כדי להפעיל פרסום, צריך להקצות תפקיד של פרסום לחשבון השירות של Pub/Sub, כדי ש-Pub/Sub יוכל לפרסם בנושא הייבוא של Amazon MSK.
הוספת התפקיד של סוכן שירות Pub/Sub לחשבון השירות של Pub/Sub
כדי לאפשר ל-Pub/Sub להשתמש במכסת הפרסום של פרויקט נושא הייבוא, לסוכן השירות של Pub/Sub נדרשת ההרשאה serviceusage.services.use בפרויקט של נושא הייבוא.
כדי לתת את ההרשאה הזו, מומלץ להוסיף את תפקיד סוכן השירות של Pub/Sub לחשבון השירות של Pub/Sub.
אם לחשבון השירות של Pub/Sub אין את התפקיד של סוכן שירות Pub/Sub, אפשר להקצות אותו באופן הבא:
נכנסים לדף IAM במסוף Google Cloud .
מסמנים את התיבה Include Google-provided role grants.
מחפשים את חשבון השירות בפורמט
service-{PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com.לוחצים על הלחצן Edit principal (עריכת חשבון המשתמש) בשורה של חשבון השירות הרלוונטי.
אם צריך, לוחצים על הוספת תפקיד נוסף.
מחפשים את התפקיד של סוכן שירות Pub/Sub (
roles/pubsub.serviceAgent) ולוחצים עליו.לוחצים על Save.
הפעלת פרסום מכל הנושאים
כדאי להשתמש בשיטה הזו אם לא יצרתם נושאים לייבוא ב-Amazon MSK.
נכנסים לדף IAM במסוף Google Cloud .
מסמנים את התיבה Include Google-provided role grants.
מחפשים את חשבון השירות בפורמט
service-{PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com.לוחצים על הלחצן Edit principal (עריכת חשבון המשתמש) בשורה של חשבון השירות הרלוונטי.
אם צריך, לוחצים על הוספת תפקיד נוסף.
מחפשים את התפקיד 'פרסום הודעות ב-Pub/Sub' (
roles/pubsub.publisher) ולוחצים עליו.לוחצים על Save.
הפעלת פרסום מנושא יחיד
משתמשים בשיטה הזו רק אם נושא הייבוא של Amazon MSK כבר קיים.
במסוף Google Cloud , מפעילים את Cloud Shell.
בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.
מריצים את הפקודה
gcloud pubsub topics add-iam-policy-binding:gcloud pubsub topics add-iam-policy-binding TOPIC_ID \ --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com" \ --role="roles/pubsub.publisher"
מחליפים את מה שכתוב בשדות הבאים:
TOPIC_ID: מזהה הנושא של נושא הייבוא של Amazon MSK.
PROJECT_NUMBER: מספר הפרויקט. במאמר זיהוי פרויקטים מוסבר איך לראות את מספר הפרויקט.
הוספת התפקיד 'משתמש בחשבון שירות' לחשבון השירות
התפקיד 'משתמש בחשבון השירות' (roles/iam.serviceAccountUser) כולל את ההרשאה iam.serviceAccounts.actAs שמאפשרת לישות מורשית לצרף חשבון שירות להגדרות הטמעת הנתונים של נושא הייבוא של Amazon MSK ולהשתמש בחשבון השירות הזה לצורך זהות מאוחדת.
נכנסים לדף IAM במסוף Google Cloud .
לוחצים על הלחצן Edit principal (עריכת חשבון המשתמש) בשורה של חשבון המשתמש שמוציא את הקריאות ליצירה או לעדכון של נושא.
אם צריך, לוחצים על הוספת תפקיד נוסף.
מחפשים את התפקיד 'משתמש בחשבון שירות' (
roles/iam.serviceAccountUser) ולוחצים עליו.לוחצים על Save.
שימוש בנושאי ייבוא של Amazon MSK
אתם יכולים ליצור נושא ייבוא חדש או לערוך נושא קיים.
לתשומת ליבכם
יצירה של הנושא והמינוי בנפרד, גם אם היא מתבצעת ברצף מהיר, עלולה לגרום לאובדן נתונים. יש חלון זמן קצר שבו הנושא קיים ללא מינוי. אם נתונים יישלחו לנושא במהלך הזמן הזה, הם יאבדו. אם יוצרים את הנושא קודם, ואז יוצרים את המינוי וממירים את הנושא לנושא ייבוא, אפשר להבטיח שלא יפספסו הודעות במהלך תהליך הייבוא.
אם אתם צריכים ליצור מחדש את נושא Kafka של נושא ייבוא קיים עם אותו שם, אתם לא יכולים פשוט למחוק את נושא Kafka וליצור אותו מחדש. הפעולה הזו עלולה לבטל את ניהול האופסט של Pub/Sub, מה שעלול להוביל לאובדן נתונים. כדי לפתור את הבעיה, מבצעים את השלבים הבאים:
- מוחקים את נושא הייבוא ב-Pub/Sub.
- מוחקים את נושא Kafka.
- יוצרים את הנושא ב-Kafka.
- יוצרים את נושא הייבוא ב-Pub/Sub.
הנתונים מנושא של Amazon MSK Kafka תמיד נקראים מההיסט הכי מוקדם.
יצירת נושאי ייבוא של Amazon MSK
מידע נוסף על מאפיינים שמשויכים לנושא
ודאו שהשלמתם את הפעולות הבאות:
כדי ליצור נושא לייבוא ב-Amazon MSK, פועלים לפי השלבים הבאים:
המסוף
נכנסים לדף Topics במסוף Google Cloud .
לוחצים על יצירת נושא.
בשדה Topic ID (מזהה הנושא), מזינים מזהה לנושא הייבוא של Amazon MSK. מידע נוסף על מתן שמות לנושאים זמין בהנחיות למתן שמות.
בוחרים באפשרות הוספת מינוי ברירת מחדל.
בוחרים באפשרות הפעלת ההטמעה.
בקטע 'מקור ההטמעה', בוחרים באפשרות Amazon MSK.
מזינים את הפרטים הבאים:
- Cluster ARN: ה-ARN של Amazon MSK שאתם מבצעים ממנו העברה ל-Pub/Sub. הפורמט של ARN הוא:
arn:aws:kafka:${Region}:${Account}:cluster/${ClusterName}/${ClusterId}. - Topic: השם של נושא Amazon MSK Kafka שמתבצעת ממנו העברה ל-Pub/Sub.
- AWS Role ARN: ה-ARN של התפקיד ב-AWS. הפורמט של ה-ARN של התפקיד הוא
arn:aws:iam::${Account}:role/${RoleName}. - חשבון שירות: חשבון השירות שיצרתם בשלב יצירת חשבון שירות ב- Google Cloud.
- Cluster ARN: ה-ARN של Amazon MSK שאתם מבצעים ממנו העברה ל-Pub/Sub. הפורמט של ARN הוא:
לוחצים על יצירת נושא.
gcloud
-
במסוף Google Cloud , מפעילים את Cloud Shell.
בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.
מריצים את הפקודה
gcloud pubsub topics create:gcloud pubsub topics create TOPIC_ID \ --aws-msk-ingestion-cluster-arn MSK_CLUSTER_ARN \ --aws-msk-ingestion-topic MSK_TOPIC \ --aws-msk-ingestion-aws-role-arn MSK_ROLE_ARN \ --aws-msk-ingestion-service-account PUBSUB_SERVICE_ACCOUNTמחליפים את מה שכתוב בשדות הבאים:
-
TOPIC_ID: השם או המזהה של נושא Pub/Sub. -
MSK_CLUSTER_ARN: ה-ARN של אשכול Amazon MSK שמתבצעת ממנו העברה ל-Pub/Sub. הפורמט של ARN הוא:arn:aws:kafka:${Region}:${Account}:cluster/${ClusterName}/${ClusterId}. -
MSK_TOPIC: השם של נושא Amazon MSK Kafka שמתבצעת ממנו העברה אל Pub/Sub. -
MSK_ROLE_ARN: ה-ARN של תפקיד AWS. הפורמט של ה-ARN של התפקיד הוא:arn:aws:iam::${Account}:role/${RoleName}. -
PUBSUB_SERVICE_ACCOUNT: חשבון השירות שיצרתם בשלב יצירת חשבון שירות ב-Google Cloud.
-
C++
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של C++ במאמר תחילת העבודה: שימוש בספריות לקוח. מידע נוסף זמין במאמרי העזרה של Pub/Sub C++ API.
המשך
בדוגמה הבאה נעשה שימוש בגרסה הראשית של ספריית הלקוח Go Pub/Sub (v2). אם אתם עדיין משתמשים בספרייה v1, כדאי לעיין במדריך להעברת נתונים ל-v2. כדי לראות רשימה של דוגמאות קוד מגרסה 1, אפשר לעיין ב דוגמאות הקוד שהוצאו משימוש.
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Go במאמר מדריך למתחילים: שימוש בספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Pub/Sub Go API.
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Java במאמר תחילת העבודה המהירה: שימוש בספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Pub/Sub Java API.
Node.js
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Node.js במאמר תחילת העבודה: שימוש בספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Pub/Sub Node.js API.
Node.ts
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Node.js במאמר תחילת העבודה: שימוש בספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Pub/Sub Node.js API.
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Python במאמר מדריך למתחילים: שימוש בספריות לקוח. מידע נוסף מופיע במאמרי העזרה של ה-API בשפת Python של Pub/Sub.
מידע נוסף על שמות משאבים של Amazon (ARN) זמין במאמרים שמות משאבים של Amazon (ARN) ומזהים ב-IAM.
נתקלתם בבעיות? היעזרו בקטע פתרון בעיות שקשורות לייבוא נושאים מ-Amazon MSK.
עריכה של נושאים שמיובאים מ-Amazon MSK
כדי לערוך את הגדרות מקור הנתונים של נושא ייבוא ב-Amazon MSK, פועלים לפי השלבים הבאים:
המסוף
נכנסים לדף Topics במסוף Google Cloud .
לוחצים על נושא הייבוא של Amazon MSK.
בדף הפרטים של הנושא, לוחצים על עריכה.
מעדכנים את השדות שרוצים לשנות.
לוחצים על עדכון.
gcloud
-
במסוף Google Cloud , מפעילים את Cloud Shell.
בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.
מריצים את הפקודה
gcloud pubsub topics updateעם כל הדגלים שמוזכרים בדוגמה הבאה:gcloud pubsub topics update TOPIC_ID \ --aws-msk-ingestion-cluster-arn MSK_CLUSTER_ARN \ --aws-msk-ingestion-topic MSK_TOPIC \ --aws-msk-ingestion-aws-role-arn MSK_ROLE_ARN \ --aws-msk-ingestion-service-account PUBSUB_SERVICE_ACCOUNT
מחליפים את מה שכתוב בשדות הבאים:
- TOPIC_ID: השם או המזהה של נושא ה-Pub/Sub.
- MSK_CLUSTER_ARN: ה-ARN של אשכול Amazon MSK שמתבצעת ממנו העברה ל-Pub/Sub. הפורמט של ARN הוא:
arn:aws:kafka:${Region}:${Account}:cluster/${ClusterName}/${ClusterId}. - MSK_TOPIC: השם של נושא Amazon MSK Kafka שמתבצעת ממנו העברה ל-Pub/Sub.
- MSK_ROLE_ARN: ה-ARN של תפקיד AWS. הפורמט של ה-ARN של התפקיד הוא:
arn:aws:iam::${Account}:role/${RoleName}. - PUBSUB_SERVICE_ACCOUNT: חשבון השירות שיצרתם בקטע יצירת חשבון שירות ב Google Cloud.
מכסות ומגבלות
התפוקה של בעל התוכן הדיגיטלי בנושאים של ייבוא מוגבלת על ידי מכסת הפרסום של הנושא. מידע נוסף זמין במאמר מכסות ומגבלות ב-Pub/Sub.
המאמרים הבאים
בוחרים את סוג המינוי לנושא.
יוצרים או משנים נושא באמצעות ה-CLI של gcloud, REST APIs או ספריות לקוח.