פונקציות ללא שרת עם פונקציית ענן אביב

1. הקדמה

במדריך זה נלמד כיצד להשתמש בפונקציית Cloud Cloud.

אנו בונים ונפעיל פונקציית Spring Cloud פשוטה באופן מקומי ואז נפרוס אותה ל- AWS.

2. הגדרת פונקצית ענן אביב

ראשית, בואו נשתמש מאפס ונבדוק פרויקט פשוט עם שתי פונקציות תוך שימוש בגישות שונות:

  • מהפך מחרוזת, בשיטה רגילה
  • ומברך המשתמש בשיעור ייעודי

2.1. תלות Maven

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

 org.springframework.cloud spring-cloud-starter-function-web-1.0.1.RELEASE 

הישאר מעודכן מכיוון שנשנה זאת מעט כשאנו מתפרסים ל- AWS.

2.2. כתיבת פונקציית ענן האביב

עם פונקצית ענן אביב, אנחנו יכולים לחשוף @אפונהs מהסוג פוּנקצִיָה, צרכן אוֹ ספק כשיטות אישיות:

@SpringBootApplication Class public CloudFunctionApplication {public static void main (String [] args) {SpringApplication.run (CloudFunctionApplication.class, args); } @Bean פונקציה ציבורית reverseString () {ערך החזרה -> StringBuilder חדש (ערך). הפוך (). ToString (); }}

כמו בקוד זה, אנו יכולים לחשוף תכונת מחרוזת הפוכה כ- פוּנקצִיָה, אשר הפלטפורמה הפונקציונלית היעד שלנו יכולה להפעיל.

2.3. בדיקת פונקציית מחרוזת הפוכה באופן מקומי

ה אביב-ענן-המתנע-פונקציה-רשת חושף את הפונקציה כנקודת סיום HTTP. אחרי שאנחנו מפעילים את יישום CloudFunction, אנו יכולים לסלסל ​​את מטרתנו לבדיקה מקומית:

curl localhost: 8080 / reverseString -H "סוג תוכן: טקסט / רגיל" -ד "משתמש Baeldung"

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

וכצפוי, אנו מקבלים את המחרוזת ההפוכה כפלט:

gnudleaB resU

2.4. סריקת פונקצית ענן אביב בחבילות

מלבד חשיפת השיטה שלנו כ- @אפונה, נוכל גם לכתוב את התוכנה שלנו כשיעורים המיישמים את הממשק הפונקציונלי פוּנקצִיָה:

הכיתה הציבורית Greeter מיישמת את הפונקציה {@Override public String להחיל (String s) {החזירו "Hello" + s + ", וברוכים הבאים לפונקצית Cloud Cloud !!!"; }}

לאחר מכן נוכל לציין את החבילות לסרוק אחר שעועית רלוונטית application.properties:

spring.cloud.function.scan.packages = com.baeldung.spring.cloudfunction.functions

2.5. בדיקת תפקוד ה- Greeter באופן מקומי

שוב, אנו יכולים להפעיל את האפליקציה ולהשתמש בסלסול כדי לבדוק את גרטר פוּנקצִיָה:

curl localhost: 8080 / greeter -H "סוג תוכן: טקסט / רגיל" -d "World"

שים לב שנקודת הקצה היא שם המחלקה המיישמת את הממשק הפונקציונלי.

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

שלום עולם, וברוך הבא לפונקציה של ענן אביב !!!

3. פונקציית ענן אביב ב- AWS

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

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

אז בואו לא נחכה יותר ונפרוס את הפונקציה שלנו לענן!

3.1. תלות Maven

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

ראה, תלוי היכן אנו מפעילים את פונקציית ענן האביב, עלינו להוסיף את התלות המתאימה.

עבור AWS נשתמש אביב-ענן-פונקציה-מתאם-aws:

 org.springframework.cloud spring-cloud-function-adapter-aws 

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

 com.amazonaws aws-lambda-java-events 2.0.2 סיפק com.amazonaws aws-lambda-java-core 1.1.0 סופק 

לבסוף, מכיוון שאנחנו הולכים להעלות את החפץ שנוצר על ידי בניית maven ל- AWS Lambda, עלינו לבנות חפץ מוצל, כלומר יש לו את כל התלות התפוצצה כקבצי כיתה בודדים במקום צנצנות.

ה קפיץ-מגף-פריסה דקה תלות עוזרת לנו להפחית את גודל החפץ על ידי אי הכללה של תלות שאינה נחוצה:

   org.apache.maven.plugins maven-deploy-plugin נכון org.springframework.boot spring-boot-maven-plugin org.springframework.boot.experimental spring-boot-thin-layout 1.0.10.RELEASE org.apache.maven. תוספים maven-shadow-plugin שווא נכון aws 

3.2. מטפלי AWS

אם ברצוננו לחשוף את מהפך המיתרים שלנו שוב באמצעות בקשת HTTP, אז AWS נשלח עם Cloud Cloud Function AWS SpringBootRequestHandler. זה מיישם את AWS RequestHandler ואחראי על שליחת בקשת ה- AWS לתפקידנו.

המחלקה הציבורית MyStringHandlers מרחיבה את SpringBootRequestHandler {}

Spring Cloud Function AWS נשלח גם עם SpringBootStreamHandler ו FunctionInvokingS3EventHandler כדוגמאות אחרות

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

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

3.3. כיצד AWS יודע איזו פונקצית ענן להפעיל?

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

בחלק הבא, נציין את שם פונקציית הענן במשתנה סביבה שנקרא FUNCTION_NAME במסוף AWS.

4. העלה את הפונקציה ל- AWS ובדיקה

לבסוף, בואו לבנות את הצנצנת שלנו עם maven, ואז להעלות אותה דרך ממשק המשתמש של AWS Console.

4.1. צור פונקציה למבדה במסוף AWS והגדר אותה

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

לאחר מכן, עלינו לציין ב מטפל שדה את השם המלא של הכיתה המיישמת SpringBootRequestHandler, או com.baeldung.spring.cloudfunction.MyStringHandlers במקרה שלנו:

ואז במשתני סביבה, אנו מציינים איזה שעועית פונקצית האביב להפעיל באמצעות ה- FUNCTION_NAME משתנה הסביבה:

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

4.2. בדיקת הפונקציה ב- AWS

עכשיו אנחנו להציל הבדיקה שלנו, ואז לחץ על מִבְחָן לַחְצָן.

וכצפוי, אנו מקבלים את אותה תפוקה כמו מה שקיבלנו כאשר בדקנו את הפונקציה באופן מקומי:

4.3. בדיקת פונקציה אחרת

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

נשנה את FUNCTION_NAME משתנה הסביבה ל- מברך:

לחץ על להציל ולבסוף, מִבְחָן כפתור שוב:

5. מסקנה

לסיכום, אם כי בשלביו הראשונים, Spring Cloud Function הוא כלי רב עוצמה לפירוק ההיגיון העסקי מכל יעד זמן ריצה ספציפי.

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

כמו תמיד, בדוק את קוד המקור של הדרכה זו ב- GitHub.