ברוכים הבאים ליום 4 של 12 ימי DigitalOcean! אתמול, הוספנו התראות SMS של Twilio לשירות תזכורת יום ההולדת שלנו, מה שהופך אותו ליכול לשלוח הודעות טקסט ליום ההולדת של היום. 🎂
היום, נעביר את הדברים לשלב הבא על ידי פריסת הסקריפט שלנו לפונקציות DigitalOcean. זה מאפשר לשירות שלנו לפעול בענן מבלי צורך בשרת ייעודי, מה שהופך את האפליקציה שלנו לקלה, ניתנת להרחבה ומוכנה לאוטומציה.
עם הגדרה זו, תקבלו תזכורות ליום ההולדת גם כאשר המחשב שלכם כבוי או לא מחובר לאינטרנט—אין צורך להריץ את הסקריפט ידנית על המחשב שלכם יותר. 🎉
✨ למה פונקציות DigitalOcean?
לפעמים, כל מה שאתה צריך זה סקריפט פשוט שמריץ מדי פעם. ניהול תשתיות עבור דבר כזה יכול להיות מיותר. כאן נכנסות לתמונה הפונקציות. זו פלטפורמה ללא שרתים, כלומר אתה יכול לפרוס קוד שמופעל רק כאשר יש צורך, ואתה משלם רק עבור מה שאתה משתמש. מושלם עבור המקרה השימוש שלנו—בדיקת ימי הולדת ושליחת תזכורות מדי יום.
🚀 מה תלמד
בסוף היום, תדע איך:
- להגדיר את
doctl
כלי ה-CLI של DigitalOcean. - ליצור ולחבר לnamespace ללא שרתים (הדרך של DigitalOcean לשמור על הפונקציות מאורגנות).
- לארוז ולפרוס את שירות תזכורת יום ההולדת שלך לפונקציות DigitalOcean.
- לבדוק את הפונקציה שהופעלה בענן.
🛠 מה תצטרך
לפני שתתחיל, ודא שיש לך:
- חשבון ב-DigitalOcean.
- קובץ
.env
עם פרטי הכניסה למסד הנתונים PostgreSQL שלך ופרטי הכניסה ל-Twilio
🧑🍳 מתכון ליום 4: פריסה לפונקציות של DigitalOcean
שלב 1: התקנת CLI של doctl
אם כבר הגדרת את doctl במכונה שלך, תוכל לדלג על שלב זה. עבור אלה שצריכים להגדיר אותו, עקוב אחרי ההנחיות הללו:
לפני שנתחיל, בואו נדבר במהירות על doctl
. זהו הכלי הרשמי של DigitalOcean לממשק שורת הפקודה המאפשר לך לנהל את המשאבים בענן שלך ישירות מהטרמינל שלך. נשתמש בו כדי ליצור מרחב שם (תיקייה לפונקציות השרת שלנו), לפרוס את הסקריפט של Python שלנו, ולבדוק את הפונקציה.
ההגדרה שלו היא פשוטה:
-
התקן
doctl
: עקוב אחרי מדריך ההתקנה עבור מערכת ההפעלה שלך. -
אמת את
doctl
: חבר אותו לחשבון DigitalOcean שלך על ידי הרצת: -
אמת את ההתקנה: ודא שהכל עובד על ידי הרצת:
אם ההתקנה הצליחה, פקודה זו תחזיר פרטים על חשבון ה-DigitalOcean שלך, כמו כתובת האימייל ומספר הזיהוי של החשבון.
שלב 2: התקן את התוכנה ללא שרת
פונקציות DigitalOcean דורשות תוכנה תומכת ללא שרת, שתצטרך להתקין. זו התקנה חד פעמית, אז ברגע שתתקין אותה, לא תצטרך לעשות זאת שוב עבור פרויקטים עתידיים.
הרץ את הפקודה הבאה:
תוכל לבדוק את מצב ההתקנה עם:
אם אתה רואה שגיאה כמו:
אל תדאג—זה רק אומר שלא יצרנו או התחברנו לשם תחום עדיין. נטפל בזה בשלב הבא.
שלב 3: צור והתחבר לשם תחום
מרחבים הם כמו תיקיות עבור ארגון פונקציות ללא שרת. בואו ניצור אחד עבור שירות תזכורת היומולדת שלנו:
-
צור מרחב חדש:
-
התחבר למרחב:
-
ודא את החיבור:
כעת אתה צריך לראות אישור שאתה מחובר למרחב.
טיפ מקצועי: כדי לראות רשימה של כל השמות המרחביים הזמינים, השתמש בפקודה הבאה:
זה יכול להיות מועיל אם אתה מנהל מספר פרויקטים או רוצה לאמת את שם המרחב שיצרת זה עתה.
שלב 4: אתחול והגדרת מבנה הפרויקט
פונקציות של DigitalOcean מצפות למבנה פרויקט ספציפי לפריסות ללא שרת. אתה יכול להתחיל את המבנה הזה באמצעות doctl serverless init
, ליצור אותו ידנית, או אפילו להקליט מאגר התחלה. כדי לשמור על הדברים פשוטים, נקים אותו באמצעות doctl serverless init
:
-
הרץ את הפקודה הבאה כדי להפעיל את הפרויקט:
זה יוצר ספריית פרויקט מקומית בשם
my-birthday-reminder-service
עם המבנה ברירת המחדל הבא: -
נווט לתוך תיקיית הפרויקט:
-
שנה את שמות התיקיות כדי להתאים למקרה השימוש שלנו:
-
צור את הקבצים הנדרשים:
- צור קובץ .env ריק בשורש הפרויקט:
זה יחזיק את פרטי הגישה שלך למסד הנתונים ול-Twilio. הקובץ יימצא בשורש תיקיית
my-birthday-reminder-service
.- צור קובץ
requirements.txt
בתיקייתbirthdays
:
קובץ זה יפרט את התלותות של Python הנדרשות לפונקציה שלך. הוא יימצא תחת
packages/reminders/birthdays
.- צור קובץ build.sh בתיקיית birthdays:
הסקריפט
build.sh
נחוץ לפריסה של פונקציות עם תלותות חיצוניות. הפקודהchmod
מבטיחה שהסקריפט יהיה ניתן להרצה במערכות Mac/Linux.
מבנה מעודכן: לאחר סיום צעדים אלו, מבנה הפרויקט שלך אמור להיראות כך:
טיפ מקצועי: אם טעות בשמות תיקיות, תוכל להריץ את הפקודה שוב או לשנות את השם ידנית בסייר הקבצים שלך.
שלב 5: עדכן קבצים
עכשיו שהמבנה מוכן, בואו נמלא אותו בקבצים הנדרשים. פתח את תיקיית my-birthday-reminder-service בעורך הקוד האהוב עליך
1. עדכון project.yml
קובץ project.yml
הוא קובץ הגדרות שמגדיר את מבנה הפרויקט שלך ללא שרת, משתני סביבה ופונקציות. החלף את התוכן שלו ב:
קובץ זה מגדיר את חבילת התזכורות וממפה את משתני הסביבה לפונקציות של DigitalOcean. כל משתנה מתייחס לאישורים הנדרשים עבור מסד הנתונים שלך ואינטגרציית Twilio.
2. עדכן את קובץ .env שלך
עיין ביום 1: הגדרת מסד נתונים PostgreSQL לתזכורות יומולדת עבור אישורי מסד הנתונים וביום 3: בדיקת יומולדת ושליחת הודעות SMS עבור אישורי Twilio כדי למלא את הערכים הבאים:
הערה: קובץ .env
משמש לאחסון מאובטח של אישורים רגישים. ערכים אלו יקראו על ידי קובץ project.yml
וימופו לסביבת השרת ללא שרת במהלך הפריסה, מה שיגרום להם להיות נגישים לפונקציה שלך בענן.
3. הוסף תלותים
עדכן את קובץ requirements.txt
עם התלותים הבאות:
pg8000
: ספריית לקוח PostgreSQL טהורה ב-Python.
python-dotenv
: משמש לטעינת משתני סביבה מקובץ .env
.
twilio
: ספריית Twilio ב-Python לשליחת הודעות SMS.
4. עדכן build.sh
הוסף את הסקריפט הבא לקובץ build.sh
:
סקריפט זה מבטיח שכל התלותות נארזות כראוי עם הפונקציה שלך. הפקודה chmod +x
משלב 4 מבטיחה שהיא ניתנת להרצה.
5. עדכן את __main__.py
זהו הסקריפט הראשי עבור שירות תזכורת יום ההולדת שלך. אנחנו essentially משתמשים בסקריפט שבנינו ביום 3 לשליחת התראות יום הולדת. עם זאת, כדי להפוך אותו תואם לפונקציות של DigitalOcean, אנו צריכים לבצע כמה התאמות קטנות.
עדכן את הקובץ __main__.py
עם התוכן הבא:
הנה מה ששינינו:
-
הוספנו פונקציה
main(params)
: DigitalOcean Functions מצפה לפונקציית נקודת כניסה בשםmain
, שלוקחת ארגומנטparams
. כאן הפונקציה מתחילה לפעול. -
העברנו את הלוגיקה של הסקריפט לתוך הפונקציה
main
:
הקוד מיום 3 הוכנס לתוך הפונקציהmain
כדי להתאים לדרישה זו. -
כל השאר נשאר כמו שהוא:
לוגיקת חיבור מסד הנתונים, בדיקות יום ההולדת ולוגיקת ההודעה ב-SMS לא השתנו.
שלב 5: ארוז ופרוס
עם הכל במקום, פרוס את הפרויקט שלך ל-DigitalOcean Functions:
- פרוס את הפרויקט:
כדי לאמת שהפונקציה שלך פרוסה בהצלחה למרחב השמות:
- בקר בלוח הבקרה של DigitalOcean, ועבור ל-Functions בסרגל הצד השמאלי.
- מצא את מרחב השמות שלך (למשל, my-birthday-reminder-namespace).
- בדוק שהפונקציה שלך מופיעה תחת מרחב השמות, בדרך כלל מופיעה כ-
reminders/birthdays
. - לחץ על שם הפונקציה כדי לראות פרטים, כולל יומנים, הגדרות והיסטוריית קריאות.
שלב 6: בדוק את הפונקציה שהופצה
ברגע שהפונקציה שלך הופצה, הגיע הזמן לבדוק אותה. אתה יכול לקרוא לפונקציה באופן ידני כדי לוודא שהיא פועלת כפי שצפוי. ישנן שתי דרכים לעשות זאת:
אפשרות 1: שימוש ב-CLI של DigitalOcean
אם הכל מוגדר כראוי, הפונקציה שלך תרוץ בענן, תבדוק מי חוגג יום הולדת היום ותשלח הודעות SMS.
אפשרות 2: שימוש בלוח הבקרה של DigitalOcean
- עבור אל לוח הבקרה של DigitalOcean.
- נווט אל פונקציות ומצא את הפונקציה שלך להזכרת/ימי הולדת.
- לחץ על הרץ כדי להריץ אותה ידנית.
- צפה בפלט וביומנים ישירות בקונסולה.
שיטה זו מועילה במיוחד אם אתה מעדיף ממשק חזותי או רוצה לבדוק את היומנים בפורמט נקי וקל לקריאה.
טיפים לבדיקה
כשאתה מפעיל את הפונקציה, היא תבדוק עבור ימי הולדת התואמים לתאריך של היום. אם יש התאמה, תקבל הודעת טקסט עם הפרטים. כדי לבדוק את הפונקציה בצורה יעילה:
- הוסף יום הולדת אחד או יותר למסד הנתונים שלך התואם לתאריך הנוכחי.
- בדוק את הקונסולה או את יומני ה-CLI כדי לאשר שהפונקציה הוצגה בהצלחה.
🎁 סיכום
הנה מה שהשגנו היום:
✅ התקנו את doctl
ויצרנו מרחב שמות עבור הפרויקט שלנו.
✅ שיפרנו את הסקריפט של פייתון לפרסום.
✅ ארזנו והפצנו את שירות תזכורת ימי ההולדת לפונקציות של DigitalOcean.
✅ בדקנו את הפונקציה בענן באמצעות CLI ודשבורד של DigitalOcean.
בהמשך: אמנם זהו צעד גדול קדימה, אך אנחנו עדיין מריצים את הפונקציה ידנית. בפוסט הבא, נאוטומט את התהליך הזה כך ששירות תזכורת ימי ההולדת ירוץ אוטומטית כל יום בשעה ספציפית. דמיין לקום להזכיר טקסט מבלי להזיז אצבע—בואו נגרום לזה לקרות מחר! 🚀