התחלת עבודה עם AWS Lambda: מדריך שלב אחרי שלב

AWS Lambda היא שירות חישוב ללא שרתים עוצמתי שמאפשר לך להריץ קוד מבלי לנהל תשתיות, כך שתוכל להתמקד רק בכתיבת קוד מבלי לדאוג להקצאה או לתחזוקה של שרתים.

במדריך זה, נחקור את AWS Lambda, החל מהקמת הפונקציה הראשונה שלך ועד שילובה עם שירותים אחרים של AWS. בין אם אתה מעבד זרמי נתונים ובין אם אתה בונה APIs, מדריך זה יעזור לך להתחיל עם פריסות ללא שרתים באמצעות AWS Lambda.

מה זה AWS Lambda?

AWS Lambda היא פלטפורמת חישוב ללא שרתים שמסופקת על ידי Amazon Web Services (AWS) המאפשרת למפתחים להריץ קוד מבלי להקצות או לנהל שרתים.AWS Lambda מקלה על כך על ידי הקצאת משאבים בצורה דינמית כדי להריץ את הפונקציות שלך רק כאשר יש צורך, ומחייבת אותך על פי השימוש במקום על בסיס קיבולת שרת שהוקצתה מראש.

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

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

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

תכונות של AWS Lambda

  • ארכיטקטורת מבוססת אירועים: פונקציות AWS Lambda מופעלות בתגובה לאירועים כגון שינויים בנתונים, בקשות HTTP או עדכונים למשאבי AWS.
  • תמיכה בריצה מרובה: Lambda תומך בריצות שונות, כולל Python, Node.js, Java, Go, Ruby ו-.NET. מפתחים יכולים גם להביא את ריצתם האישית באמצעות ממשק ה- AWS Lambda Runtime API, מה שהופך אותו לפלטפורמה גמישה למגוון תרחישים.
  • קינון אוטומטי: AWS Lambda משתנה בקנייה לפי הביקשה של האפליקציה שלך. בין אם מעבד אירוע יחיד או מטפל באלפים בו זמנית, Lambda מתאים את משאבי החישוב באופן דינמי.
  • מחירון Pay-as-you-go: הוצאות נקבעות על ידי מספר הבקשות וזמן ביצוע הפונקציות שלך. זה מסיר את הצורך בהשקעות ראשוניות ומבטיח שתשלם רק על מה שאתה משתמש.
  • אבטחה משולבת: למבדים עם ניהול זהות וגישה ב-AWS (IAM), מבטיח בקרת גישה מדויקת ואינטרקציות מאובטחות בין הפונקציות שלך ושירותי AWS אחרים.

מקרי שימוש נפוצים של למבדה

  • עיבוד זרמי נתונים: AWS Lambda משולבת עם Amazon Kinesis כדי לעבד ולנתח נתונים בזמן אמת. לדוגמה, ניתן למוניטור התקני IoT או לעבד קבצי יומן באופן דינמי.
  • בניית APIs RESTful: פונקציות Lambda ניתן לשלב עם שער ה- API של AWS כדי ליצור APIs נפלאים עבור אפליקציות רשת וניידות. ההגדרה הזו משמשת בדרך כלל כדי לטפל באימות משתמשים, לשאילת בסיסי נתונים, או ליצירת תוכן דינמי.
  • אוטומציה של תהליכים: אוטמת תהליכים מורכבים על ידי הפעלת פונקציות Lambda בהתבסס על אירועים משירותים כמו S3, DynamoDB או CloudWatch. לדוגמה, תוכל לשנות את גודל התמונות שהועלו ל-S3 או לארכיון אוטומטי של רשומות בסיס נתונים ישן.
  • טיפול באירועים בצינורות נתונים: תוכל להשתמש ב-Lambda כדי לטפל באירועי נתונים בזמן אמת, כגון עיבוד העלאות חדשות לדלי S3, שינוי נתונים לפני האחסון, או העשרת זרמי נתונים בקריאות ל- API חיצוניות.
  • עיבוד אחורי ללא שרת: Lambda משמש בדרך כלל להקלת משימות אחוריות כגון אימות נתונים, תהליכי ETL (חילוץ, טרנספורמציה, טעינה) או שליחת הודעות באמצעות Amazon SNS או SES.

איך עובד AWS Lambda?

AWS Lambda פועל על מודל מונחה אירועים, מה שאומר שהוא מבצע קוד בתגובה לגירויים או אירועים ספציפיים. המפתח לפונקציונליות של Lambda הוא האינטגרציה שלה עם שירותי AWS אחרים ויכולת לבצע פונקציות לפי דרישה. בואו נצלול למכניקה של איך עובד AWS Lambda צעד אחר צעד:

דוגמה לתרשים ארכיטקטורה שמשתמש ב-Lambda ובשירותי AWS קיימים נוספים. מקור התמונה: AWS.

1. הפעלת פונקציות AWS Lambda

פונקציות AWS Lambda מתחילות על ידי אירועים ממגוון שירותי AWS או ממערכות חיצוניות. דוגמאות נפוצות למקורות אירועים כוללות:

  • Gateway API: כאשר משתמש שולח בקשת HTTP (לדוגמה בקשת GET או POST) לנקודת הקצה שלך ב-Gateway API, Lambda יכולה להפעיל פונקציה לטיפול בבקשה – לדוגמה, נקודת קצה RESTful API ליצירת משתמש בבסיס הנתונים.
  • אירועי S3: פונקציות Lambda יכולות להגיב לפעולות כמו העלאה, מחיקה או שינוי של אובייקט בדלת S3. לדוגמה, הן יכולות לשנות גודל של תמונות או להמיר פורמטי קבצים לאחר העלאת תמונה לדלת S3.
  • זרמי DynamoDB: כל שינויים בטבלאות DynamoDB, כגון הכנסות, עדכונים או מחיקות, עשויים להפעיל פונקציה של Lambda. לדוגמה, הפעלת צינון לנתונים כאשר שורות חדשות מתווספות לטבלת DynamoDB.
  • יישומים מותאמים אישית: ניתן לקרוא לפונקציות Lambda ישירות באמצעות SDKs, CLI, או בקשות HTTP, מאפשר לך לאינטגרציה עם מערכות חיצוניות.

2. סביבת ביצוע

כאשר אירוע מפעיל פונקציית Lambda, AWS יוצרת אוטומטית סביבה להרצת הקוד. סביבה זו כוללת:

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

3. תחרותיות והגדלה

AWS Lambda תומך בהגדלה אוטומטית על ידי הרצת מספר מופעים של הפונקציה שלך במקביל. זה מצליח להתרחב בצורה שקופה ללא צורך בהגדרה. כך פועלת התחרותיות:

  • אם הפונקציה שלך צריכה לעבד 100 אירועים במקביל, Lambda תיצור מספר סביבות ביצוע כפי שדרוש (עד למגבלת התחרותיות).

4. אינטגרציה עם שירותי AWS אחרים

AWS Lambda משתלבת בצורה עמוקה עם שירותי AWS כדי לבנות פתרונות חזקים, מקצה לקצה:

  • אינטראקציות עם מסדי נתונים: Lambda יכולה לקרוא/לכתוב נתונים ל-DynamoDB או RDS במהלך הביצוע.
  • שירותי הודעות: למדה יכולה להפעיל התראות דרך SNS או לשלוח הודעות לתור SQS לעיבוד מאוחר יותר.
  • ניטור ורישום: CloudWatch קולט את כל היומנים, המדדים ופרטי השגיאות עבור פונקציות למדה, מה שמאפשר לך לנטר ולפתור בעיות ביצועים.

עכשיו, בוא נתחיל בהגדרת פונקציית הלמדה הראשונה שלך!

הגדרת AWS Lambda

דרישות מקדימות

  • חשבון AWS: ודא שיש לך חשבון AWS פעיל. הירשם כאן.
  • הגדרת משתמש IAM: צור משתמש IAM עם הרשאות ל-AWS Lambda. עקוב אחר המדריך של IAM.

הגדרת סביבת הפיתוח

  • התקן את AWS CLI: הורד והתקן את AWS CLI. הגדר אותו באמצעות פרטי הזיהוי והגישה שלך.
  • הגדרת Python או Node.js: התקן Python או Node.js בהתאם לריצת הקוד המועדפת עליך. AWS Lambda תומך במספר ריצות שונות. נשתמש בריצת Python במדריך זה.

שלב 1: גישה לממשק המנהל של AWS Lambda

  1. התחבר לממשק הניהול של AWS.
  2. נווט לשירות Lambda.

לוח הניווט בממשק ה- AWS.

לחץ על Lambda בתפריט הניווט כדי לראות את לוח המחוונים:

לוח המחוונים של AWS Lambda בממשק ה- AWS.

שלב 2: צור פונקציה חדשה

  1. לחץ יצירת פונקציה.
  2. בחר "מחבר מאפס".
  3. ספק שם לפונקציה שלך.
  4. בחר זמן ריצה (למשל, פייתון 3.11).
  5. לחץ על הצור פונקציה כפתור.

צור פונקציית AWS Lambda חדשה.

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

שלב 3: כתוב את קוד הפונקציה שלך

IDE לדפדפן AWS Lambda לעריכת קוד פשוט.

שלב 4: בדוק את פונקציית Lambda שלך

בשלב הזה, הפונקציה פשוט מחזירה את המחרוזת “שלום מלמדה!”

אין כאן לוגיקה, אין תלותים, כלום. 

יש לנו סקריפט פייתון בשם lambda_function.py שמכיל את הפונקציה בשם lambda_handler() שמחזירה מחרוזת. 

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

בדוק את פונקציית הלמדה של AWS בדפדפן.

אתה יכול להסיר את “JSON אירוע” מכיוון שהפונקציה שלנו לא מקבלת קלט. תן שם לאירוע ולחץ על כפתור ההפעלה.

בדיקה מוצלחת של פונקציית הלמדה של AWS.

הפונקציה בוצעה בהצלחה, וההודעה הוחזרה.

יהיי! הפעלנו פונקצית לא-שרת באמצעות AWS Lambda. כרגע היא לא עושה הרבה, אך היא פועלת ופועלת. בכל פעם שהפונקציה הזו מופעלת, היא מחזירה מחרוזת פשוטה.

טריגרים של Lambda עם אירועים

כפי שצוין, ארכיטקטורת ה- AWS Lambda מאפשרת לך להפעיל פונקציות בתגובה לאירועים ספציפיים משירותי AWS שונים, ובכך היא מהווה כלי רב-תכליתי לאוטומציה של תהליכים ואינטגרציה בין מערכות.

אירועים כמו העלאת קבצים לדלת של S3, עדכונים בטבלת DynamoDB, או קריאות API דרך API Gateway יכולים להפעיל פונקציות של Lambda, המאפשרות עיבוד בזמן אמת וביצוע נפחי.

1. הגדרת טריגר ל-S3

  1. עבור לקונסולת S3.
  2. בחר דלת S3.
  3. תחת מאפיינים, הוסף התראת אירוע כדי להפעיל את פונקציית ה-Lambda שלך בעת יצירת אובייקט. צור התראת אירוע בדלת S3 של AWS.בחר בפונקציית ה-Lambda להפעלה ב-S3.

דוגמאות לשימוש:

    • שנה גודל של תמונות שהועלו ל-S3 באופן אוטומטי.
    • המרת וידאו לרזולוציות או פורמטים מרובים לשידור.
    • בדוק פורמטי קובץ, גדלים או מטא-נתונים בעת העלאה.
    • השתמש בלמידת מכונה לחילוץ טקסט ממסמכים שהועלו (לדוגמה, דרך Amazon Textract).

2. שילוב של API Gateway

  1. נווט לשירות של API Gateway.

לוח הבקרה של שירות API Gateway ב- AWS Console.

  1. צור REST API חדש.

צור REST API חדש דרך API Gateway.

  1. הגדר שיטה (לדוגמה, POST) להפעלת פונקציית Lambda שלך.

דוגמאות לשימוש:

    • בנה API ללא שרת לתגובות בזמן אמת.
    • הפעל פונקציית Lambda ליצירה ואחסון של נתוני משתמש במסד נתונים.
    • טפל בבקשות POST לעיבוד ואימות של הזמנות לקוח בזמן אמת.
    • הפעל פונקציית Lambda לשאילתא והחזרת נתונים ממסד נתונים או API.

פריסת ומעקב אחרי AWS Lambdas

פריסת פונקציות AWS Lambda היא פשוטה וניתן לבצע אותה באמצעות שיטות שונות בהתאם לצרכים שלך, כגון קונסולת ניהול AWS לפריסות ידניות או AWS CLI לפריסות אוטומטיות.

1. פריסה ידנית באמצעות קונסולת AWS

קונסולת ניהול AWS מספקת ממשק אינטרנטי אינטואיטיבי לפריסת פונקציות Lambda. שיטה זו אידיאלית עבור פרויקטים קטנים או שינויים מהירים. הנה איך לפרוס פונקציית Lambda באמצעות הקונסולה:

  1. צור או ערוך פונקציה:
    • היכנס ל- קונסולת ניהול AWS.
    • נווט ל-AWS Lambda.
    • לחץ על צור פונקציה כדי להקים פונקציה חדשה או בחר פונקציה קיימת לעדכון.
  2. העלה את הקוד שלך:
    • בחר העלה מ- ובחר קובץ .zip או תמונת מיכל.
    • אתה יכול לערוך את קוד הפונקציה שלך ישירות בעורך הקוד המובנה לפיתוח בקנה מידה קטן.
  3. הגדר את הפונקציה:
    • הגדר משתני סביבה, הקצאת זיכרון ומגבלות זמן על סמך מקרה השימוש שלך.
    • הוסף הרשאות נחוצות באמצעות תפקידי AWS IAM כדי לאפשר לפונקציה לתקשר עם שירותי AWS אחרים.
  4. פרוס את השינויים:
    • לחץ על פרוס כדי לשמור ולהפעיל את השינויים שלך.
    • השתמש בתכונת הבדיקה כדי להפעיל את הפונקציה ידנית ולאמת שהיא פועלת כצפוי.

2. פריסה אוטומטית באמצעות AWS CLI

ה-AWS CLI הוא דרך יעילה לפרוס ולעדכן פונקציות Lambda לצורך אוטומציה או עדכונים תכופים. הוא מבטיח עקביות ומפחית שגיאות ידניות, במיוחד בפרויקטים גדולים יותר או בצנרות CI/CD.

שלב 1 – הכנת חבילת הפריסה

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

zip -r my-deployment-package.zip .

שלב 2 – פרוס את הפונקציה באמצעות CLI

השתמש ב-update-function-code פקודה כדי להעלות את הקוד החדש ל-AWS Lambda:

aws lambda update-function-code \ --function-name MyFunction \ --zip-file fileb://my-deployment-package.zip

–function-name MyFunction \

–zip-file fileb://my-deployment-package.zip

aws lambda get-function --function-name MyFunction

שלב 3 – בדוק את הפריסה

לאחר הפריסה, אמת את מצב הפונקציה באמצעות:

פקודה זו משיגה את התצורה של הפונקציה ומאשרת את האיחוד.

ניטור למבנה עם CloudWatch

ניטור הוא חיוני להבטיח כי הפונקציות של Lambda רצות ביעילות, מתמודדות עם שגיאות בצורה נאותה ועומדות בציפיות ביצועים. AWS Lambda משתלבת עם Amazon CloudWatch כדי לספק יכולויות ניטור ורישום.

  1. Amazon CloudWatch אוספת אוטומטית ומציגה מדדים עיקריים עבור פונקציות ה-Lambda שלך. מדדים אלו עוזרים לך לנתח את ביצועי הפונקציה שלך ולפתור בעיות.
  2. מדדים לניטור:
  3. קריאות: מעקב אחר מספר הפעמים שבהן הפונקציה שלך נקראה. מסייע בהבנת דפוסי תנועה וטרנדים בשימוש.
  4. שגיאות: מציג את מספר השגיאות במהלך ביצוע הפונקציה. ניתן להשתמש בזה כדי לזהות שיעורי כישלון ולנפח בעיות.

משך: מודד את הזמן הדרוש לביצוע הפונקציה. חשוב לייעול ביצועים וניהול עלויות.

בחר Lambda מהרשימה של שמות המרחב.

בחר את הפונקציה שברצונך לנטר כדי לצפות במדדים מפורטים.

הנחיות טובות עבור AWS Lambda

עכשיו כשפרסת את פונקציית ה-Lambda הראשונה שלך, ידיעת הנחיות טובות עבור פרויקטים עתידיים, מורכבים יותר היא מועילה. בחלק זה, אני מספק כמה הנחיות טובות לשמור עליהם בראש.

1. אופטימיזציה של הפונקציה להתחלה קרה

  • ההתחלות הקרות כאשר פונקציית Lambda מופעלת לאחר תקופת חיבור בלתי פועלת, מה שמביא ללטנציה קלה כאשר AWS מספקת את סביבת הביצוע. בעוד ש-AWS ממזמין את נפח העבודה הזה, ישנם צעדים שניתן לנקות על מנת להפחית את זמן ההפעלה הקרה:
  • השתמש בחבילות פיתוח קטנות יותר
  • שמור על נפח החבילה שלך בקלות על ידי כלול רק בתלותים הנחוצים.

השתמש בכלים כמו שכבות AWS Lambda כדי לשתף ספריות משותפות (לדוגמא, AWS SDK) בין פונקציות ללא כלולם בחבילות אישיות.

דחוף ומיניפי את הקוד ככל האפשר, במיוחד עבור פונקציות במבנה JavaScript או Python.

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

העבר את התחלת המשאבים שדורשים משאבים רבים (כגון: חיבורי מסדי נתונים, לקוחות API או ספריות של צד שלישי) מחוץ לפונקציית המטפל. זה מבטיח שהקוד יתבצע רק פעם אחת לכל סביבה ויוחזר בשימוש חוזר בין קריאות.

נצל קונקרנציה מוקצית

לגבי פונקציות קריטיות רגישות לעיכוב, השתמש בקונקרנציה מוקצית כדי לשמור על סביבת הה execução מוכנה לשרת בקשות. למרות שזה גורם לעלויות נוספות, זה מבטיח עיכוב נמוך עבור עומסי עבודה בעלי עדיפות גבוהה.

2. שמור על פונקציות חסרות מצב

חוסר מצב הוא עיקרון בסיסי במבנה ללא שרת, שמבטיח שהיישום שלך יגדל בצורה חלקה:

הימנע מהסתמכות על נתונים בזיכרון

פונקציות Lambda הן אֶפֶּמֵרָלִי, כלומר סביבת הה ejecución שלהן היא זמנית ולא בהכרח תישמר בין קריאות. במקום להסתמך על משתנים בזיכרון, שמור מידע על מצב במערכות חיצוניות כמו DynamoDB, S3 או Redis.

הפעל idempotency

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

3. השתמש במשתני סביבה

  • משתני סביבה הם דרך מאובטחת ונוחה להגדיר את פונקציות ה-Lambda שלך:
  • אחסן מידע רגיש

אחסן מפתחות API, מחרוזות חיבור למסד נתונים וסודות אחרים כמשתני סביבה. AWS Lambda מצפין את המשתנים הללו במנוחה ומפענח אותם במהלך הביצוע.

לתוספת בטיחות, השתמש ב- AWS Secrets Manager או ב- Systems Manager Parameter Store כדי לנהל סודות באופן דינמי.

פשוט את ניהול התצורה

השתמש במשתנים סביבה כדי לנהל הגדרות כמו רמות לוג, הגדרות אזור או כתובות URL של שירותים צד ג'

מסקנה

Source:
https://www.datacamp.com/tutorial/aws-lambda