מוצג המסמך של Apigee Edge.
עוברים אל
מסמכי תיעוד של Apigee X. מידע
כמפתחים שעובדים עם Apigee Edge, פעילויות הפיתוח העיקריות שלכם כוללות הגדרת שרתי proxy ל-API שפועלים כשרתי proxy לממשקי API או לשירותים לקצה העורפי. המסמך הזה הוא התייחסות לכל רכיבי התצורה שזמינים לכם כאשר אתם בונים שרתי proxy ל-API.
אם אתם רוצים ללמוד איך לפתח שרתי proxy ל-API, מומלץ להתחיל מהנושא פיתוח API פשוט שרת proxy.
הדרכים הנפוצות ביותר לעריכת הגדרות של שרת proxy הן:
- שימוש עורך ה-XML בממשק המשתמש של Edge
- מורידים את ההגדרות ועורכים אותן באופן מקומי, כמו שמתואר במאמר מקומי פיתוח הגדרות לשרת proxy.
פיתוח מקומי של הגדרות לשרת proxy
אתם יכולים להוריד את ההגדרות של שרת ה-proxy כדי לערוך אותן במחשב מקומי. מתי כשמסיימים להעלות את התוצאות ל-Edge. כך אפשר לשלב את שרת ה-proxy בבקרת המקור, בניהול גרסאות ובתהליכי עבודה משותפים אחרים. בנוסף, על ידי בעבודה על תצורה מקומית של שרת proxy, תוכלו להשתמש בעורך XML ובאימות משלכם הכלים שלנו.
בקטע הזה נסביר איך להשתמש בממשק המשתמש כדי להוריד איחוד קיים של שרת proxy, איך לערוך אותו
ואז להעלות אותו חזרה ל-Edge לצורך פריסה. אפשר גם להשתמש
apigeetool
כדי להוריד ולפרוס תצורה חדשה של שרת proxy (באמצעות fetchproxy
ו-
פקודות deployproxy
, בהתאמה.)
כדי לערוך הגדרה של שרת proxy באופן מקומי באמצעות ממשק המשתמש:
- מורידים את ההגדרה הנוכחית של שרת ה-proxy בממשק המשתמש של Edge. (בשרתי ה-proxy ל-API בתצוגה, בוחרים באפשרות Project > להורדת הגרסה)
- במחשב המקומי, יוצרים ספרייה חדשה ומרחיבים את קובץ ה-ZIP שהורדתם לתוך
את זה.
כדי להרחיב את קובץ ה-ZIP, אפשר להשתמש בכלי עזר כמו
unzip
, כמו בדוגמה הבאה לדוגמה:mkdir myappdir
unzip ./my-app_app_rev3_2019_04_20.zip -d myappdir
התוכן המורחב של קובץ ה-ZIP צריך להיות דומה למבנה שמתואר ב מבנה של שרת proxy ל-API.
- עורכים את קובצי המקור לפי הצורך. לתיאור של קובצי המקור בשרת proxy
הגדרות אישיות
קובצי תצורה
מבנה הספרייה של שרת proxy ל-API.
לדוגמה, כדי להפעיל מעקב אחר בריאות ב- ב-Proxy ל-API, עורכים את קובץ התצורה TargetEndpoint ספריית
/apiproxy/targets/
. קובץ ברירת המחדל בספרייה הזו הואdefault.xml
, למרות שיכול להיות שיש קבצים עם שמות שונים אם משתמשים בהם יעדים מותנים.במקרה כזה, אם קובץ התצורה של TargetEndpoint והספרייה שלו לא קיימים, ליצור אותן.
- אחרי שמסיימים לערוך את קובצי התצורה של שרת ה-proxy, חשוב לשמור את השינויים.
- עוברים לספרייה החדשה שיצרתם כשהרחבתם את קובצי ה-ZIP (השורש של
בקובצי התצורה המורחבים).
לדוגמה, אם הרחבתם את הקבצים לספרייה
/myappdir
, משנים את באותה ספרייה, כמו בדוגמה הבאה:cd myappdir
עליך לעבור לספרייה הזו לפני שתעביר מחדש לארכיון את קובצי התצורה של שרת ה-proxy כי אתם לא רוצים שהספרייה
/myappdir
תיכלל בקובץ ה-ZIP. הספרייה ברמה העליונה בקובץ ה-ZIP חייבת להיות/apiproxy
. - מעבירים מחדש לארכיון את קובצי התצורה של שרת ה-proxy, כולל הקבצים החדשים או שהשתנו. אפשר להשתמש
כמו
zip
, כמו בדוגמה הבאה:zip my-new-proxy.zip -r .
הספרייה ברמה העליונה בקובץ ה-ZIP חייבת להיות
/apiproxy
.אין דרישות מיוחדות לגבי השם של קובץ ZIP. לדוגמה, אתם לא צריכים להגדיל את מספר הגרסה או לציין את התאריך בשם הקובץ, אבל פעולה זו יכולה להיות שימושי לניפוי באגים או לבקרת מקורות.
Edge מגדיל את מספר הגרסה הקודמת של ההגדרה החדשה של שרת ה-proxy בזמן ההעלאה את זה.
- העלאת ההגדרה החדשה של שרת ה-proxy באמצעות ממשק המשתמש של Edge. (בשרתי proxy ל-API
בתצוגה, בוחרים באפשרות Project > מעלים גרסה חדשה).
אם מופיעה שגיאה כמו Bundle is invalid. Empty bundle., צריך לוודא הספרייה ברמה העליונה של קובץ ה-ZIP היא
/apiproxy
. אם לא, יש להעביר לארכיון מחדש את קובצי תצורה של שרת proxy מהרמה הבסיסית (root) של הספרייה המורחבת.אחרי העלאת ההגדרה החדשה של שרת ה-proxy, דפדפן Edge מגדיל את מספר הגרסה יוצג בתצוגה סיכום גרסאות.
מערכת Edge לא פורסת את הגרסה החדשה אחרי ההעלאה באמצעות ממשק המשתמש.
- פורסים את הגרסה החדשה.
מידע נוסף זמין במאמר הבא: מדריך: איך להוריד שרת proxy באמצעות ממשק המשתמש וה-API לניהול ב- קהילת Apigee.
מבנה של שרת proxy ל-API
שרת proxy ל-API מורכב מהתצורה הבאה:
הגדרה בסיסית | הגדרות אישיות ראשיות עבור שרת proxy ל-API. לעיון בקטע בסיס ההגדרה האישית. |
הגדרת נקודת קצה לשרת proxy | הגדרות לחיבור ה-HTTP הנכנס (מבקשת אפליקציות ל-Apigee Edge), בקשה תהליכי תשובה, וקבצים מצורפים למדיניות. ראו ProxyEndpoint. |
הגדרה של נקודת קצה (endpoint) של יעד | הגדרות לחיבור ה-HTTP היוצא (מ-Apigee Edge לשירות לקצה העורפי), של בקשות ותשובות וקבצים מצורפים למדיניות. למידע נוסף, ראו TargetEndpoint. |
זרימה | צינורות עיבוד הנתונים של הבקשות והתגובה של ProxyEndpoint ו-TargetEndpoint שאליהם אפשר להחיל את המדיניות מצורף. ראו זרימה. |
מדיניות | קובצי תצורה בפורמט XML שתואמים לסכימות של מדיניות Apigee Edge. צפייה מדיניות. |
מקורות מידע | סקריפטים, קובצי JAR וקובצי Sitelink שיש אליהם הפניה מכללי המדיניות להפעלת לוגיקה מותאמת אישית. צפייה משאבים. |
מבנה ספריות של שרת proxy ל-API ותוכן
הרכיבים בטבלה שלמעלה מוגדרים לפי קובצי התצורה הבאים מבנה הספרייה:
קובצי תצורה וספרייה המבנה של שרת proxy ל-API
קטע זה מסביר את קובצי התצורה ואת מבנה הספריות של שרת proxy ל-API.
הגדרה בסיסית
/apiproxy/weatherapi.xml
הגדרת הבסיס של שרת proxy ל-API, שמגדיר את השם של שרת ה-proxy ל-API. השם חייבת להיות ייחודית בארגון.
הגדרות אישיות לדוגמה:
<APIProxy name="weatherapi"> </APIProxy>
הרכיבים של הגדרת הבסיס
שם | תיאור | ברירת מחדל | חובה? |
---|---|---|---|
APIProxy |
|||
name |
השם של שרת ה-proxy ל-API, חייב להיות ייחודי בארגון. התווים
מותר להשתמש בשם:
A-Za-z0-9_- |
לא רלוונטי | כן |
revision |
מספר הגרסה של תצורת ה-Proxy ל-API. אין צורך להגדיר במפורש מספר הגרסה, מכיוון ש-Apigee Edge עוקב באופן אוטומטי אחרי הגרסה הנוכחית של ה-API שרת proxy. | לא רלוונטי | לא |
ConfigurationVersion |
הגרסה של סכימת התצורה של שרת proxy ל-API שאליה תואם שרת ה-proxy הזה של ה-API. רק הערך הנתמך בשלב זה הואprimaryVersion 4 ו-minVersion 0. ההגדרה הזו יכולה להיות שישמשו בעתיד כדי לאפשר את האבולוציה של הפורמט של שרת ה-proxy ל-API. | 4.0 | לא |
Description |
תיאור טקסטואלי של שרת ה-proxy ל-API. אם התיאור יישלח, הוא יוצג ממשק המשתמש של ניהול Edge. | לא רלוונטי | לא |
DisplayName |
שם ידידותי למשתמש, שעשוי להיות שונה מהמאפיין name של
הגדרה של שרת proxy ל-API. |
לא רלוונטי | לא |
Policies |
רשימה של כללי מדיניות בספרייה /policies של שרת ה-proxy הזה ל-API. אתם
בדרך כלל רואים את הרכיב הזה רק כששרת ה-proxy ל-API נוצר באמצעות ממשק המשתמש של ניהול Edge.
זה פשוט 'מניפסט' בהגדרה הזו, כדי לאפשר לך לראות את התוכן
את ה-Proxy ל-API. |
לא רלוונטי | לא |
ProxyEndpoints |
רשימה של ProxyEndpoints בספרייה /proxies של ה-Proxy ל-API. שלך
בדרך כלל יראו את הרכיב הזה רק כששרת ה-proxy ל-API נוצר באמצעות Edge
ממשק המשתמש לניהול. זה פשוט 'מניפסט' שנועדה לספק שקיפות
של ה-API. |
לא רלוונטי | לא |
Resources |
רשימת משאבים (JavaScript, Python, Java, XSX) ב/resources
של ה-Proxy ל-API. בדרך כלל הרכיב הזה יוצג רק כששרת ה-proxy ל-API
נוצר באמצעות ממשק המשתמש של ניהול Edge. זה פשוט 'מניפסט' בהגדרה הזו,
מספקים שקיפות לגבי התוכן של שרת ה-proxy ל-API. |
לא רלוונטי | לא |
Spec |
מזהה את מפרט OpenAPI שמשויך לשרת ה-proxy ל-API. הערך
מוגדר לכתובת URL או לנתיב בחנות המפרטים. הערה: חנות המפרטים זמינה בממשק החדש של Edge בלבד. מידע נוסף על חנות מפרט הדף זמין במאמר ניהול ושיתוף מפרטים. |
לא רלוונטי | לא |
TargetServers |
רשימה של שרתי TargetEnd שיש אליהם הפניה בכל אחת מנקודות היעד של שרת ה-proxy ל-API. אתם בדרך כלל רואים את הרכיב הזה רק כששרת ה-proxy ל-API נוצר באמצעות ממשק המשתמש של ניהול Edge. זה פשוט 'מניפסט' בהגדרה הזו, כדי לאפשר לך לראות את התוכן את ה-Proxy ל-API. | לא רלוונטי | לא |
TargetEndpoints |
רשימה של TargetEndpoints בספרייה /targets של ה-Proxy ל-API. שלך
בדרך כלל יראו את הרכיב הזה רק כששרת ה-proxy ל-API נוצר באמצעות Edge
ממשק המשתמש לניהול. זה פשוט 'מניפסט' שנועדה לספק שקיפות
של ה-API. |
לא רלוונטי | לא |
ProxyEndpoint
התמונה הבאה מציגה את זרימת הבקשה/תגובה:
/apiproxy/proxies/default.xml
הגדרת ProxyEndpoint מגדירה את הממשק הנכנס (ללקוח) ל-API שרת proxy. כשמגדירים ProxyEndpoint, מגדירים תצורת רשת מגדיר את האופן שבו אפליקציות לקוח ('אפליקציות') צריכות להפעיל את ממשק ה-API דרך שרת proxy.
הדוגמה הבאה של הגדרות ProxyEndpoint תאוחסן במסגרת
/apiproxy/proxies
:
<ProxyEndpoint name="default"> <PreFlow/> <Flows/> <PostFlow/> <HTTPProxyConnection> <BasePath>/weather</BasePath> <VirtualHost>default</VirtualHost> </HTTPProxyConnection> <FaultRules/> <DefaultFaultRule/> <RouteRule name="default"> <TargetEndpoint>default</TargetEndpoint> </RouteRule> </ProxyEndpoint>
רכיבי התצורה הנדרשים בנקודת ProxyEndpoint בסיסית הם:
הגדרת נקודת קצה לשרת proxy Elements
שם | תיאור | ברירת מחדל | חובה? |
---|---|---|---|
ProxyEndpoint |
|||
name |
השם של נקודת ה-ProxyEndpoint. חייב להיות ייחודי בתצורת ה-Proxy ל-API, כאשר
(במקרים נדירים) מוגדרות מספר ProxyEndpoints. התווים שמותר לך להשתמש בהם
בשם מוגבלים לגורמים הבאים: A-Za-z0-9._\-$ % . |
לא רלוונטי | כן |
PreFlow |
הגדרת כללי המדיניות בתהליך ה-PreFlow של בקשה או תשובה. | לא רלוונטי | כן |
Flows |
הגדרת כללי המדיניות בתהליכים המותנים של בקשה או תשובה.
|
לא רלוונטי | כן |
PostFlow |
הגדרת כללי המדיניות בתהליך ה-PostFlow של בקשה או תשובה.
|
לא רלוונטי | כן |
HTTPProxyConnection |
הגדרה של כתובת הרשת ונתיב ה-URI המשויכים לשרת ה-proxy ל-API | ||
BasePath |
מחרוזת נדרשת שמזהה באופן ייחודי את נתיב ה-URI המשמש את Apigee Edge לניתוב הודעות נכנסות לשרת ה-proxy המתאים. BasePath הוא שבר URI (לדוגמה שימוש בתו כללי לחיפוש בנתיבים בסיסיים אפשר להשתמש בסימן "*" אחד או יותר תווים כלליים לחיפוש בנתיבים בסיסיים של proxy ל-API. לדוגמה, בסיס
הנתיב של חשוב: ב-Apigee אין תמיכה בשימוש בתו כללי לחיפוש "*" בתור הראשון
של נתיב בסיס. לדוגמה, אין תמיכה באפשרות הזו: |
/ | כן |
VirtualHost |
משייך שרת proxy של API לכתובות URL בסיסיות ספציפיות של סביבה. VirtualHost הוא תצורה בעלת שם שמגדירה כתובת URL אחת או יותר עבור סביבה. ה-VirtualHosts בעלי השם שהוגדרו ל-ProxyEndpoint קובעים את הדומיינים והיציאות שנחשף לשרת proxy של API, וכתוצאה מכך, את כתובת ה-URL שבה אפליקציות משתמשות כדי להפעיל API שרת proxy. כברירת מחדל, שני מארחים וירטואליים בעלי שם מוגדרים לסביבה:
|
ברירת מחדל | לא |
Properties |
ניתן להגדיר קבוצה של הגדרות אופציונליות של תצורת HTTP כמאפיינים של
<ProxyEndpoint> |
לא רלוונטי | לא |
FaultRules |
מגדיר את האופן שבו נקודת ה-ProxyEndpoint מגיבה לשגיאה. כלל שגוי מציין
פריטים:
מידע נוסף זמין בקטע טיפול בתקלות. |
לא רלוונטי | לא |
DefaultFaultRule |
טיפול בשגיאות (מערכת, העברה, העברת הודעות או מדיניות) שאינן מפורשות מטופל על ידי כלל שגיאה אחר. מידע נוסף זמין בקטע טיפול בתקלות. |
לא רלוונטי | לא |
RouteRule |
מגדיר את היעד של הודעות בקשה נכנסות אחרי עיבוד על ידי צינור עיבוד נתונים של בקשת ProxyEndpoint. בדרך כלל, ה-RoleRule מפנה לנקודת TargetEndpoint אבל היא יכולה גם להפנות ישירות לכתובת URL. | ||
Name |
מאפיין חובה, שמספק שם ל-RouteRule. התווים שיהיו
מורשים להשתמש בשם מוגבלים לפריטים הבאים: A-Za-z0-9._\-$ % . עבור
לדוגמה, Cat2 %_ הוא שם חוקי. |
לא רלוונטי | כן |
Condition |
הצהרה מותנית אופציונלית שמשמשת לניתוב דינמי בזמן ריצה. מותנה כללי נתיב שימושיים, לדוגמה, כדי לאפשר ניתוב מבוסס-תוכן לתמיכה בקצה העורפי ניהול גרסאות. | לא רלוונטי | לא |
TargetEndpoint |
מחרוזת אופציונלית שמזהה תצורה של נקודת קצה (TargetEndpoint) בעלת שם. A בעל שם
TargetEndpoint הוא כל נקודת קצה (TargetEndpoint) שמוגדרת באותו שרת proxy ל-API
הספרייה מתן שם לנקודת הקצה (TargetEndpoint) מציין לאן להעביר את הודעות הבקשה אחרי העיבוד על ידי צינור עיבוד הנתונים של הבקשות ProxyEndpoint. לתשומת ליבכם: זוהי אפשרות הגדרה אישית. נקודת ProxyEndpoint עשויה להפעיל כתובת URL ישירות. לדוגמה, משאב JavaScript או Java, פועל בתפקיד לקוח HTTP, עשוי לבצע את המשימה הבסיסית TargetEndpoint – העברת בקשות לשירות לקצה העורפי. |
לא רלוונטי | לא |
כתובת URL | מחרוזת אופציונלית שמגדירה כתובת של רשת יוצאת (שמכונה גם הפרמטר
ProxyEndpoint, עקיפה של כל ההגדרות של TargetEndpoint שעשויות להיות מאוחסנות
/targets |
לא רלוונטי | לא |
איך להגדיר RouteRules
נקודת קצה (TargetEndpoint) בעלת שם מפנה לקובץ תצורה ב-/apiproxy/targets
כדי
ה-RouteRule מעביר בקשה לאחר עיבוד על ידי ProxyEndpoint.
לדוגמה, ה-RouteRule הבא מתייחס להגדרה
/apiproxy/targets/myTarget.xml
:
<RouteRule name="default"> <TargetEndpoint>myTarget</TargetEndpoint> </RouteRule>
הפעלה של כתובת URL ישירה
נקודת ProxyEndpoint יכולה גם להפעיל שירות לקצה עורפי באופן ישיר. הפעלה של כתובת URL ישירה עוקפת כל
שנקראת TargetEndpoints של /apiproxy/targets
). לכן,
TargetEndpoint היא הגדרה אופציונלית של שרת proxy ל-API, למרות שבפועל, הפעלה ישירה
מ-ProxyEndpoint לא מומלץ.
לדוגמה, ה-RouteRule הבא שולח קריאת HTTP אל
http://api.mycompany.com/v2
<RouteRule name="default"> <URL>http://api.mycompany.com/v2</URL> </RouteRule>
נתיבים מותנים
ניתן לשרשר את הכללים כדי לתמוך בניתוב דינמי בזמן הריצה. בקשות נכנסות יכולות להיות ינותבו להגדרות אישיות של TargetEndpoint, ישירות לכתובות URL או לשילוב של שתיהן, שמבוסס על כותרות HTTP, תוכן ההודעה, פרמטרים של שאילתה או מידע הקשרי, יום, מקום וכו'.
כללי נתיב מותנים פועלים כמו הצהרות מותנות אחרות ב-Apigee Edge. פרטים נוספים זמינים בהפניה לתנאים ובהפניה למשתנים.
לדוגמה, השילוב הבא של RouteRule בודק קודם את הבקשה הנכנסת לצורך אימות
הערך של כותרת HTTP. אם כותרת ה-HTTP routeTo
כוללת את הערך
TargetEndpoint1
, לאחר מכן הבקשה מועברת לנקודת הקצה (TargetEndpoint) שנקראת
TargetEndpoint1
. אם לא, הבקשה הנכנסת תועבר אל
http://api.mycompany.com/v2
<RouteRule name="MyRoute"> <Condition>request.header.routeTo = "TargetEndpoint1"</Condition> <TargetEndpoint>TargetEndpoint1</TargetEndpoint> </RouteRule> <RouteRule name="default"> <URL>http://api.mycompany.com/v2</URL> </RouteRule>
נתיבים ריקים
ניתן להגדיר ערך null RouteRule כדי לתמוך בתרחישים שבהם הודעת הבקשה לא צריך להעביר אותם לנקודת הקצה (TargetEndpoint). האפשרות הזו שימושית כאשר ProxyEndpoint מבצע את כל את העיבוד הדרוש, לדוגמה על ידי שימוש ב-JavaScript כדי לקרוא לשירות חיצוני, או אחזור נתונים מחיפוש לשירותי ה-API מאגר מפתח/ערך.
לדוגמה, הקוד הבא מגדיר 'נתיב null':
<RouteRule name="GoNowhere"/>
נתיבי null מותנים יכולים להיות שימושיים. בדוגמה הבאה מוגדר נתיב null
מופעל כשכותרת ה-HTTP request.header.X-DoNothing
מכילה ערך שאינו
null
.
<RouteRule name="DoNothingOnDemand"> <Condition>request.header.X-DoNothing != null</Condition> </RouteRule>
חשוב לזכור, ניתן לשרשר את RouteRules, כך שנתיב null מותנה בדרך כלל יהיה רכיב של קבוצת RouteRules שנועדה לתמוך בניתוב מותנה.
שימוש מעשי בנתיב null מותנה יתמוך בשמירה במטמון. באמצעות הערך של המשתנה שמוגדר במדיניות 'מטמון', אפשר להגדיר שרת proxy ל-API שיריץ את null ניתוב כשמוצגת רשומה מהמטמון.
<RouteRule name="DoNothingUnlessTheCacheIsStale"> <Condition>lookupcache.LookupCache-1.cachehit is true</Condition> </RouteRule>
TargetEndpoint
נקודת קצה (TargetEndpoint) היא המקבילה היוצאת ל-ProxyEndpoint. נקודת קצה (TargetEndpoint) פועלת בתור לקוח לשירות לקצה עורפי או ל-API – הוא שולח בקשות ומקבל תגובות.
לשרת proxy ל-API אין צורך להגדיר TargetEndpoints. ניתן להגדיר שנקודות ה-ProxyEndpoints יקראו לכתובות URL ישירות. שרת proxy ל-API ללא TargetEndpoints מכיל בדרך כלל ProxyEndpoint קוראת ישירות לשירות לקצה העורפי, או שמוגדר לקריאה לשירות באמצעות Java או JavaScript.
הגדרה של נקודת קצה (endpoint) יעד
/targets/default.xml
נקודת הקצה (TargetEndpoint) מגדירה את החיבור היוצא מ-Apigee Edge לשירות אחר, או משאב.
דוגמה להגדרה של נקודת קצה (TargetEndpoint):
<TargetEndpoint name="default"> <PreFlow/> <Flows/> <PostFlow/> <HTTPTargetConnection> <URL>http://mocktarget.apigee.net</URL> <SSLInfo/> </HTTPTargetConnection> <FaultRules/> <DefaultFaultRule/> <ScriptTarget/> <LocalTargetConnection/> </TargetEndpoint>
הגדרה של נקודת קצה (endpoint) יעד Elements
נקודת קצה (TargetEnd) יכולה להפעיל יעד באחת מהדרכים הבאות:
- HTTPTargetConnection לקריאות HTTP(S)
- LocalTargetConnection לשרשור מקומי של שרת proxy לשרת proxy
- ScriptTarget בשיחות ל-Edge שמתארח סקריפט Node.js
צריך להגדיר רק אחד מהערכים האלה ב-TargetEndpoint.
שם | תיאור | ברירת מחדל | חובה? |
---|---|---|---|
TargetEndpoint |
|||
name |
השם של נקודת הקצה של היעד, חייב להיות ייחודי ב-Proxy ל-API
הגדרה אישית. השם של TargetEndPoint משמש ב-ProxyEndpoint RouteRule כדי:
בקשות ישירות לעיבוד יוצא. התווים שמותר להשתמש בהם בשם
מוגבלים לאחת מהאפשרויות הבאות: A-Za-z0-9._\-$ % . |
לא רלוונטי | כן |
PreFlow |
הגדרת כללי המדיניות בתהליך ה-PreFlow של בקשה או תשובה. | לא רלוונטי | כן |
Flows |
הגדרת כללי המדיניות בתהליכים המותנים של בקשה או תשובה.
|
לא רלוונטי | כן |
PostFlow |
הגדרת כללי המדיניות בתהליך ה-PostFlow של בקשה או תשובה.
|
לא רלוונטי | כן |
HTTPTargetConnection |
עם רכיבי הצאצא, מציין פוטנציאל חשיפה של משאב בקצה העורפי דרך HTTP. אם משתמשים ב-HTTPTargetConnection, לא מגדירים סוגים אחרים של חיבורי יעד (ScriptTarget או LocalTargetConnection). |
||
URL |
הגדרת כתובת הרשת של שירות הקצה העורפי שאליו עוברת נקודת הקצה (TargetEndpoint) הודעות בקשה. | לא רלוונטי | לא |
LoadBalancer |
מגדירה הגדרה אישית אחת או יותר בשם TargetServer. שרת TargetServer בעל שם אפשר להשתמש בהגדרות האישיות של איזון העומסים שמגדיר שתי נקודות קצה או יותר בחיבורים. אפשר גם להשתמש ב-TargetServers כדי להפריד בין הגדרות לשרת proxy ל-API כתובות URL של נקודות קצה (endpoints) של שירות לקצה העורפי. |
לא רלוונטי | לא |
Properties |
ניתן להגדיר קבוצה של הגדרות אופציונליות של תצורת HTTP כמאפיינים של
<TargetEndpoint> |
לא רלוונטי | לא |
SSLInfo |
אפשר לקבוע הגדרות TLS/SSL בנקודת קצה (TargetEndpoint) כדי לשלוט ב-TLS/SSL. בין שרת ה-proxy ל-API לבין שירות היעד. פרטים נוספים זמינים במאמר הגדרת יעד קצה של נקודת קצה (endpoint) של SSL/TLS. | לא רלוונטי | לא |
LocalTargetConnection |
כולל רכיבי הצאצא שלו, מציין משאב שניתן לגשת אליו באופן מקומי, תוך עקיפת הרשת
מאפיינים כמו איזון עומסים ומעבדי הודעות.
כדי לציין את משאב היעד, צריך לכלול את רכיב הצאצא של ה-APIProxy (עם רכיב ProxyEndpoint) או רכיב הצאצא של הנתיב. אפשר לקרוא מידע נוסף במאמר Chaining API proxy ל-API. את כל החלקים. אם משתמשים ב-LocalTargetConnection, לא צריך להגדיר סוגים אחרים של חיבורים ביעד (HTTPTargetConnection או ScriptTarget). |
||
APIProxy |
מציינת את השם של שרת proxy ל-API שישמש כיעד של בקשות. שרת ה-Proxy היעד חייבים להיות באותו ארגון ובאותם סביבה כמו בקשות השליחה של שרת ה-proxy. זהו חלופה לשימוש ברכיב 'נתיב'. | לא רלוונטי | לא |
ProxyEndpoint |
משמש יחד עם APIProxy כדי לציין את שם ה-ProxyEndpoint של שרת ה-Proxy כיעד. | לא רלוונטי | לא |
Path |
מציינת את נתיב נקודת הקצה של שרת proxy ל-API שישמש כיעד לבקשות. היעד שרת ה-proxy חייב להיות באותו ארגון ובאותו סביבה כמו הבקשות שנשלחות על ידי שרת ה-proxy. הזה הוא חלופה לשימוש ב-APIProxy. | לא רלוונטי | לא |
FaultRules |
מגדיר איך נקודת הקצה של היעד מגיבה לשגיאה. כלל שגוי מציין
פריטים:
מידע נוסף זמין בקטע טיפול בתקלות. |
לא רלוונטי | לא |
DefaultFaultRule |
טיפול בשגיאות (מערכת, העברה, העברת הודעות או מדיניות) שאינן מפורשות מטופל על ידי FaultRule אחר. מידע נוסף זמין בקטע טיפול בתקלות. |
לא רלוונטי | לא |
ScriptTarget |
|||
ResourceURL |
מגדיר את סוג המשאב (צומת) ואת השם של סקריפט Node.js הראשי מטמיעים את הפונקציונליות של TargetEndpoint.
צריך לכלול את הסקריפט בקובצי המשאבים של שרת ה-proxy של ה-API. ראו הוספת Node.js קיים לשרת proxy ל-API. אם משתמשים ב-ScriptTarget, לא מגדירים סוגים אחרים של חיבורי יעד (HTTPTargetConnection או LocalTargetConnection). |
לא רלוונטי | כן |
EnvironmentVariable |
אפשר גם להעביר משתני סביבה לסקריפט הראשי של Node.js. |
לא רלוונטי | לא |
Arguments |
אפשר גם להעביר ארגומנטים לסקריפט הראשי של Node.js. |
לא רלוונטי | לא |
הגדרה של נקודת קצה (endpoint) של יעד TLS/SSL
בדרך כלל, נקודות הקצה (TargetEndpoints) צריכות לנהל חיבורי HTTPS עם קצה עורפי הטרוגני . לכן יש תמיכה בכמה הגדרות תצורה של TLS/SSL.
TLS/SSL רכיבי ההגדרה של נקודת קצה (Target Endpoint)
שם | תיאור | ברירת מחדל | חובה? |
---|---|---|---|
SSLInfo |
|||
Enabled |
מציין אם TLS/SSL מופעל עבור נקודת הקצה.
ערך ברירת המחדל הוא true אם <URL> מציין את פרוטוקול HTTPS,
ו-false אם <URL> מציין HTTP. |
true אם <URL> מציין HTTPS |
לא |
TrustStore |
מאגר מפתחות שמכיל אישורי שרת מהימנים. | לא רלוונטי | לא |
ClientAuthEnabled |
הגדרה שמפעילה אימות של לקוח יוצא (TLS/SSL דו-כיווני) | false | לא |
KeyStore |
מאגר מפתחות שמכיל מפתחות פרטיים שמשמשים לאימות לקוח יוצא | לא רלוונטי | כן (אם ClientAuthEnabled הוא True) |
KeyAlias |
הכינוי של המפתח הפרטי שמשמש לאימות של לקוח יוצא | לא רלוונטי | כן (אם ClientAuthEnabled הוא True) |
Ciphers |
צפנים נתמכים ל-TLS/SSL (אבטחת שכבת התעבורה)/SSL. אם לא הוגדרו צפנים, אז כל הצפנים יהיו זמינים ל-JVM. כדי להגביל את הצפנים, צריך להוסיף את הרכיבים הבאים שבהם מפורטים הצפנים הנתמכים: <Ciphers> <Cipher>TLS_RSA_WITH_3DES_EDE_CBC_SHA</Cipher> <Cipher>TLS_RSA_WITH_DES_CBC_SHA</Cipher> </Ciphers> |
לא רלוונטי | לא |
Protocols |
פרוטוקולים נתמכים עבור TLS/SSL יוצא. אם לא מציינים פרוטוקולים, אז כל הפרוטוקולים יותר יהיו פרוטוקולים שזמינים ל-JVM. כדי להגביל את הפרוטוקולים, צריך להוסיף את הרכיבים הבאים שמפרטים את הפרוטוקולים הנתמכים: <Protocols> <Protocol>TLSv1.1</Protocol> <Protocol>TLSv1.2</Protocol> </Protocols> |
לא רלוונטי | לא |
CommonName |
אם צוין, ערך שעבורו ניתן לאמת את השם הנפוץ של אישור היעד. הערך הזה תקף רק להגדרות של TargetEndpoint ו-TargetServer. זו לא הסיבה תקפה לתצורות של VirtualHost. כברירת מחדל, הערך שצוין תואם בדיוק לשם הנפוץ של אישור היעד.
לדוגמה, שימוש ב- אופציונלי: ב-Apigee אפשר לבצע התאמה עם תווים כלליים לחיפוש באמצעות המאפיין לדוגמה, המערכת תתאים לשם ספציפי שצוין כ- <CommonName wildcardMatch="true">*.myhost.com</CommonName> |
לא רלוונטי | לא |
דוגמה לנקודת קצה (TargetEndpoint) לדוגמה שבה מופעל אימות של לקוח יוצא
<TargetEndpoint name="default"> <HttpTargetConnection> <URL>https://myservice.com</URL> <SSLInfo> <Enabled>true</Enabled> <ClientAuthEnabled>true</ClientAuthEnabled> <KeyStore>myKeystore</KeyStore> <KeyAlias>myKey</KeyAlias> <TrustStore>myTruststore</TrustStore> </SSLInfo> </HttpTargetConnection> </TargetEndpoint>
להוראות מפורטות, ראו הגדרת TLS מ-Edge לקצה העורפי (Cloud ו-Private Cloud).
באמצעות זרימה של משתני זרימה כדי להגדיר ערכי TLS/SSL באופן דינמי.
אפשר גם להגדיר פרטי TLS/SSL באופן דינמי כדי לתמוך בדרישות של זמן ריצה גמיש. לדוגמה, אם שרת ה-proxy שלכם מתחבר לשני יעדים שעשויים להיות שונים (יעד בדיקה יעד ייצור), תוכלו להגדיר ששרת ה-Proxy ל-API יזהה באופן פרוגרמטי את הסביבה שבה הוא ובהגדרה דינמית של הפניות למאגר המפתחות ולמאגר האישורים המתאימים. הבאים המאמר מהקהילה ב-Apigee מסביר את התרחיש הזה בפירוט ומספק מידע על API שניתן לפרוס דוגמאות לשרת proxy: https://community.apigee.com/articles/21424/dynamic-sslinfo-for-targetendpoint-using-variable.html.
בדוגמה הבאה מוצג האופן שבו התג <SSLInfo>
יוגדר
הגדרה של נקודת קצה (endpoint) – אפשר לספק את הערכים בזמן הריצה, למשל באמצעות Java
יתרונות מרכזיים, מדיניות JavaScript או מדיניות הקצאת הודעה. שימוש במשתני ההודעה
שכולל את הערכים שרוצים להגדיר.
אפשר להוסיף משתנים רק ברכיבים הבאים.
<SSLInfo> <Enabled>{myvars.ssl.enabled}</Enabled> <ClientAuthEnabled>{myvars.ssl.client.auth.enabled}</ClientAuthEnabled> <KeyStore>{myvars.ssl.keystore}</KeyStore> <KeyAlias>{myvars.ssl.keyAlias}</KeyAlias> <TrustStore>{myvars.ssl.trustStore}</TrustStore> </SSLInfo>
באמצעות הפניות להגדרת ערכי TLS/SSL באופן דינמי
כשמגדירים נקודת Endpoint שמשתמשת ב-HTTPS, צריך לקחת בחשבון את המקרה הזה כאשר פג התוקף של אישור ה-TLS/SSL, או ששינוי בתצורת המערכת מחייב לעדכן את האישור. לחשבון Edge להתקנת ענן פרטי, כשמגדירים TLS/SSL באמצעות ערכים סטטיים או באמצעות משתני זרימה, יש סיכוי שתצטרכו להפעיל מחדש את מעבדי ההודעות.
מידע נוסף זמין במאמר עדכון TLS (אבטחת שכבת התעבורה) אישור.
עם זאת, אפשר להגדיר ש-TargetEndpoint ישתמש בהפניה במקום זאת, keystore או Truststore. היתרון בשימוש בקובץ עזר הוא שניתן לעדכן הפניה ל-Keystore או ל-Truststore אחרים כדי לעדכן את אישור ה-TLS/SSL בלי שצריך להפעיל מחדש את מעבדי ההודעות.
לדוגמה, למטה מוצגת נקודת קצה (TargetEndpoint) שמשתמשת בהפניה למאגר המפתחות:
<SSLInfo> <Enabled>true</Enabled> <ClientAuthEnabled>false</ClientAuthEnabled> <KeyStore>ref://keystoreref</KeyStore> <KeyAlias>myKeyAlias</KeyAlias> </SSLInfo>
השתמשו בקריאה הבאה ל-POST API כדי ליצור את קובץ העזר שנקרא keystoreref:
curl -X POST -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \ -d '<ResourceReference name="keystoreref"> <Refers>myTestKeystore</Refers> <ResourceType>KeyStore</ResourceType> </ResourceReference>' -u email:password
בחומר העזר מופיעים השם של מאגר המפתחות והסוג שלו.
תוכלו להשתמש בקריאה הבאה ל-GET API כדי להציג את קובץ העזר:
curl -X GET https://api.enterprise.apigee.com/v1/o/[org_name}/e/{env_name}/references/keystoreref -u uname:password
כדי לשנות מאוחר יותר את ההפניה כך שתפנה למאגר מפתחות אחר, ולוודא שהכינוי כולל אותו שם, השתמשו בקריאת ה-PUT הבאה:
curl -X PUT -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references/keystoreref \ -d '<ResourceReference name="keystoreref"> <Refers>myNewKeystore</Refers> <ResourceType>KeyStore</ResourceType> </ResourceReference>' -u email:password
TargetEndpoint עם איזון עומסים ליעד
נקודות יעד (TargetEndpoints) תומכות באיזון עומסים במספר שרתי targetServer בעלי שם באמצעות שלושה עומסים אלגוריתמים של איזון.
להוראות מפורטות, אפשר לקרוא את המאמר איזון עומסים בין קצה עורפי שרתים.
כללי המדיניות
הספרייה /policies
בשרת proxy ל-API מכילה את כל כללי המדיניות שזמינים
מצורף ל-Fflows בשרת ה-proxy ל-API.
רכיבים של הגדרת מדיניות
שם | תיאור | ברירת מחדל | חובה? |
---|---|---|---|
Policy |
|||
name |
השם הפנימי של המדיניות. התווים שבהם אפשר להשתמש בשם הן מוגבלות
עד: אפשר להשתמש ברכיב |
לא רלוונטי | כן |
enabled |
צריך להגדיר את הערך הגדרת הערך |
true | לא |
continueOnError |
צריך להגדיר את הערך יש להגדיר ל- |
false | לא |
async |
הערה: המאפיין הזה לא מפעיל את המדיניות באופן אסינכרוני.
ברוב המקרים, משאירים את הערך הזה עם ברירת המחדל של כשהמדיניות מוגדרת לערך כדי להשתמש בהתנהגות אסינכרונית בשרתי proxy ל-API, ראו מודל אובייקט של JavaScript. |
false | לא |
קובץ מצורף של מדיניות
התמונה הבאה מציגה את רצף הביצוע של זרמי ה-Proxy ל-API:
כפי שמוצג למעלה:
כללי המדיניות מצורפים כשלבי עיבוד אל Flows. שם המדיניות משמש להפנות למדיניות שצריך לאכוף כשלב עיבוד. הפורמט של קובץ מצורף של מדיניות הוא הבאים:
<Step><Name>MyPolicy</Name></Step>
כללי מדיניות נאכפים לפי הסדר שבו הם מצורפים לתהליך. לדוגמה:
<Step><Name>FirstPolicy</Name></Step> <Step><Name>SecondPolicy</Name></Step>
הגדרת קבצים מצורפים של מדיניות Elements
שם | תיאור | ברירת מחדל | חובה? |
---|---|---|---|
Step |
|||
Name |
שם המדיניות שתבוצע באמצעות הגדרת השלב הזו. | לא רלוונטי | כן |
Condition |
הצהרה מותנית שקובעת אם המדיניות נאכפת או לא. אם למדיניות יש תנאי משויך, המדיניות תופעל רק אם הפונקציה מחזירה את הערך True. | לא רלוונטי | לא |
זרימה
ProxyEndpoint ו-TargetEndpoint מגדירים צינור עיבוד נתונים להודעות בקשה ותגובה בעיבוד. צינור עיבוד נתונים מורכב מתהליך של בקשה ומתהליך תגובה. כל בקשה התנועה ותהליך התגובה מחולקים לחלוקות משנה של 'preFlow', אפשרות אחת או יותר 'מותנית' או 'named' ותזרימיים, ו-PostFlow.
- PreFlow: תמיד יופעל. מתבצע לפני כל זרימה מותנית.
- PostFlow: תמיד מופעל. מופעל אחרי כל תהליכים מותנים.
בנוסף, אפשר להוסיף PostClientFlow ל-ProxyEndpoint, שמבצע הרצה אחרי
התגובה תוחזר לאפליקציית הלקוח ששלחה את הבקשה. רק המדיניות שלMessageLogging
אפשר לצרף תוסף יומן של Google Stackdriver
לתהליך הזה. PostClientFlow מפחית את זמן האחזור של שרת ה-proxy ל-API ומאפשר גישה למידע
רישום ביומן שלא מחושב עד שהתגובה מוחזרת ללקוח, למשל
client.sent.start.timestamp
ו-client.sent.end.timestamp
.הזרימה נמצאת בשימוש
בעיקר למדידה של מרווח הזמן בין חותמות הזמן של ההתחלה והסיום של התשובה
הודעה.
לצפייה בסרטון הדרכה קצר
סרטון: צפו בסרטון הקצר הזה בנושא שימוש ב-Message Logging PostClientFlow.
זאת דוגמה ל-PostClientFlow עם מדיניות רישום הודעות ביומן.
... <PostFlow name="PostFlow"> <Request/> <Response/> </PostFlow> <PostClientFlow> <Request/> <Response> <Step> <Name>Message-Logging-1</Name> </Step> </Response> </PostClientFlow> ...
צינור עיבוד הנתונים של שרת ה-proxy ל-API מבצע תהליכים לפי הרצף הבא:
צינור עיבוד נתונים:
- זרימה מקדימה של בקשת Proxy
- תהליכים מותנים לבקשת שרת proxy (אופציונלי)
- בקשת Proxy לאחר זרימה (PostFlow)
- זרימה מראש של בקשת היעד
- תהליכי יעד מותנים של בקשת יעד (אופציונלי)
- בקשת יעד ב-PostFlow
צינור עיבוד נתונים:
- השלמה מראש של תגובת היעד
- תהליכים מותנים של תגובת יעד (אופציונלי)
- תגובת יעד ב-PostFlow
- זרימה מקדימה של תגובת שרת proxy
- תהליכים מותנים לתגובת שרת proxy (אופציונלי)
- תגובת שרת proxy לאחר ההעלאה
- תגובת PostClientFlow (אופציונלי)
צריך להגדיר ב-ProxyEndpoint רק את ה-flows עם קבצים מצורפים למדיניות הגדרות של TargetEndpoint. יש לציין PreFlow ו-PostFlow רק ב-ProxyEndpoint או הגדרה של נקודת קצה (TargetEndpoint) כשצריך לאכוף מדיניות במהלך טרום-Flow או PostFlow בעיבוד.
בניגוד לתהליכים מותנים, הסדר של הרכיבים PreFlow ו-PostFlow הוא לא חשוב – שרת ה-proxy ל-API תמיד יבצע כל אחת מהן בנקודה המתאימה בצינור עיבוד הנתונים, ללא קשר למיקום שבו הן מופיעות בהגדרה של נקודת הקצה.
זרימות מותנות
שרתי ProxyEndpoints ו-TargetEndpoints תומכים במספר בלתי מוגבל של תהליכים מותנים שנקראה 'זרימה בעלת שם').
שרת ה-proxy ל-API בודק את התנאי שצוין בתהליך המותנה, ואם התנאי תואם, שלבי העיבוד בתהליך המותנה מתבצעים על ידי שרת ה-proxy של ה-API. אם שהתנאי לא מתקיים, המערכת תעקוף את שלבי העיבוד בתהליך המותנה. מותנה מוערכים לפי הסדר המוגדר בשרת ה-proxy ל-API, והראשון שהתנאי שלו הוא ובוצעה.
כשמגדירים תהליכים מותנים, אפשר להחיל שלבי עיבוד בשרת proxy ל-API מבוסס על:
- כתובת אתר מבוקשת
- פועל של HTTP (GET/PUT/POST/DELETE)
- הערך של פרמטר שאילתה, כותרת ופרמטר טופס
- סוגים רבים אחרים של תנאים
לדוגמה, התהליך המותנה הבא מציין שהתהליך מתבצע רק כאשר
הנתיב של משאב הבקשה הוא /accesstoken
. כל בקשה נכנסת עם
נתיב /accesstoken
יגרום לביצוע התהליך הזה, יחד עם כל כללי מדיניות
שמצורפות לתהליך. אם נתיב הבקשה לא כולל את הסיומת
/accesstoken
, לאחר מכן התהליך לא יתבצע (למרות שתהליך מותנה אחר אחר
ייתכן).
<Flows> <Flow name="TokenEndpoint"> <Condition>proxy.pathsuffix MatchesPath "/accesstoken"</Condition> <Request> <Step> <Name>GenerateAccessToken</Name> </Step> </Request> </Flow> </Flows>
רכיבים של הגדרת זרימה
שם | תיאור | ברירת מחדל | חובה? |
---|---|---|---|
Flow |
צינור עיבוד בקשות או תגובות המוגדר על ידי ProxyEndpoint, או TargetEndpoint | ||
Name |
השם הייחודי של הזרימה. | לא רלוונטי | כן |
Condition |
הצהרה מותנית שמבצעת הערכה של משתנים או יותר כדי לקבל את הערך True או לא נכון. כל ה-Flow, מלבד הסוגים המוגדרים מראש של PreFlow ו-PostFlow, חייבים להגדיר לתנאי הביצוע שלהם. | לא רלוונטי | כן |
Request |
צינור עיבוד הנתונים המשויך ל'בקשה לעיבוד הודעות' | לא רלוונטי | לא |
Response |
צינור עיבוד הנתונים שמשויך לעיבוד הודעות של תגובה | לא רלוונטי | לא |
עיבוד שלבים
הסדר הרציף של תהליכים מותנים נאכף על ידי Apigee Edge. זרימות מותנות
מתבצע מלמעלה למטה. התהליך המותנה הראשון שהתנאי שלו שווה
הפונקציה true
תופעל, ורק פעולה מותנית אחת תתבצע.
לדוגמה, בתצורת הזרימה הבאה, כל בקשה נכנסת שלא כוללת
סיומת הנתיב /first
או /second
תגרום ל-ThirdFlow
להוציא לפועל, לאכוף את המדיניות שנקראת Return404
.
<Flows> <Flow name="FirstFlow"> <Condition>proxy.pathsuffix MatchesPath "/first"</Condition> <Request> <Step><Name>FirstPolicy</Name></Step> </Request> </Flow> <Flow name="SecondFlow"> <Condition>proxy.pathsuffix MatchesPath "/second"</Condition> <Request> <Step><Name>FirstPolicy</Name></Step> <Step><Name>SecondPolicy</Name></Step> </Request> </Flow> <Flow name="ThirdFlow"> <Request> <Step><Name>Return404</Name></Step> </Request> </Flow> </Flows>
משאבים
משאבים (קובצי משאבים לשימוש בשרתי proxy ל-API) הם סקריפטים, קוד וטרנספורמציות XSL שאפשר לצרף ל-Fflows באמצעות כללי מדיניות. האירועים האלה מופיעים בקטע 'סקריפטים' הקטע ב-API עורך proxy בממשק המשתמש של הניהול.
מידע נוסף זמין במאמר קובצי משאבים בסוגי המשאבים.
אפשר לאחסן משאבים בשרת proxy ל-API, בסביבה או בארגון. בכל אחד מהמקרים, המשאב מוזכר בשם במדיניות. שירותי API מטפלים בשם על ידי מעבר מה-API שרת proxy לסביבה, לרמת הארגון.
כללי המדיניות יכולים להפנות למשאב שמאוחסן ברמת הארגון בכל סביבה. כללי המדיניות בסביבה הזו יכולים להפנות למשאב שמאוחסן ברמת הסביבה. א' רק כללי מדיניות באותו שרת proxy של ה-API יכולים להפנות למשאב שמאוחסן ברמת ה-proxy ל-API.