פוסט
AWS מאפס לגיבור: המפה וחשבון בטוח
מה זה AWS ומודל האחריות המשותפת, Regions ואזורי זמינות, הגנה על משתמש ה-root, התוכנית החינמית, ותקציב לפני שיוצרים משהו.
ב-AWS יש הרבה יותר ממאה שירותים, והתפריט בקונסולה נראה כמו חומה. ליבה קטנה עושה את רוב העבודה: מקום לשמור קבצים, מקום להריץ קוד, רשת מסביב, מסד נתונים, ודרך לשלוט במי מורשה לגעת במה. כשמכירים את אלה, השאר הוא וריאציות.
הסדרה הזו היא מפה, לא ספר הוראות: שירותי הליבה לפי הסדר שבו פוגשים אותם, הטעויות שמתחילים עושים (בעיקר באבטחה ובעלויות), וקישורים לתיעוד הרשמי. מחירים, תוכניות חינמיות ותפריטי קונסולה משתנים, אז אני מתאר רעיונות ומפנה למקור במקום לצטט מספרים.
מה זה AWS
AWS היא פלטפורמת ענן: במקום לקנות שרתים, שוכרים כוח חישוב, אחסון ורשת דרך האינטרנט ומשלמים על מה שמשתמשים בו. יוצרים משאבים בכמה לחיצות או בפקודה אחת, ומוחקים אותם כשמסיימים.
שני רעיונות שכדאי שיהיו ברורים לפני הכול:
- כל דבר הוא שירות עם API. הקונסולה, שורת הפקודה והקוד שלנו קוראים לאותם APIs. כל מה שאפשר ללחוץ עליו אפשר גם לסקריפט.
- אחריות משותפת. AWS מאבטחת את הענן עצמו: מרכזי נתונים, חומרה, וירטואליזציה. אנחנו מאבטחים את מה שהכנסנו אליו: גישה, הגדרות, נתונים, ומערכת ההפעלה של כל שרת שאנחנו מריצים. bucket ציבורי ב-S3 שמדליף מידע הוא בעיה של הלקוח. ככל שהשירות מנוהל יותר, AWS לוקחת עליה יותר.
המפה: Regions ואזורי זמינות
משאבי AWS חיים במקומות פיזיים:
- Region הוא אזור גאוגרפי עם מרכזי נתונים משלו, בשמות כמו
eu-central-1(פרנקפורט) אוus-east-1(וירג׳יניה). ה-Regions מבודדים, והנתונים נשארים ב-Region שבחרנו אלא אם מעבירים אותם. - אזור זמינות (Availability Zone, או AZ) הוא מרכז נתונים אחד או יותר בתוך Region, עם חשמל, קירור ורשת נפרדים, מחוברים בקווים מהירים כך שתקלה באחד לא מפילה את האחרים.
- Edge location היא נקודת נוכחות שבה שירותים כמו CloudFront (CDN) מגישים תוכן קרוב למשתמשים.
שתי תוצאות מרגישים מיד. כמעט הכול הוא לפי Region: בסרגל העליון בקונסולה יש בורר Region, ו-bucket או שרת “נעלמים” אם מסתכלים על ה-Region הלא נכון. וזמינות גבוהה אומרת יותר מ-AZ אחד, כי AZ בודד יכול ליפול. בוחרים Region לפי המרחק מהמשתמשים (השהיה), המחיר, השירותים הקיימים בו, וכללים חוקיים על המקום שבו מותר לשמור נתונים.
אפשר לרשום את האזורים של Region מה-CLI (מתקינים אותו בחלק הבא):
aws ec2 describe-availability-zones --region eu-central-1 \
--query "AvailabilityZones[].{Zone:ZoneName,State:State}" --output table
החשבון שלנו, בצורה בטוחה
נרשמים ב-aws.amazon.com עם אימייל, סיסמה ואמצעי תשלום. הזהות הראשונה הזו היא משתמש ה-root, והוא יכול לעשות הכול, כולל לסגור את החשבון. מתייחסים אליו כמו אל מפתח מאסטר:
- מפעילים MFA למשתמש ה-root מיד, רצוי עם passkey או מפתח אבטחה. זה הצעד הכי מועיל שאפשר לעשות.
- לא עובדים עם root ביום-יום. יוצרים לעצמנו זהות רגילה (עם IAM) ומשאירים את ה-root לכמה משימות שדורשות אותו.
- אף פעם לא יוצרים access keys ל-root.
תוכנית חינמית, קרדיטים וחשבוניות
ההצעה החינמית של AWS משתנה, אז בודקים בדף AWS Free Tier ולא בפוסט ישן (כולל הפוסט הזה). נכון לזמן הכתיבה, חשבון חדש יכול להתחיל ב-Free plan עם קרדיטים; החשבון נסגר אחרי תקופה מוגדרת או כשהקרדיטים נגמרים, אלא אם עוברים ל-Paid plan (כל השירותים, חיוב לפי שימוש). כמה שירותים הם “תמיד חינם” בתוך מכסות חודשיות. בכל מקרה, המכסה החינמית היא גבול, לא הבטחה שדבר לא יעלה כסף.
לפני שיוצרים משהו, מגדירים תקציב:
- פותחים Billing and Cost Management ← Budgets ויוצרים cost budget עם סכום חודשי קטן, למשל 10 דולר, עם התראות באימייל באחוז ממנו ולפי תחזית.
- נתוני התקציב מתעכבים (מתעדכנים עד שלוש פעמים ביום), ולכן חיובים יכולים לעבור את הסף לפני שההתראה מגיעה. תקציב הוא גלאי עשן, לא תקרת הוצאה.
מדי פעם מציצים גם ב-Billing ← Bills וב-Cost Explorer. רוב החשבוניות המפתיעות נובעות ממשהו ששכחנו לכבות (החשודים הרגילים).