NSSL logo

תדריך למעבדת (ניסוי) מחשוב ענן של אמאזון - AWS
הכנה למפגש שני


התרגילים

תרגיל 1 :שרותי ענן AWS

למדה (Lambda)

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

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

מודל התמחור כאן הוא לפי זמן ריצה של קוד, וכמות הזיכרון שהוא תופס בזמן ריצה. כלומר, לא הרצת – לא שילמת. התשלום ליחידה אחת של זמן ריצה הוא כרגיל שברירי דולר )באופן גס, במקרה של קוד פשוט וקצר 7000 הרצות עולות דולר(, אבל אתרים עסוקים ירוצו לא מעט פעמים ובסוף זה יצטבר.

ניתן להריץ קוד למדה בכמה שפות, כולל פייתון, js.Nodes ,ג'אווה. אנחנו נעבוד עם פייתון גירסה 8.3

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

הקוד מכיל פונקציה שנקראת כאשר הקוד נכנס לעבודה:

			def lambda_handler(event, context)
			

הפרמטר event הוא אובייקט ג'ייסון שמכיל את ההודעה שהגיעה עם הרבה מידע עליה

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

אנחנו נשתמש בניסוי רק בפרמטר event .

Git

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

המפגש השני כולל התנסות ב -Git .אין כאן כוונה לכסות את הנושא בשלמותו, אלא רק בהקשר שבו יהיה שימוש בניסוי.

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

  https://reshetech.co.il/git-and-github/introductory-tutorial

דגשים לגבי העבודה עם git בהקשר של הניסוי שלנו:

  • הפעולות בהם נשתמש הם clone, commit, push, pull
  • המאגר המרוחק בו נשתמש הוא לא GitHub ,אלא מאגר שמגיע עם AWS שנקרא CodeCommit . מבחינתנו, מדובר בסך הכל בעוד שרות של AWS

תרגיל 2 :תרגילי הכנה

למדה

  • אחרי לוגין לסביבה שלכם, היכנסו לשרות Lambda
  • לחצו על כפתור Function Create למעלה מימין
  • Use a blueprint באפשרות ב
  • בעזרת החיפוש, מצאו את הפונקציה python-world-hello ובחרו אותה
  • תנו שם לפונקציה החדשה שלכם, ולחצו על function Create בתחתית העמוד

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

מימין לתפריט העריכה יש 2 כפתורים חשובים: Test ו -Delpoy .Deploy יעלה קוד מעודכן להרצה, ולמעשה משתמשים בו כמו save בסביבה רגילה. Test משמש להרצה של הקובץ.

הרצה

  • לחצו על Test
  • נפתח לכם דף שבו אתם מגדירים את אובייקט הג'ייון שמתקבל ב -event .כרגע נשאיר אותו כך. תנו שם ל-Event שלכם, ולחצו על Create בתחתית העמוד.
  • עכשיו כשיש לכם Event מוגדר, לחיצה נוספת על test מריצה את הקוד.

מה הערך שפונקציית למדה החזירה?

כמה זמן רץ הקוד?

שינוי ה-event

שנו את ה-Event כך שיכיל את השמות שלכם. נניח

			{“name1”:”Roy Mitrany”,”name2”:”Gal Assa”}
			

תדאגו שהשמות יודפסו ללוגי ם

להגשה

הוסיפו לדוח המכין צילום מסך של תוצאת הריצה ("results Execution")

תרגיל 3:

CodeCommit

אנחנו נתרגל ניהול של repository בעזרת CodeCommit .

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

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

  https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-migrate-repository-existing.html

לצורך כך, אתם תגדירו repository ב -Commit code ,ותשתמשו במחשב כדי למשוך את ה-repository מתוך GitHub ולדחוף אותו ל -CodeCommit

AWS Github CodeCommit

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

  1. ב-Console AWS ,פיתחו את שרות cloud9
  2. .לחצו על כפתור Environment Create
  3. תנו שם ל -Environment והתקדמו ב -wizard מבלי לשנות דבר עד שנוצרת הסביבה.
  4. .בחלק התחתון של העמוד, תקבלו terminal .הריצו בו את הפקודה הבאה:
			git clone https://github.com/roymitrany/aws_exp.git
			

עתה ניצור repository חדש ונקשר אותו עם הקבצים שלנו.

  1. .CodeCommit בשרות בחרו, AWS Console-ב.
  2. צרו Repository חדש, ותנו לו שם , נניח Repo-Prep
  3. מצד ימין של כפתור URL Clone ,בו תוכלו להעתיק את הקישור ל -repository שלכם. אתם תצטרכו את זה בשביל הצעד הבא.
  4. בטרמינל של cloud9 ,הריצו את הפקודות הבאות מתוך התיקייה exp_aws
			git remote rename origin upstream
			git remote add origin URL_TO_GITHUB_REPO
			git push origin master
			

כאמור, REPO_GITHUB_TO_URL הוא ה-URL שהעתקתם בסעיף הקודם.

להגשה

הוסיפו לדוח המכין צילום מסך של ה repository שלכם עם הקבצים שהוא מכיל.