יעד קריאה יציב בזמן שאתה מעלה קוד Lambda חדש.
→פרסם גרסאות ממוספרות ובלתי ניתנות לשינוי; חשוף alias שמצביע על גרסה. הקוראים מפעילים את ARN ה-alias.
למה: גרסאות הן תמונות מצב קפואות של קוד + תצורה; aliases מספקים הפניה עקיפה כך שהקוראים לעולם אינם מפעילים את `$LATEST` ישירות.
מקור↗
השקה הדרגתית של גרסת Lambda חדשה עם ביטול אוטומטי במקרה של שגיאות.
→Alias עם ניתוב גרסאות משוקלל (לדוגמה, 90/10). CodeDeploy `LambdaCanary10Percent5Minutes` או `LambdaLinear*` מעביר תעבורה ומנטר התראות CloudWatch.
למה: העברת תעבורה מובנית + ביטול מונחה התראות מבטלים את הצורך בלוגיקת Canary מקודדת ידנית.
מקור↗
הזרקת תצורה (כתובת URL של DB, דגלי תכונות) ללא פריסות מחדש.
→משתני סביבה של Lambda. מוצפנים במנוחה באמצעות KMS; ניתן להפנות ל-CMK מותאם אישית להצפנה נוספת במעבר בעת השליפה.
מקור↗
שיתוף NumPy / pandas / סביבת ריצה משותפת בין הרבה פונקציות Lambda.
→ארוז כשכבת Lambda (Lambda Layer); עד 5 שכבות לפונקציה, סה"כ 250 MB לא מכווץ. ARN מגוון לכל שכבה.
מקור↗
Lambda סינכרוני רגיש לזמן השהיה — אסורות התחלות קרות.
→Provisioned Concurrency ב-alias. מאתחל מראש N סביבות הרצה; תשלום לפי GB-שנייה.
למה: מבטל התחלה קרה בעלות צפויה. הגדר קנה מידה אוטומטי (application auto-scaling) ב-alias כדי להתגמש עם העומס.
מקור↗
Lambda ב-Java או Python עם קוד אתחול כבד; דרושה התחלה קרה מהירה ללא תשלום עבור Provisioned Concurrency.
→אפשר SnapStart בגרסה שפורסמה. AWS מצלם את סביבת הריצה המאותחלת ומחדש ממנה.
למה: חינם עבור Java; מחויב לפי שחזור עבור Python/.NET. מקצר התחלות קרות משניות ל-<1 שניות ללא עלות סרק.
מקור↗
Lambda צריך לצרוך Kinesis stream / DynamoDB Stream / SQS queue / MSK topic.
→מיפוי מקור אירועים (מבוסס משיכה). Lambda בודק; גודל אצווה + חלון אצווה מקסימלי מכוונים תפוקה לעומת זמן השהיה. כשל → DLQ דרך יעד On-Failure.
למה: עבור מקורות משיכה, השירות אינו יכול להפעיל ישירות את Lambda; המיפוי הוא מתאם הבדיקה של Lambda.
מקור↗
ניתוב הצלחה/כישלון של Lambda אסינכרוני ללא Lambda DLQ.
→יעדי OnSuccess / OnFailure על הפונקציה. יעדים: SNS, SQS, EventBridge, Lambda אחר. כולל הקשר קריאה.
למה: יעדים לוכדים את האירוע המלא + התגובה; DLQ מדור קודם לוכד רק את ה-payload של האירוע.
מקור↗
בחר סוג API Gateway עבור API REST חדש.
→HTTP API: זול יותר, מהיר יותר, אימות JWT מובנה, פשוט יותר. REST API: תכונות מלאות (mapping templates, request validators, WAF, private endpoints, X-Ray, API caching).
למה: ברירת המחדל היא HTTP API אלא אם אתה זקוק לתכונה ייחודית ל-REST. ממשקי WebSocket API הם מוצר נפרד עבור יישומים בזמן אמת עם מצב.
מקור↗
קידום שינויים ב-API מ-dev ← test ← prod ללא פריסה מחדש של ממשקי API נפרדים.
→Stages על API יחיד. פרוס stage כדי לפרסם; משתני stage מכילים ערכים ספציפיים לסביבה כמו שמות alias של Lambda.
מקור↗
Lambda ב-backend מצפה לצורה שונה מזו שהלקוח שולח.
→Request/response mapping template (REST API בלבד). VTL עם `$input`, `$context`, `$util` לטרנספורמציה של JSON.
למה: Mapping templates פועלים ב-API Gateway – ללא קפיצת Lambda נוספת, ללא זמן השהיה או עלות נוספים.
מקור↗
אמת token מותאם אישית (לא Cognito, לא IAM) לפני ניתוב הבקשה.
→Lambda authorizer. סוג TOKEN קורא כותרת; סוג REQUEST קורא את הקשר הבקשה המלא. מחזיר מדיניות IAM + principalId. נשמר במטמון לכל זהות למשך TTL.
מקור↗
אמת JWT של Cognito User Pool בכל בקשה.
→Cognito User Pool authorizer (REST) או JWT authorizer (HTTP). API Gateway מאמת את ה-token; אין צורך ב-Lambda.
למה: אימות מקומי זול ומהיר יותר מאשר Lambda authorizer למקרה ה-JWT הנפוץ.
מקור↗
בקרת מצערת / מכסה עבור צרכן API שותף.
→Usage Plan + API Key. התוכנית מקשרת מפתחות ל-stage עם הגבלת קצב (בקשות/שנייה) + burst + מכסה (בקשות/יום או חודש).
מקור↗
הפחתת עומס ה-backend עבור בקשות GET חוזרות ונשנות.
→מטמון ברמת ה-stage (REST API). TTL ניתן להגדרה; מפתח המטמון נגזר ממתודה + נתיב + פרמטרי שאילתה/כותרת נבחרים.
מקור↗
עדכן פריט רק אם מתקיים תנאי מוקדם (לדוגמה, status == "PENDING").
→PutItem/UpdateItem עם `ConditionExpression`. כשל מעלה `ConditionalCheckFailedException`.
למה: בדיקה בצד השרת מונעת מצבי מירוץ של read-modify-write ללא צורך בנעילה.
מקור↗
הכל או כלום על פני מספר פריטי DynamoDB.
→`TransactWriteItems` / `TransactGetItems`. עד 100 פריטים / 4 MB; עלות כפולה של WCU/RCU לעומת כתיבות/קריאות רגילות.
מקור↗
הגדלת מונה ללא read-modify-write.
→UpdateExpression `ADD count :inc`. השרת מיישם את הדלתא באופן אטומי.
מקור↗
זקוק לתבנית גישה נוספת מעבר למפתח הראשי.
→GSI: מפתח מחיצה ומיון חלופי, עקביות בסופו של דבר, קיבולת נפרדת, ניתן להוספה בכל עת. LSI: אותו מפתח מחיצה, מפתח מיון חלופי, אופציה לעקביות חזקה, חייב להיווצר ביצירת הטבלה.
מקור↗
אינדקס רק פריטים שיש להם תכונה מסוימת (לדוגמה, רק הזמנות ACTIVE).
→אינדקס דליל: השמט את התכונה מפריטים שברצונך להחריג. פריטים ללא התכונה המאונדקסת לא מופיעים ב-GSI/LSI.
מקור↗
קריאה/כתיבה המונית של פריטים רבים.
→`BatchGetItem` (עד 100 פריטים / 16 MB) ו-`BatchWriteItem` (עד 25 פריטים / 16 MB). לא אטומי; כשלים חלקיים מוחזרים ב-`UnprocessedItems`.
מקור↗
מניעת עדכונים אבודים מכתיבים מקבילים.
→תכונת גרסה + `ConditionExpression: version = :v`. כתיבות שנכשלו מנוסות מחדש על ידי קריאה חוזרת.
מקור↗
הפעל פעולות בהמשך הזרם על כל שינוי ב-DynamoDB.
→DynamoDB Streams + מיפוי מקור אירועים של Lambda. תצוגת זרם: NEW_IMAGE / OLD_IMAGE / NEW_AND_OLD_IMAGES / KEYS_ONLY.
מקור↗
דפדפן מעלה/מוריד ישירות ל-S3 ללא שהשרת שלך מתווך בייטים.
→SDK `getSignedUrl` עבור GET או PUT. תוקף עד 7 ימים כאשר נחתם על ידי משתמש IAM (sigv4); קצר יותר עבור סשנים הנגזרים מתפקיד.
למה: מוריד רוחב פס מה-backend שלך; ה-URL הוא יכולת זמנית המוגבלת לאובייקט אחד + מתודה.
מקור↗
העלאת קובץ גדול (≫100 MB) באופן אמין מה-SDK.
→`CreateMultipartUpload` → `UploadPart` מקביל → `CompleteMultipartUpload`. מנהל העברות ברמה גבוהה של ה-SDK מטפל בגודל החלקים באופן אוטומטי.
למה: נדרש >5 GB; מומלץ ≥100 MB. חלקים שנכשלו מועלים מחדש באופן עצמאי. הגדר lifecycle להפסיק העלאות מרובות חלקים לא שלמות כדי לשחרר שטח אחסון.
מקור↗
הפעל קוד כאשר אובייקט נוצר/נמחק ב-S3.
→התראות אירועים של S3 → Lambda / SNS / SQS / EventBridge. סינון לפי prefix ו-suffix.
מקור↗
אפליקציית דפדפן מאחזרת מ-S3 על פני מקורות (`fetch('https://bucket.s3...')`); CORS preflight נכשל.
→הגדר כללי CORS לדלי: מקורות מותרים, מתודות (GET/PUT), כותרות, וכותרות חשופות.
מקור↗
סנן שורות מאובייקט CSV/JSON/Parquet בגודל 50 GB מבלי להוריד אותו.
→S3 Select עם SQL. מחזיר שורות תואמות בלבד; תשלום עבור סריקה + בייטים מוחזרים.
מקור↗
כניסה של משתמש מלקוח מובייל/ווב ציבורי ללא שליחת הסיסמה.
→Cognito User Pool עם זרימת `USER_SRP_AUTH`. הלקוח מחשב הוכחת SRP; ה-backend לעולם אינו רואה את הסיסמה. מחזיר ID + access + refresh tokens.
מקור↗
משתמש מאוחד (Google/Apple/Cognito UP) זקוק לפרטי כניסה זמניים של AWS כדי לקרוא לממשקי AWS API ישירות מאפליקציה ניידת.
→Cognito Identity Pool. מחליף token של ספק זהויות ← תפקיד IAM ← פרטי כניסה זמניים של AWS דרך STS.
למה: User Pools מאמתים משתמשים; Identity Pools מאשרים להם גישה למשאבי AWS.
מקור↗
בחר סוג זרימת עבודה של Step Functions.
→Standard: ארוך טווח (≤שנה), בדיוק פעם אחת, $0.025/1k מעברים, היסטוריה מלאה. Express: ≤5 דקות, לפחות פעם אחת או לכל היותר פעם אחת, מחויב לפי בקשה + משך זמן; עבור ETL/streaming בנפח גבוה.
מקור↗
שלב זרימת עבודה נכשל; רוצה ניסיון חוזר עם backoff וניתוב למצב התאוששות.
→מערך `Retry` (לכל מצב, עם `BackoffRate` + `MaxAttempts`) ו-`Catch` לניתוב כשל סופי. התאמה לפי `ErrorEquals` (לדוגמה, `States.TaskFailed`, שמות שגיאות מותאמים אישית).
מקור↗
החל את אותה זרימת עבודה על כל פריט במערך, עם הגבלת מקביליות.
→מצב Map עם `ItemsPath` ו-`MaxConcurrency`. Distributed Map מטפל ביותר מ-10k פריטים עם קלט מגובה S3.
מקור↗
הפעל Lambda לפי לוח זמנים של cron או התאמה לאירועים נכנסים.
→כלל EventBridge. לוח זמנים: `rate(...)` או `cron(...)`. תבנית: מסנן אירועי JSON; התאמה למקור, סוג פרט, שדות פרט.
מקור↗
נתב אירועים מ-SQS / Kinesis / DynamoDB Streams / MSK ליעד עם סינון + טרנספורמציה אופציונליים.
→EventBridge Pipes. מקור ← מסנן ← העשרה (Lambda/Step Functions) ← יעד. אין צורך ב-Lambda למקרים הפשוטים.
מקור↗
עיבוד הודעות בסדר קפדני לכל לקוח, עם ביטול כפילויות.
→תור SQS FIFO. `MessageGroupId` מחלק את הסדר (מקביליות לכל קבוצה); `MessageDeduplicationId` (או ביטול כפילויות מבוסס תוכן) משמיט כפילויות תוך 5 דקות.
מקור↗
צרכן מושך הודעה אך קורס לפני מחיקתה.
→ההודעה מוסתרת למשך VisibilityTimeout שניות, ואז מופיעה שוב למסירה חוזרת. כוונן לזמן העיבוד הארוך ביותר הצפוי + חיץ.
למה: קצר מדי ← עיבוד כפול. ארוך מדי ← התאוששות איטית בקריסה. ChangeMessageVisibility מאריך את הזמן בטיפול אם נדרש.
מקור↗
אירוע אחד חייב להגיע למספר צרכנים (Lambdas / SQS queues / HTTP endpoints).
→נושא SNS עם מספר מנויים. מדיניות סינון מנויים מנתבת רק הודעות תואמות לכל מנוי.
מקור↗
כוונן את קיבולת Kinesis Data Streams עבור תפוקת כתיבה.
→כל shard = 1 MB/s או 1000 רשומות/s פנימה, 2 MB/s החוצה. הוסף shards (פיצול) או השתמש במצב On-Demand עבור קנה מידה אוטומטי.
מקור↗