כיצד לפרוס אפליקציית Node.js ל- AWS Elastic Beanstalk

לקח לי את החלק היותר טוב בחודש להבין כיצד להגדיר חשבון AWS (Amazon Web Services), להגדיר אפליקציית Node.js לפריסה ואז בפועל לפרוס אותה.

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

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

תנאים מוקדמים

  1. ידע בסיסי בשורת הפקודה

    אני בטוח שתוכל לעשות זאת ללא שורת הפקודה, אך קל יותר להשתמש ב- CLI

  2. חשבון AWS
  3. ממשק שורת הפקודה האלסטית שעועית (EB CLI)

    הוראות להתקנה בהמשך

  4. ידע בסיסי בגיט

הגדרת חשבון AWS

הדבר הראשון שעליך לעשות הוא להקים חשבון AWS. אם כבר יש לך חשבון, ודא שיש לך משתמש IAM שיש לו מפתחות API והגישה המתאימה.

צור חשבון

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

הגדר את ה- IAM שלך

הערה: אני לא מומחה עם AWS Identity and Access Management (IAM). הפעולות שעשיתי נועדו למקרה עצמי לשימוש עצמי ואולי אינן מתאימות לצרכים שלך. בדוק היטב את ההרשאות לפני שתעניק גישה למשתמשים.

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

הגדר קבוצה

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

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

למידע נוסף על קבוצות IAM, עבור לכאן.

הגדר משתמש IAM

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

רק זכרו:

  1. תן להם הרשאות מפתח גישה

    (ראה תמונה למטה)

  2. הקצה אותם לקבוצת ה- IAM המתאימה

לאחר שהגדרת משתמש משלך, צא מהשורש והתחבר שוב כמשתמש ה- IAM החדש שלך.

הגדרת הסביבה המקומית

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

מהו גבעול שעועית אלסטית?

Elastic Beanstalk (EB) הוא דרך פשוטה למדי להגדרת יישומים ניתנים להרחבה. היא משתמשת במופעי Amazon Elastic Compute Cloud (EC2), בדליים של Amazon Simple Storage Service (S3) ובאזני עומסים כדי לנהל עבורך את ארכיטקטורת היישומים שלך.

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

איך למנוע מגבעול שעועית אלסטית לעלות לך טון

זה חל רק על משתמשים חדשים שעדיין זכאים לתוכנית החינמית:

  1. אתה מקבל 750 שעות של זמן t2.micro EC2 לחודש. זה ייתן לך מספיק להפעלת שרת יחיד במשרה מלאה.

    עם זאת, אם תוסיף עוד ניתוק אחד, תשלם על זה.

  2. אתה יכול להחליף את כל לוגיקת השרת שלך לפונקציות Lambda, אבל זה נושא ליום אחר (וגם יש כמה חסרונות).

    אם אתה מעוניין, עיין במאמר זה.

כמה עולה לעלות?

שאלה טובה. הנה דוגמה מהשטר שלי. זאת כאשר יישום Node.js פועל עליו אני כותב מאמר זה (EB, Cloudfront, S3 Buckets).

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

יצירת סביבת EB בתוך היישום שלך

זה לא הדרכה של Node.js, מכיוון שזה מחוץ לתחום המאמר הזה. אבל אם אתה זקוק ליישום להתעסק איתו, בדוק את מחולל היישומים אקספרס. זה ייתן לך "שלום עולם", לפחות. זה מה ששימשתי כפרויקט initשלי.

בהמשך, ההנחה היא שכבר יש לך יישום Node.js הפועל באופן מקומי ללא בעיה.

הגדרת ה- EB CLI

הדבר הראשון הוא להפעיל את ה- AWS / EB CLI, אשר מורכב רק מהתקנת כמה כלים והגדרת התצורה.

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

הערה: אם יש לך בעיות עם מקשי ה- API, תוכל לאמת / לשנות אותם על ידי עריכת קובץ התצורה.

open ~/.aws/config

פריסה ראשונית

עכשיו יש לנו את כל הכלים שלנו בתור, מה הלאה?

eb init

כאשר אתה מריץ פקודה זו זה ישאל אותך המון שאלות:

  1. תתבקש לבחור אזור.

    ברירת המחדל היא us-west-2: US West (Oregon)

  2. זה ישאל אותך באיזה יישום להשתמש או ליצור יישום חדש.

    האפשרות הראשונה צריכה להיות יצירת אפשרות חדשה.

  3. זה ישאל אותך אם אתה רוצה להשתמש ב- AWS CodeCommit.

    אין לי ניסיון עם זה, אבל אני פשוט משתמש ב- GitHub, אז אמרתי שלא.

הגדר את משתני ה- Env שלך

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

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

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

מבנה התיקיות אמור להראות בערך כך:

- .ebextensions -- 01_yourconfig.config - .elasticbeanstalk -- config.yml

קבצי התצורה כתובים ב- YAML, כפי שהוזכר קודם. כדי לתת לך מושג איך הם אמורים להיראות, הנה כמה דוגמאות:

קובץ משתני סביבה:

# 01_envar.config option_settings: aws:elasticbeanstalk:application:environment: PORT: 8081 NODE_ENV: production

קובץ להגדרת תצורה של Node.js:

אתה לא באמת צריך לציין את NodeVersionזה כי זה ייתן לך את האחרון שהוא יכול במקרה של EC2. אבל זה כאן לכל מקרה.

# 02_nodecommand.config option_settings: aws:elasticbeanstalk:container:nodejs: NodeCommand: "npm run start" NodeVersion: 8.8.1

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

אם אתה רוצה לדעת יותר, הנה מאמר מדהים בדיוק על הנושא הזה.

ליצור סביבה

eb create 

ואז לפרוס

eb deploy

בהנחה שהכל עבר כשורה, האפליקציה שלך נפרסת כעת ל"ענן ".

בדוק את זה עם eb open

פריסת שינויים

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

הערה: יש לבצע שינויים ב- Git לפני שנדחף לסביבה.

לא הבנתי זאת בפעם הראשונה ולקח לי לנצח להבין. אל תעשה את אותה הטעות - בצע את השינויים האלה!

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

eb deploy 

פקודות EBCLI שימושיות אחרות

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

eb open

לפתיחת המסוף:

eb console

כדי לקבל קבצי יומן ישירות למסוף שלך:

eb logs

מה הלאה?

שם דומיין מותאם אישית

אם תרוץ eb openתבחין שכתובת האתר היא כתובת URL מטורפת. אם תרצה, תוכל לחבר אותו לתחום שלך באמצעות כביש 53. לרוב זה כל הדברים הרשומים של רשומות DNS. אתה יכול להשאיר את ניהול ה- DNS בכל מקום שרשמת את הדומיין שלך, אבל אני פשוט קל יותר לקבל את הכל במקום אחד.

תעודת SSL

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

הערה: אם אתם מתכננים באמצעות CERT SSL עבור CloudFront, אתה צריך ליזום את התהליך מהאזור וירג'יניה נ. אתה יכול לשנות את האזור בפינה השמאלית העליונה של המסך.

לאחר שהוא מאומת ומוכן לשימוש, זרק אותו לתצורת ה- EB שלך. הדרך הקלה ביותר היא ללכת לקונסולה ולבחור אותה.

  1. עבור אל לוח המחוונים שלך ב- EB
  2. בחר את היישום שלך
  3. בחר את הסביבה שלך
  4. לחץ על "תצורה" ובחר את אישור ה- SSL.

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

סיכום

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

תמיכה

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

קנו ג'ארד נוט קפה - BuyMeACoffee.com

מפתח אתרים מבוסס לוס אנג'לס מנסה בכל כוחו לתרום לתוכנת קוד פתוח ולכתוב מדריכים מעולים. buymeacoff.ee

אֶמְצָעִי

AWS באנגלית פשוטה

היכרות ואהבה של קבצי תצורה אלסטיים של AWS Beanstalk (. הרחבות)

תחילת העבודה עם AWS

acloudguru (לא שירות חינם, אולם יש להם קורס מבוא בחינם ומאוד מידע)