ניהול התראות בזמן אמת ביישומים שלך עשוי להיות אתגר עצום – לפחות בלעדי שירות הודעות המתאים.
שירות ההודעות הפשוט של אמזון (SNS) כאן כדי לספק פתרון לניהול הודעות מופעל באופן מלא עבור ניתוח וקידום גדילת שירותים קטנים, מערכות מבוזרות ויישומים בלתי-מסוכנים. SNS מאפשר לך לשלוח הודעות למספר גדול של מנויים דרך מספר פרוטוקולי העברת מידע, כגון HTTP/S, דוא"ל, SMS והתראות דחיפה לנייד. SNS מטפל בכל העבודה הכבדה של מסירת ההודעות, כולל מסירה אמינה, ניסיונות חוזרים ופונקציות חזרה, נותן לך את החופש להתמקד בבניית יכולות היישום המרכזיות שלך.
שירות SNS של AWS עוקב אחר דגם פרסם-הירשם המהווה קל להתרחבות ולהבנה. הודעה אחת שפורסמה יכולה להיות מופצת למספר נקודות סיום בו זמנית, מה שהופך את SNS לאידיאלי עבור ארכיטקטורות שמונות כלשהן.
במדריך זה, אני אסביר כיצד להגדיר ולהשתמש ב-AWS SNS כדי לשלוח התראות בכל הערוצים השונים.
מה זה AWS SNS?
שירות ההתראות הפשוט של אמזון (SNS) הינו שירות הודעות פרסם-הירשם שניהל על ידי AWS ומאפשר לך לנתח מיקרו-שירותים, מערכות מבוזרות ויישומים ללא שרת.
רשתות חברתיות עובדות על מודל פשוט של פרסום-הרשמה בו מפרסמים שולחים הודעות לנושאים, ומנויים מקבלים את ההודעות האלה. חשבו על נושא ב-SNS כעל ערוץ תקשורת – אתם מפרסמים הודעות לערוץ זה, וכל מי שנרשם מקבל הודעה באופן מיידי. יופיו של המערכת הזו הוא שמפרסמים לא צריכים לדעת מי מקבל את ההודעות שלהם, ומנויים לא צריכים לדעת מי שולח אותן.
אתם יכולים לשאול איך זה שונה משירותי ההודעות האחרים של AWS כמו שירות התור הפשוט (SQS). פשוט ניתן לומר ש-SQS משתמש במודל מבוסס תורים שמיועד בעיקר לעיבוד משימות באופן אסינכרוני, בעוד ש-SNS מתמקדת בשידור הודעות למקבלים מרובים בו זמנית. זה עושה את SNS מושלמת לתרחישים שבהם נדרש להודיע למערכות רבות על אירוע שקרה כרגע. ניתן ללמוד עוד על ההבדלים בפוסט בבלוג SQS vs SNS.
שירות ההודעות בזמן אמת תומך במספר פרוטוקולים למשלוח, מה שמעניק לך גמישות בדרך שבה המנויים שלך מקבלים התראות.
תכונות מרכזיות של SNS של AWS
SNS מגיע עם מאפיינים שמפוארים המהווים את השירות היחידי להתראות שתצטרך. אני אציין כמה:
- ארכיטקטורת פאן-אאוט: SNS יכול למסור הודעות לאלפי נקודות קצה בו זמנית, מה שיידה לך לשדר עדכונים ברחבי אפליקצייתך עם קריאת API יחידה.
- פרוטוקולי תחבורה מרובים: אין לך הגבלה לדרך אחת בלבד לשליחת הודעות. SNS תומך בנקודות קצה HTTP/HTTPS, אימייל, SMS, התראות דחיפה לנייד ואפילו תורי SQS כנקודות רישום.
- סינון הודעות: לא כל מנוי זקוק לכל הודעה. עם סינון הודעות, המנויים שלך יכולים ליצור מדיניות סינון כדי לקבל רק את ההודעות שהם מתעניים בהן, וכך להפחית רעש ועומס עיבוד.
- ארכיבת הודעות: אם יש לך צורך לשמור רשומה של כל ההתראות שנשלחו, תשמח לדעת ש-SNS משתלב עם Amazon S3 לארכיבת הודעות ועם Amazon Redshift לניתוחים.
- מעקב אחר מצב משלוח: ניתן לעקוב אחר מצב המשלוח של ההודעות שלך כדי לוודא שהן מגיעות ליעדן. זה מיוחדות שימושי עבור הודעות SMS והתראות דחיפה לנייד שבהן אין משלוח מובטח.
- הצפנה: הנתונים הרגישים שלך נשמרים באופן מוגן עם תמיכת SNS בהצפנת צד שרת, שמבטיחה שההודעות שלך נשארות סודיות במהלך השידור.
אך החלק הכי טוב ב-SNS חייב להיותקינון. SNS מתאים באופן אוטומטי עם צרכי היישום שלך. לא משנה אם אתה שולח עשר או עשר מיליון הודעות ביום, השירות מתאים בהתאם בלי צורך בהתערבות ידנית.
בקרוב, אני אראה לך איך להגדיר את SNS.
התקנת AWS SNS
לפני שתוכל לשלוח את ההודעה הראשונה שלך עם SNS, עליך לעקוב אחר מספר שלבים להגדיר הכל במקומו.
שלב 1: יצירת חשבון AWS
אם אין לך כבר חשבון AWS, עליך ליצור אחד לפני שתוכל להתחיל להשתמש ב-SNS.
עבור לעמוד הבית של AWS ולחץ על לחצן "צור חשבון AWS" בפינה הימנית העליונה. תצטרך לספק כתובת דוא"ל, ליצור סיסמה ולהזין מידע חשבון בסיסי. AWS גם תבקש את פרטי כרטיס האשראי שלך – אל תדאג, SNS מציע רמת חינם נדיבה, ולא יחויבו אותך אלא אם תחרוג מהגבולות האלו.
כאשר החשבון שלך מוכן, אתה מוכן להמשיך הלאה. מרשה בחום ליצור משתמש IAM מוקדש במקום להשתמש בחשבון השורש שלך. זה מחוץ לטווח המאמר של היום, אך הפנה לה הוראות הרשמיות להנחיות מפורטות.
שלב 2: הגדרת SNS בממשק ניהול ה- AWS
עכשיו שיש לך חשבון AWS, זה הזמן לגשת לשירות SNS.
התחבר ללוח הבקרה של AWS עם האישורים שלך ומצא את SNS. ניתן לעשות זאת בשלושה דרכים:
- הקלד "SNS" בתיבת החיפוש בחלק העליון של לוח הבקרה
- לחץ על "שירותים" בתחתית סרגל הניווט ומצא את SNS תחת הקטגוריה "אינטגרציה של אפליקציות"
- עבור ישירות ללוח הבקרה של SNS
ללא קשר לדרך, זהו המסך שצריך להופיע:
תמונה 1 – עמוד שירות AWS SNS
כאשר אתה נמצא בלוח המחוונים של SNS, תראה תפריט בצד שמאל עם אפשרויות כמו "נושאים," "מינויים," ו-"נייד". הלוח נותן לך סקירה על המשאבים שלך ב-SNS ועל הפעילות האחרונה.
זה יהיה ריק מאוד עבור חשבון חדש — זה צפוי. עכשיו, בוא ניצור את הנושא הראשון שלנו ב-SNS.
שלב 3: יצירת נושא ב-SNS
נושא ב-SNS בגדר הוא ערוץ תקשורת שלפיו מפרסמים שולחים הודעות ומנויים קשובים.
חשוב לחשוב על זה כמו תחנת רדיו – התחנה משדרת על תדר ספציפי (הנושא), וכל מי שמכוון לאותו תדר מקבל את השידור. במונחי SNS, היישום שלך מפרסם הודעות לנושא, וכל נקודות הקצה שמנויות על הנושא הזה מקבלות את ההודעות האלה.
כך ניתן ליצור את נושא ה-SNS הראשון שלך:
- על המסך שנראה לך ב-תמונה 1, הזן שם נושא.
- לחץ על כפתור "השלב הבא".
- בחר "רגיל" כסוג (נושאי FIFO יש להם מקרים שימוש שונים שנכסה בהם מאוחר יותר).
- (אופציונלי) הזן שם תצוגה. זה יכלל בהודעות שנשלחות למנויים ב-SMS או באימייל.
- השאר את כל ההגדרות האחרות כפי שהן בברירת מחדל כעת.
- לחץ על "צור נושא".
אם אתה מעדיף תמונות מעל טקסט, זה כיצד המסך שלך צריך להיראות:
תמונה 2 – יצירת נושא SNS
כשתהיה מרוצה מהערכים, גלול למטה עד שתראה את כפתור "צור נושא":
תמונה 3 – יצירת נושא SNS (2)
וזהו! נושא ה-SNS שלך מוכן לשימוש. תראה פרטים כמו ARN של הנושא (Amazon Resource Name), שמזהה אותו באופן ייחודי:
תמונה 4 – פרטי נושא שנוצר
הנושא החדש שלך מוכן לרישומים, אך עדיין אין בו שום מנויים, שפעמים שתפרסם הודעות לא תיגש לשום מקום. אל תדאג, תסדר את זה בקטע הבא כאשר תוסיף מנויים.
מנויים ורישומים ב-SNS
כפי שאמרתי לפני כן, נושא ה-SNS שלך דומה לתחנת רדיו. כרגע אין לו מאזינים, אך זה ישתנה כשתוסיף מנויים לקבלת הודעות שלך.
מהו מנוי ב-SNS?
מנוי הוא כל נקודת קצה שמקבלת התראות מנושא ה-SNS שלך כאשר מתפרסמת הודעה.
שקול את ההשוואה לניוזלטר. כל פעם שאתה מפרסם מהדור חדש (הודעה), הוא מועבר לכל מי שברשימת התפוצה שלך. SNS עושה את התהליך הזה אוטומטית ונמדד, והוא טופל את כל לוגיסטיקת המשלוח עבורך.
AWS תומך במגוון רחב של סוגי מנויים, שנותן לך גמישות באופן בו ההודעות שלך מעובדות. אני אפרט את הסוגים העיקריים למטה:
- כתובות דוא"ל: שלח התראות בטקסט פשוט ישירות לתיבות הדואר האלקטרוני.
- מספרי SMS: מסיר התראות בטקסט לטלפונים ניידים.
- תורי SQS: מפנים הודעות לשירותי AWS נוספים לצורך עיבוד נוסף.
- פונקציות Lambda: מפעילות ביצוע קוד ללא שרת בתגובה להודעות.
- נקודות קצה HTTP/HTTPS: שולחות הודעות לאפליקציות אינטרנטיות או APIs.
- דחיפה ניידת:מסירת התראות ישירות לאפליקציות ניידות.
לכל סוג מנוי יש יתרונות ומקרי שימוש משלו. לדוגמה, דוא"ל ו-SMS מתאימים במיוחד לנמענים אנושיים, בעוד תורי SQS ופונקציות Lambda טובות יותר לתקשורת בין מערכות.
שלב 1: הוספת מנוי
עכשיו שהבנת מהם המנויים, בוא נוסיף אחד לנושא שלך. לצורך המדריך, אני אשתמש בדוא"ל מכיוון שזה הכי פשוט להתקנה.
הנה כיצד להוסיף מנוי דוא"ל לנושא SNS שלך:
- מדף הפרטים של הנושא שלך (המוצג ב-תמונה 4), לחץ על כפתור "צור מנוי".
- בתפריט הנפתח "פרוטוקול", בחר "אימייל".
- בשדה "נקודת קצה", הזן את כתובת האימייל שצריך לקבל את ההודעות.
- השאר את כל ההגדרות האחרות עם הערכים ברירת המחדל שלהם.
- לחץ על "צור מנוי".
המסך שלך צריך להיראות משהו כזה:
תמונה 5 – יצירת מינוי בדוא"ל
כאשר אתה לוחץ על "צור מינוי", AWS יוסיף את המינוי לנושא שלך, אך הוא יהיה במצב "ממתין לאישור":
תמונה 6 – מצב ממתין לאישור
זוהי תכונת אבטחה חשובה, מאחר ו-AWS רוצה לוודא שבעל הכתובת דוא"ל בעצם רוצה לקבל את ההודעות הללו.
שלב 2: אישור מינויים
לאחר הוספת מנוי, עליהם לאשר כי הם רוצים לקבל התראות מנושא ה-SNS שלך.
למנויים באימייל, AWS שולחת באופן אוטומטי אימייל אישור לכתובת שציינת. האימייל מכיל קישור שהנמען חייב ללחוץ עליו כדי להפעיל את המנוי. עד שזה קורה, לא יועברו הודעות שפורסמו בנושא לקצה זה.
הנה כיצד נראה אימייל אישור טיפולי:
תמונה 7 – אימייל אישור של SNS
הנמען פשוט צריך ללחוץ על הקישור "לאשר את המנוי" באימייל. הם יועברו לעמוד שמאשר שהמנוי שלהם פעיל כעת:
תמונה 8 – הודעת אישור מנוי
התהליך דומה עבור מנויים ל-SMS – AWS שולחת הודעת טקסט עם קישור לאישור שהנמען חייב לעקוב אחריו. נקודות קצה ב-HTTP/HTTPS צריכות להגיב לבקשת האישור מ-AWS, בעוד משאבים של AWS כמו פונקציות Lambda ותורי SQS יכולים להיות מוגדרים לאישור אוטומטי.
ניתן לבדוק את מעמד המנויים שלך על ידי לחיצה על חלק "מנויים" בסרגל הצד שמאלי של עט SNS. מנויים מאושרים יציגו מעמד "מאושר", בעוד שאלה המחכים לאישור יציגו "ממתינים לאישור".
תמונה 9 – מעמד המנוי
פעם שהמנוי שלך מאושר, אתה מוכן להתחיל לשלוח הודעות! כל הודעה שתפורסמת לנושא תועבר לכל המנויים המאושרים באמצעות הפרוטוקול המוגדר שלהם.
כך נראית ההתקנה של הרשמות SNS. בקטע הבא, תלמד כיצד לפרסם הודעות לנושא שלך ולבדוק שהמנויים שלך מקבלים אותן בצורה נכונה.
פרסום הודעות לנושאים של SNS
עכשיו שהגדרת את נושא ה-SNS שלך והוספת מנויים, הגיע הזמן לשלוח את ההודעה הראשונה שלך.
שלב 1: פרסום הודעה
דרך טובה להתחיל היא לפרסם הודעה דרך ממשק המשתמש של AWS.
כדי לשלוח את ההודעה הראשונה שלך, נווט לדף פרטי הנושא שלך ולחץ על כפתור "פרסם הודעה" בפינה העליונה הימנית (ראה תמונה 4). זה יפתח את טופס פרסום ההודעה שבו תוכל ליצור את ההודעה שלך. תראה שדות לנושא ולגוף ההודעה. הנושא אופציונלי אך מועיל להודעות בדוא"ל כיוון שהוא מהווה את שורת נושא הדואר האלקטרוני.
להודעת מבחן פשוטה, תוכל להזין משהו כמו זה:
תמונה 10 – תוכן ההודעה הראשונה
כאשר אתה מרוצה מההודעה שלך, גלול למטה ולחץ על כפתור "פרסם הודעה" בתחתית הטופס:
תמונה 11 – פרסום הודעה דרך הקונסול
לאחר לחיצה, SNS מפיץ את ההודעה שלך מיידית לכל המנויים המאושרים. אם הגדרת מנוי דרך דואר אלקטרוני, אתה אמור לקבל את ההודעת בדקות הבאות בתיבת הדואר שלך:
תמונה 12 – הודעה שהתקבלה בדואר אלקטרוני
פשוט, נכון? נראה כיצד להתאים אותה עוד יותר.
שלב 2: שליחת הודעות SMS והתראות באמצעות דואר אלקטרוני
SNS מאפשר לך להתאים איך ההודעות שלך נראות לסוגים שונים של מנויים.
כאשר אתה מפרסם הודעה, תגלה את האפשרות "מבנה הודעה". כברירת מחדל, הגדרה היא "מעמד זהה עבור כל פרוטוקול מסירה", שמשמעה שכל המנויים מקבלים בדיוק את אותה ההודעה. עם זאת, תוכל גם לבחור "מעמד מותאם אישית עבור כל פרוטוקול מסירה", שמאפשר לך להתאים את פורמט ההודעה עבור כל סוג מנוי.
להודעות אימייל, ישנם שני אפשרויות פורמט:
- אימייל-JSON: שולח את התוכן הגולמי בפורמט JSON לנקודת האימייל.
- אימייל: שולח אימייל מעוצב עם הכותרת ותוכן ההודעה.
תמונה 13 – התאמת משאבים
להודעות SMS, יש לזכור שיש גבול של 160 תווים. SNS תקבל הודעות ארוכות יותר, אך הן תיטופלנה כמספר הודעות. ניתן גם להגדיר את סוג ההודעה ב-SMS כ"פרסומת" או "מסחרית," שישפיע על אופטימיזצית המשלוח:
תמונה 14 – אפשרויות SMS
כעת אתה יודע כיצד לשלוח ולהתאים התראות באמצעות לוח הבקרה של AWS. בשלב הבא, תלמד כיצד לעשות זאת באמצעות CLI ו-Python.
שלב 3: שימוש ב-AWS CLI או SDK כדי לפרסם הודעות
הקונסולה נהדרת לבדיקה ידנית, אך בעולם האמיתי תרצה לפרסם הודעות באופן תכנותי.
ממשק השורת פקודה של AWS (CLI) הופך קל לשלוח הודעות SNS מהטרמינל או סקריפטים לאוטומציה.
בהנחה שיש לך את AWS CLI מותקן ומוגדר, הרץ את הפקודה הזו כדי לפרסם הודעה דרך CLI:
aws sns publish --topic-arn "sns-arn" --subject "CLI Notification" --message "Hello from the AWS CLI!"
תמונה 15 – פרסום הודעה דרך AWS CLI
ברגע, תראה הודעה דומה בתיבת הדואר הנכנס שלך:
תמונה 16 – פרסום הודעה דרך AWS CLI (2)
ליישומים מתקדמים יותר, ספריות ה-SDK של AWS מספקות גישה תכנותית ל-SNS במגוון שפות תכנות.
הנה דוגמה פשוטה לפרסום הודעה באמצעות פייתון עם ספריית boto3
:
import boto3 # אתחול לקוח ה-SNS sns_client = boto3.client("sns", region_name="eu-central-1") # ARN של הנושא (Amazon Resource Name) topic_arn = "sns-arn" # פרסום הודעה פשוטה response = sns_client.publish( TopicArn=topic_arn, Message="Hello from Python!", Subject="Python Notification" ) # בדיקה האם ההודעה נשלחה בהצלחה if "MessageId" in response: print(f"Message published successfully! Message ID: {response['MessageId']}")
תמונה 17 – פרסום הודעה דרך Python SDK
פעם נוספת, ההודעה נמסרת מיידית לתיבת הדואר שלי:
תמונה 18 – פרסום הודעות דרך Python SDK (2)
זהו כל מה שצריך לפרסום הודעות עם SNS! עכשיו יש לך מספר דרכים לשליחת התראות, מממשק הקונסולה הפשוט ועד פרסום תוכנתי עם AWS CLI או SDK.
> חדש ב- AWS Boto ב-Python? הירשם לקורס שלנו כדי להתמקצע בקצב מהיר.
בקטע הבא, נבחן תכונות מתקדמות של SNS שיקחו את ההתראות שלך לרמה הבאה.
תכונות SNS מתקדמות
עד כה, למדת את היסודות של SNS. בקטע זה, תראה כמה תכונות מתקדמות שהופכות את SNS לחזק באמת.
סינון הודעות ברשתות חברתיות
שליחת אותה התראה לכל המנויים עשויה לגרום לנקודות קצה לקבל הודעות שאינן רלוונטיות בעיניהם.
סינון הודעות פותר את בעיה זו על ידי הרשאת המנויים לסנן אילו הודעות הם מקבלים בהתבסס על מאפייני ההודעה. תארו את זה כמו הגדרת סינוני דואר אלקטרוני – אתם יוצרים כללים שמקבעים אילו הודעות עוברות. ב-SNS, הכללים הללו נקראים מדיניות סינון.
כדי להתחיל, ניתן להגדיר מדיניות סינון על המנויים שלך כך שיקבלו רק הודעות רלוונטיות:
תמונה 19 – מדיניות סינון התראות
בדוגמה זו, המנוי יקבל הודעות רק עבור הודעות שיש להן מאפיין order_value
עם ערך מספרי של 1500 ומעלה.
כעת, כדי לשלוח התראה כזו, ניתן להשתמש בקוד Python הבא:
import boto3 # אתחול הלקוח של SNS sns_client = boto3.client("sns", region_name="eu-central-1") # ARN של הנושא (Amazon Resource Name) topic_arn = "arn:aws:sns:eu-central-1:105036517833:TestTopic" response = sns_client.publish( TopicArn=topic_arn, Message="A new high-value order has been placed", Subject="New Order Notification", MessageAttributes={ "order_value": {"DataType": "Number", "StringValue": "2000"}, "region": {"DataType": "String", "StringValue": "EU"}, "category": {"DataType": "String", "StringValue": "Electronics"}, }, ) print(response)
זה מה שתראו לאחר הרצת סקריפט ה-Python:
תמונה 20 – שליחת התראה דרך Python
רק אם ערך המשתנה order_value
הוא 1500 או יותר, תקבל את ההודעה הבאה:
תמונה 21 – תוכן ההודעה
בקצרה, מדיניות סינון מאפשרת לך לשלוח התראות ממוקדות בלתי תלויות בשינויי קוד הפרסום שלך. החלטית הטובה ביותר היא שהסינון מתרחש בצד של AWS, ולא ביישום שלך, מה שמשפר את היעילות ומפחית תעבורה לא נחוצה.
תורי הודעות נקברות של SNS (DLQ)
משלוח ההודעות יכול לנכשל לפעמים גם עם המערכות המהימנות ביותר.
תור המכתבים המתים (DLQ) הוא תור מיוחד של Amazon SQS שבו SNS יכולה לשלוח הודעות שלא ניתן היה לשלוח למנוייהן. דבר זה קורה בדרך כלל כאשר מנוי לא זמין או מחזיר שגיאה. במקום לאבד את ההודעות הנכשלות אלו לתמיד, SNS מפנה אותן ל-DLQ, שבו ניתן לנתח אותן מאוחר יותר או לנסות שוב לשלוח.
ההגדרה של תור DLQ כוללת שני שלבים. ראשית, יש ליצור תור SQS שישמש כ-DLQ שלך:
תמונה 22 – יצירת תור SQS
לאחר מכן, יש להגדיר את המנוי שלך ב-SNS כך שישתמש בתור זה להודעות שאינן נשלחות:
תמונה 23 – הוספת מדיניות העזרה לתור SQS
ההגדרה הזו דורשת הרשאות נכונות, מאחר ו-SNS צריך להיות מסוגל לשלוח הודעות לתור SQS. בממשק ה- AWS, ניתן להגדיר זאת דרך תיבת סימון פשוטה, אך אם אתה משתמש ב-CloudFormation או כלי תשתית-כקוד, יהיה עליך להוסיף את ההרשאות המתאימות של IAM.
עם DLQ במקום, ניתן לעקוב אחר כשלים במשלוח ולפעול כאשר נדרש. לדוגמה, תוכל להגדיר אזהרה שמפעילה כאשר הודעות מתחילות להופיע ב-DLQ שלך, מעידה על בעיות אפשריות עם המנויים שלך, אך זה מחוץ לטווח של סעיף זה.
שימוש ב-AWS Lambda עם SNS
פונקציות Lambda פותחות עולם של אפשרויות לעיבוד הודעות של SNS.
כאשר אתה מרשם פונקציית Lambda לנושא SNS, הפונקציה מפעילה אוטומטית בכל פעם שמתפרסם הודעה. הגישה הלא-שרתית של Lambda אומרת שאין צורך לנהל תשתית לעיבוד הודעות, מכיוון שהיא מתאימה אוטומטית בהתאם לנפח ההודעות.
כדי להתחיל, עליך ליצור פונקציית Lambda תחילה:
תמונה 24 – יצירת פונקציית Lambda
לאחר מכן, יש למלא אותה בקוד דומה לזה:
def lambda_handler(event, context): # הודעות SNS מתקבלות במערך 'Records' for record in event["Records"]: # יישום של ההודעה message = record["Sns"]["Message"] subject = record["Sns"]["Subject"] timestamp = record["Sns"]["Timestamp"] # עיבוד ההודעה print(f"Received message: {message}") print(f"Subject: {subject}") print(f"Timestamp: {timestamp}") # הלוגיקה העסקית שלך כאן # לדוגמה, אחסון ההודעה במסד נתונים # או הפעלת שירות נוסף ב-AWS print("ALL DONE!") # החזרת הצלחה return {"statusCode": 200, "body": "Message processed successfully"}
תמונה 25 – קוד פונקציית Lambda
כאשר הקוד מוכן, לחץ על כפתור "הוסף טריגר" כדי לחבר את פונקציית Lambda ל-SNS:
תמונה 26 – חיבור SNS ל-Lambda
הפונקציה מחוברת כעת לתור, מה שאומר שניתן לשלוח התראת בדיקה:
תמונה 27 – התראת בדיקה
פונקציות Lambda מאפשרות לך לעקוב אחר יומני הלוג, מה שאומר שתוכל לראות אירועי פונקציה אחרונים – תוצאת שליחת התראה:
תמונה 28 – יומני הלוג של פונקציית Lambda
פונקציות Lambda יכולות לעשות אקספרסיה עם מסרים אלה – לאחסן אותם במסד נתונים, להפעיל שירותים אחרים של AWS, לשלוח דואר אלקטרוני, או אפילו לקרוא ל-APIים חיצוניים. זה מהפך את SNS ו-Lambda לשילוב חזק לבניית ארכיטקטורות מבוססות אירועים. תוכל ללמוד עוד על פונקציות Lambda במדריך התחלה עם AWS Lambda.
הבא בתור, תלמד את היסודות של ניטור ולוגינג ב-SNS.
ניטור ולוגינג של פעילות SNS
לשמור על מעקב אחר פעילות ה־SNS שלך חיוני עבור שמירה על מערכת ההתראות האמינה.
שימוש ב־Amazon CloudWatch עם SNS
Amazon CloudWatch מספק מעקב מקיף עבור כל שירותי AWS שלך, כולל SNS. כאשר אתה מגדיר CloudWatch עם SNS, אתה מרוויח ראיון למדדים תפעוליים חשובים כמו שיעורי מסירת ההודעות, כשלים ותבניות שימוש ב־API.
כדי להתחיל עם מעקב CloudWatch עבור SNS, נווט אל קונסולת CloudWatch בחשבון ה־AWS שלך. משם, תוכל לגשת למדדי SNS שמוגדרים מראש ש־AWS מאסף באופן אוטומטי עבורך.
המדדים החשובים ביותר למעקב אחריהם ב־SNS כוללים:
- מספרהודעותפורסמו: מעקב אחר מספר ההודעות שפורסמו בנושאים שלך.
- מספרהודעותשנמסרו: מציג מספר ההודעות המוצלחות שנמסרו למנויים.
- מספרהודעותשנכשלו: מדגיש ניסיונות מסירה שנכשלו, שעשויים להעיד על בעיות תצורה.
- פרסוםגודל:מדד את גודל ההודעות שפורסמו, עוזר לך להישאר בגבולות השירות.
תמונה 29 – לוח בקרת ברירת המחדל של CloudWatch עבור SNS
הגדרת התראות CloudWatch מאפשרת לך לגבות לבעיה פוטנציאלית לפני שהיא משפיעה על המשתמשים שלך. לדוגמה, תוכל לרצות ליצור התראה שתפעיל כאשר כישלונות משלוח ההודעות חורגים מסף מסוים:
- בלוח הבקרה של CloudWatch, נווט לקטע "התראות".
- לחץ על "צור את התרעה" ובחר את המדד ב-SNS שברצונך לפקוד.
- קבע את הסף שלך (לדוגמה, יותר מ-5 משלוחים נכשלים במשך 5 דקות).
- הגדר פעולות הודעה, כגון שליחת התראה לצוות התפעול.
אם אתה מעדיף תמונות מעל הוראות, התחל ביצירת התרעה עבור מדד שמעניין אותך, כגון NumberOfNotificationsFailed
. הגדר את הספקים שיפעילו את התרעה:
תמונה 30 – יצירת התרעה
וזהו – התרעה נוצרה ופעילה כעת:
תמונה 31 – יצירת אתרון (2)
האתרונים הללו עשויים להיות ההבדל בין טיפול פרואקטיבי בבעיה ולבין למידה עליה ממשתמשים לא מרוצים.
סקירת לוגים של SNS
השירות AWS CloudTrail תופס את כל הפעילות של API בחשבונך ב-AWS, כולל פעולות שנעשו בתוך שירות ה-SNS.
כל פעולה שנעשית על נושאי ה-SNS שלך – בין אם דרך הממשק, CLI או SDK – יוצרת רשומה בלוגים של CloudTrail. הלוגים הללו מספקים מידע חשוב לניתוח אבטחה, מעקב אחר שינויים במשאבים ובפעולות בהתאמה להתאמה לתקנות.
כדי לגשת ללוגים של SNS ב-CloudTrail:
- פתח את תפריט ה-CloudTrail בחשבונך ב-AWS (כנראה תצטרך ליצור מסלול חדש).
- נווט אל "היסטוריית אירועים" כדי לראות פעילות SNS אחרונה.
- סנן את האירועים על ידי בחירת "מקור האירוע" והקלדת "sns.amazonaws.com".
שוב, אם ההוראות בטקסט אינן מספיקות, נא להתייחס לתמונות למטה. התחל ביצירת מסלול חדש:
תמונה 32 – יצירת מסלול חדש
לאחר מכן, תסנן את האירועים בתחום "היסטוריית אירועים" כך שיכללו רק את אלה של SNS:
תמונה 33 – סינון לוגים
הלוגים נשמרים באופן אוטומטי בדלת S3, מה שמשמע שהתוך זה מספק אחסון קבוע ללוגים שלך ומאפשר יכולות שאילתה מתקדמות יותר.
> איך אחסון ב-AWS עובד?קראו את המדריך שלנו על S3 ו-EFS.
לסיכום, על ידי שילוב מדדי CloudWatch עם לוגי CloudTrail, אתה יכול ליצור מערכת מעקב כוללת המסייעת לוודא שתשתיות ה-SNS שלך פועלות באמינות.
Best Practices לשימוש ב-AWS SNS
עכשיו אתה מכיר את התכונות הבסיסיות והמתקדמות של AWS SNS. מה שנשאר לדון בו הם המומחיות הטובות ליצירת נושאים ושליחת הודעות.
אבטחת נושאי SNS
אבטחה צריכה להיות עליון ברשימת העדיפויות כאשר אתה מקים את התשתית שלך של SNS. בלעדי בקרות נכונות, נושאיך עשויים להיות חשים לגישה לא מורשית, שזהו סיכון אבטחה עצום.
מנהל הגישה והזהות של AWS (IAM) מספק את הכלים שאתה זקוק להם כדי לאבטח את נושאי ה SNS שלך. התחל על ידי יצירת מדיניות המתאימה את עקרון הזכויות המינימליות – תן רק את ההרשאות הספציפיות הדרושות לכל משתמש או שירות. לדוגמה, ייתכן שתרצה שישיורים מסוימים יפרסמו רק הודעות בעוד שאחרים רק יצטרפו לנושאים.
כאן דוגמת מדיניות IAM שמגבילה פרסום לנושא ספציפי:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sns:Publish", "Resource": "sns-arn" } ] }
אתה יכול גם להשתמש במדיניות נושא כדי לשלוט על אילו חשבונות של AWS יכולים להצטרף לנושאי שלך. זה חשוב במיוחד אם אתה משתף נתונים בין גבולות ארגוניים.
אל תשכח לבצע בדיקת הרשאות באופן קבוע באמצעות AWS CloudTrail ולהסיר גישה שכבר אינה נדרשת.
ניהול נפח ההודעות
נפח גבוה של הודעות עשוי לגרום לספקים להתעורר אם לא ייטוטל בטיפול בהם בצורה נכונה. זהו המקום בו שילוב של SNS עם שירותים נוספים של AWS הופך להיות חיוני.
תבנית פופולרית היא ארכיטקטורת "fanout", שבה אתה מפרסם הודעות לנושא של SNS שיש לו מספר תורי SQS מנויים עליו. כל תור יכול לזרוק למערכות עיבוד שונות בקצבן. זה מפריד בין המפרסמים שלך לצרכנים שלך, ומספק בופר במהלכי פרק תנועה.
לצרכי עיבוד בזמן אמת, שקול להרשם לפונקציות Lambda לנושאים שלך. Lambda מתאים באופן אוטומטי לנפח ההודעות שלך, מסיר את הצורך בהקצאה וניהול שרתים.
הפחתת עלויות
בעוד SNS עלול להיות כלכלי, הוצאות עשויות להתקבל מהר כאשר כמות ההודעות שלך גדלה. בחירות אסטרטגיות יכולות לסייע בשמירה על עלויותיך במקצת.
ראשית, תהיו בריים בקשר לפרוטוקולי המינוי שלכם. נקודות קצה HTTP/HTTPS הן בדרך כלל האפשרות הכלכלית ביותר. התראות באמצעות דוא"ל, אף על פי שנוחות, כדאי להשתמש בהן בזהירות מאחר והן יכולות לגרום להוצאות גבוהות יותר לכל הודעה.
סינון הודעות הוא כלי חסכוני נוסף וחזק. על ידי הטמעת מדיניות סינון על המינויים שלך, אתם מבטיחים שההודעות יועברו רק למנויים מעוניינים. למשל, אם יש לכם נושא עבור כל התראות המערכת, ייתכן ותרצו שהמהנדסים בשיבוץ יקבלו רק התראות קריטיות במהלך המשמרת שלהם, ולא כל הודעה:
# להרשם עם מדיניות סינון response = sns.subscribe( TopicArn="sns-arn", Protocol="email", Endpoint="[email protected]", Attributes={"FilterPolicy": '{"severity": ["critical"]}'}, )
לבסוף, עדכן באופן קבוע את השימוש שלך ב-SNS ב- AWS Cost Explorer וחפש הזדמנויות לאחד נושאים או להסיר מנויים שאינם בשימוש. משאבים שאינם בשימוש או כפילים לא רק מוסיפים עלויות מיותרות אלא גם מרכזים את הארכיטקטורה שלך.
על ידי עקיבה אחרי המומחיות הללו, תיצור יישום של SNS המאובטח, נמלט ויעיל מבחינת עלויות – כל מה שצריך כדי לקבל שירות הודעות אמין ללא הוצאות בלתי צפויות או דאגות בטחון.
סיכום SNS של AWS
אם אתה זקוק להתראה בזמן אמת בכל אפליקציות מבוזרות, אין צורך לחפש רחוק יותר מ- AWS SNS. זה קל לשימוש, משתלב היטב עם שירותי AWS נוספים ומתרחב ללא גבולות כדי להתאים לצרכים שלך.
הדגם של פרסום-הרשמה ב-SNS עושה את המימוש של מערכות הודעות שיכולות להגיע לערוצים מרובים בו זמנית קל ופשוט. מיצירת נושאים וניהול מנויים, דרך המימוש של תכונות מתקדמות כמו סינון הודעות ותורות של מכתבים נפטרים, עכשיו יש לך את הידע לבניית תשתית הודעות חזקה.
למדת גם על הנקודות הקריטיות של מעקב, אבטחה וניהול עלויות שמבטיחים שהמימוש שלך ב-SNS יישאר אמין ויעיל בסביבות הייצור.
כשיישרדו האפליקציות לקבל ארכיטקטורות המבוססות על אירועים, שירותים כמו SNS הופכים להיות ערכיים ביותר. בין אם אתה בונה מערכת התראות פשוטה או מיקרושירות מורכבות, התבניות במדריך זה מספקות בסיס לתקשורת אפקטיבית בין רכיבי המערכת שלך.
כדי ללמוד עוד על AWS, עקוב אחרי הקורסים האלו של DataCamp:
אפשר גם להשתמש ב-DataCamp כדי להתכונן למבחני התעודה של AWS – מבחן למקצוע Cloud Practitioner של AWS (CLF-C02).