AWS: להכיר את S3 מקרוב

בהמשך לפוסט \"הצצה ראשונית ל AWS\" התחלתי לכתוב פוסט על ה Big Data Stack של AWS, אך מהר מאוד נתקעתי: הבנתי שחסר רקע ב Hadoop, ורקע קצת יותר מקיף על שירותי הבסיס של AWS.

שירותי הבסיס של AWS? מלבד EC2 (שהוא מרכזי מאוד, אבל לא כ\"כ מפתיע), שירות חשוב מאוד הוא S3, ולו החלטתי להקדיש את הפוסט הבא.

S3 (קיצור של Simple Storage Service, להזכיר) הוא שירות האכסון הבסיסי של אמזון, והוא שימושי מאוד בתסריטים רבים. הממשק שלו דומה למערכת קבצים מבוזרת (אם כי הוא קצת יותר מורכב).

את הקבצים מארגנים ב Buckets – שהם סוג של Root Folders, עליו ניתן להגדיר הרשאות ועוד מספר תכונות.
לכל קובץ ניתן לגשת ישירות בעזרת HTTP, בצורה:

s3://bucket/folder/filename

כאשר קבצים יכולים להיות בגודל של עד 5TB.

למרות הממשק הדומה למערכת קבצים, כדאי לזכור שבגישה ל S3 יש latency של רשת + ה latency הפנימי של S3 (שיכול להיות עוד 100-200ms בממוצע). אל תנסו לרוץ בלולאה על קבצים ב S3 בזה אחר זה, כמו שאולי אתם עשויים לעשות עם מערכת קבצים מקומית. להזכיר: זמן גישה חציוני למערכת קבצים מקומית עשויה להיות משהו באזור ה 10ms…, ואין לה את המורכבות הנוספת של הרשת.

Bucket, הסמל של S3

כאשר יוצרים Bucket, ניתן לבחור להגדיר אותו באחת מ2 רמות אמינות קיימות:

  • רמת רגילה, המספקת durability של 99.999999999% (11 תשיעיות, וואהו!)
  • Reduced Durability (נקראת RRS, קיצור של Reduced Redundancy Storage) – המספקת durability של 99.99% בלבד. כלומר: סיכון של 0.01% אחוז, כל שנה, לאבד את המידע. המחיר שלו נמוך ב 15-20% מהתצורה הסטנדרטית. תצורה זו מתאימה למידע לא קריטי / שניתן לשחזר.

בכל מקרה ה availability של s3 הוא 99.99%, כלומר: לעתים לא תוכלו לגשת לקובץ (availability), למרות שהוא עדיין קיים (durability). תוכלו לגשת אליו זמן קצר מאוחר יותר.

מה אני יכול לעשות עם S3?

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

  • הנגשה של תוכן סטטי (קבצי HTML/CSS/תמונות וכו\', לעתים קבצים JSON או XML עם נתונים) על גבי HTTP. ל S3 ניתן לגשרת ע\"י REST ו/או SOAP.
  • שיתוף של נתונים, בצורה מבוזרת, בין כמה שרתים. לעתים כאשר קצב הקריאה הוא גבוה מאוד.
  • שמירה של כמות גדולה של נתונים סטטיסטיים לא מעובדים / מעובדים קלות – עבור עיבוד עתידי (מה שנקרא \"Data Lake\")

את הפעולות הבסיסיות ניתן לעשות דרך ה UI של אמזון:

  • יצירת Bucket, וקביעת הגדרות שונות שלו.
  • העלאת קבצים
  • ניהול קבצים
  • וכו\'

ניתן להשתמש ב awscli בכדי לבצע פעולות על s3 מתוך command line:

  • ליצור bucket (פקודת mb), להציג את רשימת הקבצים שנמצאים ב s3 (פקודת ls) או להעתיק קבצים בין s3 למחשב המקומי (פקודת cp), וכו\'…
  • פקודת sync – לסנכרן תיקיה מקומית מול bucket של s3. הפקודה תגרום רק לקבצים חדשים, בעלי גודל שונה, או תאריך עדכון חדש יותר מאשר ב s3 – להיות מועלים ל s3. הפרמטר delete– יגרום לפקודה לנקות מ s3 קבצים שנמחקו מהמחשב המקומי.
דרך שלישית ומקובלת היא להשתמש ב Programmatic APIs.

אם אתם עובדים על \"חלונות\", יש כלי UI נחמד בשם S3 Browser, המאפשר לראות את ה Bucket ולבצע עליו פעולות בצורה נוחה (משהו כמו כלי FTP נוח).

ה UI של S3

על כל bucket יש מספר תכונות:

  • הרשאות: מי רשאי לגשת לקבצים ב bucket? ניתן לאפשר גישה ציבורית (ע\"י HTTP url). ניתן גם לקבוע הרשאות ברמת הקובץ הבודד.
  • ניהול גרסאות: כל שינוי לקובץ ב bucket ינוהל בגרסה (כולל מחיקה). ריבוי העותקים יגביר את העלויות, וניתן לקבוע מדיניות (\"lifecycle rules\") מתי ניתן למחוק עותקים ישנים או להעביר אותם ל AWS Glacier (אכסון זול בהרבה, במחיר גישה אטית לקבצים – יכול לקחת גם כמה שעות בכדי לעשות checkout לקובץ).
  • האזנה לאירועים: ניתן להאזין להוספה / מחיקה / עדכון קבצים ב bucket, ולשלוח הודעה לאחד משלושה שירותים של AWS:
    • Simple Notification Service (בקיצור SNS) – שירות ה publish/subscribe של אמזון. מאפשר לכמה לקוחות להירשם ל topic, ושולח את ההודעות ב push (ל HTTP endpoint, דוא\"ל, או SMS).
    • Simple Queue Service (בקיצור SQS) – שירות queues. על הלקוח לשלוף ביוזמתו את ההודעה מה queue, ומרגע זה – ההודעה כבר לא קיימת יותר. לעתים קרובות מחברים את SNS שישלח הודעות למספר SQS queues – אחד לכל נמען.
    • AWS Lambda – בכדי להריץ פונקציה על בסיס השירות.
  • אירוח אתרים סטטיים (Web Hosting) – על בסיס קבצי html/css/javascript שמועלים ל s3, בשילוב עם Route 53 (שירות ה DNS של אמזון).
  • הצפנה (server side encryption): אמזון יכולה להצפין עבורנו את הנתונים הנשמרים ב s3, ע\"פ מפתחות שאנו מספקים לה. אם מישהו פרץ לתשתיות של אמזון (או קיבל צו חיפוש פדרלי בארה\"ב – למשל), הוא מוצא קבצים מוצפנים שאין בהם הרבה שימוש.
  • אינטגרציה ל Cloudfront – שירות ה CDN של אמזון, המאפשר להנגיש קבצים המאוחסנים ב S3 בעלויות נמוכות יותר, ו latency קצר יותר (על חשבון: עד כמה מעודכנים הקבצים שניגשים אליהם).
  • Multipart upload – המאפשר לחתוך קבצים גדולים לכמה parts ולטעון אותם במקבלים על גבי כמה HTTP connections.
  • Logging – שמירת לוג של הפעולות שנעשו על ה Bucket.

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

    היבטים של Landscape

    S3 הוא שירות ברמת ה Region, ובאופן אוטומטי תהיה רפליקציה של הנתונים בין ה Availability Zones השונים. הרפליקציה מתבצעת תוך כדי כתיבה, כך שאם קיבלתם OK על הפעולה – המידע שם ומסונכרן (בניגוד ל offline replication המתבצע מאוחר יותר).

    שם של Bucket צריך להיות ייחודי ברמת כל ה Regions של AWS (כלומר: Globally unique ב Account).
    שם האובייקט משפיע על האופן שבו S3 תעשה partition לנתונים, ולכן אם אתם זקוקים ל tps גבוה – כדאי לדאוג לשמות בעלות שונות גבוהה, ושאינם תלויים בדפוסים שלא מייצגים את דפוסי הגישה (למשל: לא להתחיל שם של אובייקט ב timestamp – כי יהיו קבצים רבים המתחילים באופן דומה). הנה פוסט בנושא, אם הנושא רלוונטי עבורכם.

    Policies

    על Bucket ניתן לקבוע policies, המוגדרים מכמה אלמנטים:

    • Resources – על אילו משאבים (קבצים) ב bucket אנו רוצים להחיל את ה policy.
    • Actions – אלו פעולות על הקבצים אנו רוצים להשפיע (upload, list, delete, וכו\')
    • Conditions – באלו תנאים יחול ה Policy: שעות פעילות מסוימות, regions של AWS, מצב של הקובץ, וכו\'. בעצם ב conditions נמצא הכוח האמיתי של ה Policy.
    • Effect – משמעות: allow/deny. אם יש סתירה בין policy של deny ל policy של allow – ה deny policy הוא זה שיכריע.
    • Principal – החשבון ב AWS או IAM user עליו חל ה policy.
    Policy לדוגמה יכול להיות הכנסת ססמה לפני מחיקה של קבצים מה Bucket, בכדי לצמצם את הסיכון שמישהו מוחק נתונים קריטיים, בטעות. ה Durability הגבוה של S3 הופך את הגורם האנושי לחלק המסוכן בשמירת המידע.
    את ה policy מגדירים כקובץ json ע\"פ מבנה מסוים, ועושים לו copy-paste לתוך ה UI (ב properties של bucket / הרשאות / policy). אמזון (בצדק) לא יצרו את ה UI המורכב שהיה נדרש בכדי לאפשר להגדיר policies בתוך ה UI של ה bucket. ניתן להשתמש ב AWS Policy Generator בכדי לייצר Policies (אך לא לערוך או למחוק) ואז להדביק את התוצאה ב UI של ה bucket properties.

    Policy לדוגמה. מקור: אמזון

    סיכום

    הנה עברנו בחינה מעמיקה של S3. היא לא הייתה ארוכה, בעיקר בגלל ש S3 הוא באמת… די פשוט.
    S3 הוא מאבני הבניין היסודיות ביותר של AWS – וכדאי להכיר אותו היטב.

    שיהיה בהצלחה!

    לינקים רלונטיים

    FAQ של אמזון על S3
    המחירון של S3
    Data encryption on S3

    Amazon Web Services – הצצה ראשונה

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

    \"מדוע להשכיר אחסון פיסי, אך לא אחסון לוגי?\" – מישהו באמזון שאל.

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

    אמזון החלה לשווק את AWS בשנת 2006, בעיקר על בסיס של EC2 (שירות ניהול VMs) ושירות S3 (אחסון מסמכים).
    השירותים הללו לא היו חדשים – אמזון השתמשה בהם כבר כמה שנים, באינטנסיביות לצרכיה הפנימיים. כשנחשפו לשוק הם כבר היו מוצרים בוגרים (בקטגוריה) ומוכחים.

    שירותים נוספים היו Simple Queue Services (בקיצור: SQS) ו SimpleDB (בסיס נתונים רלציוני כשירות, עבור כמויות קטנות של נתונים. כיום, נראה שאמזון נמצאת בשלבים להפוך אותו ל deprecated לטובת שירותים חדשים יותר).

    על הבסיס הזה היה ניתן להקים מערכת מבוזרת, High Scale ו Highly Available – ובזול. היה עדיין צריך לעבוד הרבה יותר קשה מהיום בכדי לבנות פתרון על AWS, וכל הרעיון של מחשוב ענן היה עוד חדש – כך שלאחר שנה היו \"רק\" 180 אלף מפתחים רשומים לשירותי AWS.

    היום, מיותר לציין, אמזון היא \"הגורילה\" של שירותי ב IaaS ובדרך המבטיחה להיות גם \"הגורילה\" של שירותי ה PaaS עם AWS Beanstalk. מיקרוסופט, גוגל, יבמ, ו Heroku הצליחו לספק בשנים האחרונות תחרות מוגבלת בלבד.

    מדוע אם כן – אמזון לא מעלה מחירים? מדוע היא כ\"כ אגרסיבית בתמחור של השירותים שלה?

    1. זה עניין תרבותי, כך טוענים. אמזון מתמחרת שירותים בצורה אגרסיבית מיום היווסדה.
    2. קצת יותר מפתיע: עם כל ההצלחה של הענן, כח המחשוב שנמצא היום בענן הוא רק כ 5% עד 10% מכח המחשוב העולמי (המספר המדויק תלוי במי מחשב וכיצד). קרב השליטה בענן עוד נמצא בשלביו המוקדמים.
      חברות הענן לא מתמקדות כרגע ברווחים (הן מוכנות להיות break even לבינתיים) אלא רק בצמיחה ותפיסת נתח גדול יותר מפלח השוק.
    מייקרוסופט, לדוגמה, עשתה חייל בשנה האחרונה: היא העבירה את הפוקוס שלה ממובייל – לענן, והצליחה תוך כך להעביר Enterprises רבים שהם \"Microsoft Shop\" – ל Azure.

    התרשים למעלה הוא מעניין, אבל עלול גם להטעות – ולכן יש לי רגשות אמביבלנטיים לגבי ההוספה שלו.
    אם נראה מהתרשים שמייקרוסופט הולכת להשוות לאמזון תוך כמה שנים – אז חשוב לאזן: מייקרוסופט עושה את הרווחים שלה מ Full Stack של טכנולוגיות, בעוד Amazon רק מהשכבות הנמוכות (בעיקר IaaS). כשאמזון נכנסת עתה לשכבות גבוהות יותר (PaaS, DBaaS, וכו…) – היא צפויה \"לפלוש\" לפלחי שוק גדולים וחדשים עבורה – ולהשיג \"קפיצה\" בהכנסות.

    בידיעה ש 90% מהשוק עוד נותר לכיבוש – ברור שאמזון לא נשארת שאננה, וממשיכה בתחרות עיקשת ובכל המרץ.

    כיום, 8 שנים אחרי ששוחררה לראשונה לקהל הרחב, יש ל AWS עשרות שירותים בענן:

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

    יצירת instance של EC2 – איך זה נראה?

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

    הערה: עם Deployment כל 10 שניות של עדכון למערכות אמזון – הכל יכול להשתנות בכל רגע. אל תניחו שעוד חצי שנה התהליך יראה בדיוק אותו הדבר – אבל הוא כנראה יהיה דומה.

    אמזון מאפשרת מסלול בשם AWS Free Tier בו אתם יכולים להתנסות בשירותים AWS, על חומרה מינימלית (לא הולכים עם חומרה כזו ל production) ותוכנה חופשית – למשך כשנה (!). מכניסים אמנם כרטיס אשראי – שיחויב רק אם \"התפתתם\" לבקש קצת מעבר למינימום שמוצע בתכנית.

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

    במהלך ה Wizard למטה תראו אופציות מסוימות המסומנות כ Free tier eligible. המשמעות היא: \"ניתן לבחור באופציה זו ללא חיוב, כחלק מתוכנית ה Free Tier\". אני אבחר מבין אופציות אלו בלבד.

    בחירת ה AMI

    Amazon Machine Image (בקיצור AMI) הוא הפורמט של אמזון ל VM Image (בעברית: תמונת מכונה-מדומה). אני לא בקיא בפרטי המימוש הפנימי של AMI, אך הפונקציונלית היא כמו זו של קובץ dmg. ב Mac או קובץ ovf. עבור Virtual Box או VMWare.

    את הקובץ ה AMI, אתם לא מנהלים אצלכם – הוא מנוהל על שירות S3 (קיצור של Simple storage service) של אמזון – שירות אמין במיוחד, scalable, לאחסון קבצים בגודל של עד 5TB (נכון לרגע זה). אתם יכולים להשתמש ב AMI מוכן מבית אמזון (הרשימה למעלה), לקנות AMI מצד-שלישי (יש Marketplace שלם, הכולל עלות שימוש לשעה המכילה את החמורה מאמזון + רשיונות התוכנה המתאימים), או פשוט לקחת snapshot מ EC2 instance שבבעלותכם.
    לדוגמה: ליצור instance חדש של Red Hat Linux, להתקין עליו VIM – וכך ליצור AMI חדש \"Red Hat /w VIM\".

    שווה לציין שאם אתם זקוקים ל Landscape גדול, זו עבודה קצת סיזיפית לייצר instance אחר instance. לשם כך יש שירות של אמזון שנקרא Cloud Formation המאפשר יכולות דומות ל AMI – רק בקנה מידה גדול. במקום הקמה של מכונה בודדת – הקמה של Landscape של מכונות (כל אחת עם ה AMI שהוגדר לה), הגדרות רשת, אבטחה וכו\' וכו\'.

    בחירת חומרה (וירטואלית)

    השלב המשמעותי הבא הוא לבחור חומרה (וירטואלית, כמובן). חומרת השרתים מסווגת לפי אופן השימוש:

    • כללי / מאוזן – סדרה t או m3
    • CPU intensive – סדרה c3
    • Memory Optimized – סדרה r3
    • Disk optimized – סדרה i2 או hs1
    • וכו\'.
    בתוך כל סדרה יש כמה \"גדלים\" שונים של מכונות (\"T-Shirt Size\")
    • small
    • medium
    • large
    • xlarge
    • וכו\'.
    אי אפשר לדעת איזו חומרה פיסית תריץ את ה VM שלכם. אם אתם בררניים (למשל: כתבתם קוד ב C בהסתמך על מעבדים מסדרה מסוימת של אינטל) – ההמלצה של אמזון (כפי שאני מכיר אותה, קצת ישנה) היא לבקש instance, לבדוק מה יצא – ואם לא אהבתם \"לזרוק\" ולבקש חדש עד שתהיו מרוצים.

    בחירת Storage





    השרת שלכם זקוק ל Storage. שתי האפשרויות הבסיסיות הן כדלהלן:

    • Ephemeral Storage (אחסון זמני, נקרא גם Instance Storage) – מה שמוקצה כחלק מה VM.
      כשתחזירו את המכונה לרשותה של אמזון – כל המידע יימחק.
      אם ה VM של אמזון קרס (יכול לקרות) – המידע יאבד.
      אולי תוכלו לייצר AMI מהמכונה וכך לשמור עותק של המידע.
    • EBS (קיצור של Elastic Block Store) הוא בעצם סוג של NAS (קיצור של Network Attached Storage) ממנו ניתן להקצות חלקים ולעשות mount ל instance שלכם.
      EBS ממשיך לחיות אחרי שהמכונה הוחזרה / ה VM נפל.
      EBS הוא אמין יותר, ועובר רפליקציה בין Availability zones בתוך ה Region – הכוונה, בין Data Centers (הנקראים Availability Zones) החברים באותו אשכול של Data Centers – שנקרא Region. על כך בהמשך הפוסט.
      הוא עדיין לא אמין כמו S3, ומומלץ לבצע גיבויים למידע – אם הוא חשוב לכם.

    יש לאמזון שירותי Storage נוספים, שזמינים כשירות (כלומר: API) ולא כ mount למערכת ההפעלה:

    Simple Storage Service (בקיצור S3)

    • Key/Object Storage. למה Object ולא Value? – כי לרוב מאחסנים בו \"קבצים\" ולא ערכים קטנים (למשל מחרוזת או מספר).
    • Static files – ניתן לגשת ישירות לקובץ ב HTTP ו/או HTTPS (ואז הוא מוגן בעזרת הרשאות)
    • אמין בצורה יוצאת דופן (durability של 99.999999999% או משהו דומה). יש רק מקרים בודדים מתועדים בהם מידע אבד מ S3, ולרוב זה היה בצורת corruption של נתונים בעקבות באגים של אמזון.
    • שומר אובייקטים בגודל של עד 5TB
    • המידע נשמר מוצפן על השרתים של אמזון (encrypted at rest)
    • זמינות השירות היא גבוהה (99.99%). שימו לב: יכול להיות שהקובץ \"חי וקיים\", אך אין שרת זמין שיגיש אותו (ולכן הפער בזמינויות).
    • יש לו אינטגרציה ל Glacier – אחסון \"קר\" יותר (קפוא!), וזול יותר.
    • יש לו אינטגרציה ל CloudFront – שירות ה CDN של אמזון, על מנת להגיש את הקבצים ממיקומים קרובים יותר לצרכן.
    • Region-Specific, מסתנכרן בין ה Availability Zones שונים.
    • קל מאוד לשימוש (REST API פשוט).

    Glacier

    • Archival Storage – מיועד לשמירת כמויות מידע, ב offline.
    • לקוח 2-6 שעות לשלוף קובץ (מה שמרמז שהקובץ מאוחסן על קלטות?)
    • זול מאוד (סנט ל GB לחודש, כשליש מ S3). עיקר המחיר הוא בשליפה של הנתונים.
    • הנה השירות הראשון של אמזון שאנו נתקלים בו – שהוא בעל תמחור מורכב:
      אמזון מציעים לכם שירות זול – הכי זול שיש, כנראה.
      אבל… התמחור הוא זול כל עוד אתם מצליחים לעמוד בכמה תנאים. זה לא ניסיון של אמזון להכשיל אתכם, זו הדרך שלהם להציב תנאים בהם הם יכולים להציע מחירים כ\"כ זולים. ואלו תנאים שידרשו מכם מאמץ.
    • למשל: בכדי לצמצם את מחיר השליפה מ Glacier עליכם לקבל (download) את הקובץ בקצב הורדה קבוע לאורך 24 שעות, ויש הנחה אם אתם מורידים קובץ שלם ולא חלק ממנו. פרטים נוספים.
    • אתם אמורים להבין ששירות כזה לא מתאים לסטארט-אפ תפרן בתחילת דרכו (כי הוא עלול להתקשות בתנאי התמחור הזול), אלא לארגון מתופעל היטב שמנסה לצמצם עלויות לרצפה – ומוכן להזיע קצת בשביל זה.

    Security Groups

    כל Instance של EC2 משויך ל Security Group. השם עשוי מעט לבלבל – אולי עדיף היה לקרוא להם Traffic Policy.
    כל קבוצה מכילה מספר EC2 instances וקובעת עבורם איזו תקשורת נכנסת תתאפשר ע\"פ פרוטוקולים, מקור, או ports שהגדרתם.  ההגבלות הן על תקשורת נכנסת בלבד – לא מגבילים תקשורת יוצאת.
    מכירים יכולת שכזו בעולם ה On-Premises? נכון – זה נקרא Firewall.
    בעצם ה Security Groups היא דרך קלה ומהירה להחיל אבטחה בסיסית של Firewall על השרתים שלכם. הריכוז בקבוצות עוזר לנהל מצב בו יש לכם instances רבים.
    באופן מעט מוזר, לא ניתן להזיז instance מרגע שהוגדר – בין Security Groups. אתם יכולים לשנות את ההגדרות של ה Security Group או \"לזרוק\" את ה instance ולהקים אחד חדש ב Security Group אחר.
    החלפת מפתחות

    טוב. ה instance שנמצא באמזון מוכן להתניע – אבל הם מוסרים לכם אותו?
    הרי הוא עכשיו באמזון, ואתם – ובאמצע יש רשת עוינת של האקרים. אז… לשלוח או לא לשלוח את פרטי החיבור (\"Admin\"/\"Admin\") במייל וזהו?

    הפתרון (הטבעי / הגיוני) של אמזון הוא להשתמש בהצפנה א-סימטרית. אתם יכולים לייצר זוג מפתחות ולשלוח אחד לאמזון, או לבקש שאמזון תיצור זוג מפתחות – ותשלח אחד אליכם (האופציה הזו יותר קלה).
    במקרה זה תורידו (ב https, כמובן) את המפתח שלכם כקובץ perm. ותתבקשו מאוחר יותר להציג אותו בחזרה – כאשר תרצו להתחבר למכונה.
    במכונות עם מערכת ההפעלה \"חלונות\" תעלו את הקובץ ותקבלו ססמה שעליכם לזכור, במכונות לינוקס תדרשו לצרף את הקובץ עצמו ככלי האימות ל ssh בעת חיבור למכונה. אם לינוקס – אז כדאי שתשמרו היטב את הקובץ שלא יאבד (מקסימום – \"זרקו\" את המכונה והקימו חדשה. זהו הקצב באמזון: שרת = disposable).

    קצת על הפריסה של אמזון

    שירותי AWS פזורים על 27 Data Centers ברחבי העולם (AWS Global Infrastructure – לצורך עדכונים במצב)

    Availability Zone (בקיצור AZ) הוא Data Center עצמאי, עם רשת משלו, הספקת חשמל משלו, אבטחה משלו, עמידות בפני שריפות, אסונות טבע (טוב – רובם) משלו וכו\'. הוא אמור להיות חסין לקריסה של Availability Zone אחר.

    ה AZs מקובצים לתוך אשכולות בשם Region – שזה אזור גאוגרפי בעולם. יש בין ה AZs ב Region רשת מהירה, שמאפשרת רפליקציה של נתונים בין ה AZ בכדי ליצור ולשמר יתירות. Region יכול להיות \"מזרח ארה\"ב\" או \"גרמניה\".

    סה\"כ לאמזון יש כיום 11 Regions ברחבי העולם.

    רבים מהשירותים של אמזון הם זמינים ברמת ה Region. למשל שירות S3 – מסנכרן לבד את הנתונים שלו בין ה AZs ב Region.
    שרתים שלכם (EC2 instances) – הם באחריותכם: כדאי שתפזרו את השרתים ב Region על פני כמה Availability zones שונים, ואם יש צורך בסנכרון – הוא עליכם.

    בהרבה Regions יש שלושה Availability Zones. למה שניים לא מספיקים?

    ראשית – כי 3 זה יותר בטוח מ 2.

    נניח שהסבירות ששני AZs יקרסו באותו הזמן היא קטנה מדי בכדי להטריד אתכם (נניח), האם יש טעם לפזר את השרתים על יותר משני AZs? התשובה הפשוטה היא – כן.

    נשווה פיזור של אפליקציה בין 3 ל 2 Availability Zones:

    • ברגע הנפילה – ה capacity שלכם ירד ל 67% ולא ל 50%.
    • \"להרים instance זה עניין של כמה דקות ב AWS, נכון?\"
    • נכון – אבל לא בעת אירוע של נפילת Availability Zone. במקרה כזה אלפי לקוחות של אמזון מבקשים ממנה instances חדשים באותו הרגע ממש – מה שאומר שהזמן לקבל instance חדש יהיה ארוך מהרגיל, זמן בו יהיה עליכם להסתפק בקיבולת שנותרה לכם – וכאן ההבדל בין 50% קיבולת ל 67% קיבולת – היא יותר משמעותית.

    נטפליקס, למשל, שהעסקים שלהם מבוססים לגמרי על AWS עשו מעבר לכך: ברגע שנופל AZ הם מורידים את איכות השירות (נאמר: ל 65%) בכדי להמשיך לתת את השירות לכל הלקוחות ללא הפרעה – ומבלי להסתמך על כך שיוכלו להוסיף בזמן קצר עוד EC2 instances מספיקים. שיפורים אלו נעשו מתוך outages שהם חוו בפועל, ולא מתוך \"תכנון מוקדם\".

    למה אמזון לא מחברת את כל ה Regions שלה אחד לשני?

    1. כי תעבורת הרשת תהיה יקרה מאוד (יש הבדל בין תקשורת מהירה בתוך וירג\'יניה לתקשורת מהירה בין וירג\'יניה לסין)
    2. כי קשר = תלות = פחות disaster tolerance.
    3. כי שירותים מסוימים (לדוגמה VPC) לא יעבדו על פני מרחק גיאוגרפי גדול.

    אחד ה Regions המעניינים הוא GovCloud שנמצא בצפון-מערב ארה\"ב. אחד החסמים של גופים ממשלתיים להשתמש בשירותי הענן של אמזון הוא רגולציה. כל מיני חוקים שמבטיחים שרק אזרחים אמריקאים יהיו מסוגלים לגשת לשרתים ולרשת, חוקים של אבטחת מידע ואחסון ייחודיים (מישהו שמע על ITAR?) וכו\'. מכיוון שהמגזר הציבורי בארה\"ב הוא מספיק גדול להצדיק השקעה שכזו (הממ הממ) – אמזון בנו Region מיוחד רק לגופי ממשלה בארה\"ב שתפור לכללי הרגולציה. המיקום במערב ארה\"ב נקבע בגלל סיבות טקטיות – והוא יורחב גם למזרח ארה\"ב בעתיד (אני מניח שכ Region נוסף).

    שימו לב שלא כל השירותים של אמזון זמינים בכל ה Regions.

    Edge location
    אמזון, כספקית CDN שצריכה להיות \"קרובה\" לכל המשתמשים בעולם, מחזיקה גם אתרים (מה שנקרא לעתים PoP – Point of Presence) רק לצורך Caching של נתונים או שירות ה DNS (נקרא Route 53).

    קצת על אבטחה

    מודל האבטחה של AWS הוא מודל של אחריות משותפת: של אמזון \"בשותף\" עם הלקוח.
    אמזון לוקחת אחריות על כמה תחומים שלה, ומספקת ללקוח מגוון כלים – בציפיה שהוא יהיה אחראי על הצד שלו.

    אחריות הלקוח כוללת:

    ניהול משתמשים והראשות. אמזון מספקת את IAM (קיצור של: Identity and Access Management) שהוא סוג של Repository לניהול משתמשים (כמו Active Directory), הכולל גם יכולות של Federated Identity ו SSO (כמו Active Directory Federation Services – ADFS).

    אמזון מספקת גם יכולת Multi-Factor Authentication. למשל: הכנסת ססמה ב Desktop ובנוסף אימות ה Login מתוך הסמארטפון (על בסיסי ID ייחודי של היצרן – שמוודא שזה אכן הטלפון שלכם) או חומרה ייעודית אחרת (כמו כרטיס RSA  המייצר קוד זמני שהשרת יכול לאמת – למי שמכיר). ייתכן ותרצו לאכוף מנגנון שכזה על גישה של משתמשי מפתחי (Admins למיניהם).

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

    Security Groups – אותם הזכרנו בהקדמה, שזה סוג של Firewall.

    הרשאות שונות (ACLs) – מי יכול לגשת לאיזה שירות (שירותים כמו בסיסי נתונים כשירות, CDN, וכו\').

    אם אתם רוצים לאבטח את הרשת שלכם יותר מהרמה של Security Groups ו ACLs, אמזון מספקת יכולת בשם Virtual Private Cloud (בקיצור VPC) בה תקבלו רשת נפרדת משאר הענן (ע\"י ויראוליזציה, כמובן) ותהיה לכם יכולת שליטה רבה על הגדרת הרשת וההרשאות שלה – כרצונכם. זו כמובן התעסקות לא קטנה, הדורשת הבנה טובה של הרשת – ושל יכולות ה VPC של אמזון.

    אחריות אמזון כוללת:

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

    אחריות על הגנת הרשת הפנימית של AWS: ניהול ה switches / routers בצורה מאובטחת. אמזון מנטרת את תנועת הרשת מפני חריגות עקרוניות: שרת ששלוח IP Packets ומצהיר על IP שאינו שלו, פעילות של Port scanning וכו\'. אמזון יודיעו לכם אם הם מזהים התנהגות חשודה כלפי ה EC2 Instances שלכם.
    המדיניות של אמזון אוסרת עליכם, למשל, להשתמש ב NMAP או כלי דומה לבצע port scanning לעצמכם. עליכם לסמוך על אמזון. אם אתם רוצים לבצע להריץ Web Scanner על השרתים שלכם – עליכם לתאם זאת עם אמזון מראש ולעשות זאת רק במסגרת הזמן שהוקצב לכם.

    אמזון מבטיחה Multi-tenancy של המערכות שלה (ע\"י Hypervisors, VLANs, או Multi-tenancy ברמת התוכנה, וכו\') שמבטיח שלקוח אחר, שמשתף אתכם חומרה פיסית – לא יוכל לנצל עובדה זו בכדי לגשת לנתונים שלכם. הפרדה מוחלטת.

    שירותי הגנה מ DDoS (כלומר: Distributed Denial of Service) – התקפה נפוצה, שירות כזה מסופק ע\"י רוב ספקיות ה CDN הגדולות, ואמזון היא אחת מהן.

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

    סיכום

    אחרי שסקרתי את OpenStack (גם חלק שני) – יהיה רק הגיוני לסקור את AWS.
    שילבתי בפוסט לא מעט פרטים – אך הדרך להכיר את AWS היא עוד ארוכה.

    שיהיה בהצלחה!