מוצג המסמך של Apigee Edge.
עוברים אל
מסמכי תיעוד של Apigee X. מידע
כדי לשלב תוסף בשרת proxy ל-API, צריך להשתמש במדיניות בנושא תוספי יתרונות מרכזיים.
תוסף מעניק גישה למשאב ספציפי שהוא חיצוני ל-Apigee Edge. המשאב יכול להיות שירותי Google Cloud Platform, כמו Cloud Storage או Cloud Speech-to-Text. אבל המשאב יכול להיות כל משאב חיצוני שאפשר לגשת אליו באמצעות HTTP או HTTPS.
לסקירה כללית של תוספים, ראו מהם תוספים? למדריך מבוא, ראו מדריך: הוספת תוסף ושימוש בו.
לפני שניגשים לתוסף מהמדיניות בנושא תוספי יתרונות מרכזיים, צריך להוסיף, להגדיר ולפרוס את התוסף מחבילת תוספים שכבר מותקנת בארגון שלכם ב-Apigee Edge.
דוגמאות
לפניכם מדיניות לדוגמה לשימוש עם התוסף Cloud Logging:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="false" enabled="true" name="Logging-Extension">
<DisplayName>Logging Extension</DisplayName>
<Connector>cloud-extension-sample</Connector>
<Action>log</Action>
<Input>{
"logName" : "example-log",
"metadata" : "test-metadata",
"message" : "This is a test"
}</Input>
<Output>cloud-extension-example-log</Output>
</ConnectorCallout>
ראו מדריך: שימוש בתוספים כדי מדריך מלא באמצעות תוסף Cloud Logging.
במאמר סקירה כללית בנושא תוספים תוכלו לראות דוגמאות לכל התוספים הזמינים.
מידע על המדיניות בנושא יתרונות מרכזיים של תוספים
מומלץ להשתמש במדיניות בנושא תוספי יתרונות מרכזיים כשרוצים להשתמש בתוסף מוגדר כדי לגשת למשאב חיצוני מתוך שרת proxy ל-API.
לפני שמשתמשים במדיניות הזו, צריך:
- מספר פרטים על המשאב החיצוני שאליו רוצים לגשת במסגרת המדיניות הזו. הפרטים האלה יהיו ספציפיים למשאב. לדוגמה, אם המדיניות תיגש למסד הנתונים שלכם ב-Cloud Firestore, תצטרכו לדעת מהו שם האוסף והמסמך שאתם רוצים ליצור או לגשת אליהם. בדרך כלל משתמשים במידע ספציפי למשאבים כדי להגדיר את הבקשות והטיפול בתגובות במדיניות הזו.
- תוסף נוסף, הוגדר ונפרס בסביבה שבה שרת ה-proxy של ה-API יופעל. במילים אחרות, אם משתמשים במדיניות הזו כדי לגשת לשירות מסוים של Google Cloud, תוסף שנפרס עבור השירות הזה חייב להיות קיים בסביבה. פרטי התצורה כוללים בדרך כלל את המידע הנדרש לצמצום גישה למשאב, כמו מזהה פרויקט או שם חשבון.
שימוש במדיניות 'יתרונות מרכזיים' ב-PostClientFlow
אפשר להפעיל את המדיניות בנושא ExtensionCallout (תוסף יתרונות מרכזיים) מ-PostClientFlow של שרת proxy ל-API. ה-PostClientFlow יופעל אחרי שהתגובה נשלחת ללקוח המבקש, כדי להבטיח שכל המדדים זמינים לרישום ביומן. מידע נוסף על השימוש ב-PostClientFlow מופיע בחומר עזר בנושא תצורה של שרת proxy ל-API.
אם רוצים להשתמש במדיניות 'תוסף יתרונות מרכזיים' כדי להפעיל את תוסף Google Cloud Logging
מ-PostClientFlow, צריך לוודא שהדגל features.allowExtensionsInPostClientFlow
הערך שהוגדר הוא true
בארגון שלך.
אם אתם לקוחות של Apigee Edge עבור ענן ציבורי, הדגל
features.allowExtensionsInPostClientFlow
מוגדר כ-true
כברירת מחדל.אם אתם לקוחות של Apigee Edge לענן פרטי, API לעדכון מאפייני הארגון כדי להגדיר את הדגל
features.allowExtensionsInPostClientFlow
ל-true
.
כל ההגבלות על הפעלת מדיניות MessageLogging מ-PostClientFlow לחול גם על המדיניות בנושא תוספי יתרונות מרכזיים. מידע נוסף זמין במאמר הערות שימוש.
הפניה לרכיב
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="false" enabled="true" name="Extension-Callout-1">
<DisplayName/>
<Connector/>
<Action/>
<Input/>
<Output/>
</ConnectorCallout>
<ConnectorCallout> מאפיינים
<ConnectorCallout name="Extension-Callout-1" continueOnError="false" enabled="true" async="false">
בטבלה הבאה מתוארים מאפיינים שמשותפים לכל רכיבי ההורה של המדיניות:
מאפיין | תיאור | ברירת מחדל | נוכחות |
---|---|---|---|
name |
השם הפנימי של המדיניות. הערך של המאפיין אפשר להשתמש ברכיב |
לא רלוונטי | חובה |
continueOnError |
צריך להגדיר את הערך יש להגדיר ל- |
false | אופציונלי |
enabled |
צריך להגדיר את הערך צריך להגדיר את הערך |
true | אופציונלי |
async |
המאפיין הזה הוצא משימוש. |
false | הוצא משימוש |
<DisplayName> רכיב
צריך להשתמש בנוסף למאפיין name
כדי להוסיף תווית למדיניות
עורך proxy של ממשק משתמש לניהול עם שם אחר בשפה טבעית.
<DisplayName>Policy Display Name</DisplayName>
ברירת מחדל |
לא רלוונטי אם משמיטים את הרכיב הזה, הערך של המאפיין |
---|---|
נוכחות | אופציונלי |
סוג | מחרוזת |
<Action> רכיב
הפעולה שנחשפת לתוסף שהמדיניות צריכה להפעיל.
<Action>action-exposed-by-extension</Action>
ברירת מחדל | ללא |
---|---|
נוכחות | חובה |
סוג | מחרוזת |
כל תוסף חושף קבוצת פעולות משלו שמעניקות גישה לפונקציונליות של המשאב שהתוסף מייצג. אפשר לחשוב על פעולה כפונקציה באמצעות המדיניות הזו, ולהשתמש בתוכן של הרכיב <Input>
כדי לציין את הארגומנטים של הפונקציה. התגובה של הפעולה תאוחסן במשתנה שציינתם עם הרכיב <Output>
.
רשימה של הפונקציות של התוסף מופיעה בחומר העזר לגבי התוסף שאליו מתבצעת קריאה לפי המדיניות הזו.
<מחבר> רכיב
שם התוסף שהוגדר לשימוש. זהו השם ברמת הסביבה, שניתן לתוסף כשהוא הוגדר לפריסה בסביבה.
<Connector>name-of-configured-extension</Connector>
ברירת מחדל | ללא |
---|---|
נוכחות | חובה |
סוג | מחרוזת |
לתוסף יש ערכי תצורה שעשויים להיות שונים מתוסף אחר שנפרס, בהתאם לאותה חבילת תוסף. ערכי התצורה האלה יכולים לייצג הבדלים חשובים בפונקציונליות של סביבת זמן הריצה בין תוספים שהוגדרו מאותה חבילה, לכן חשוב לציין את התוסף הנכון שצריך להפעיל.
<Input> רכיב
קובץ JSON שמכיל את גוף הבקשה לשליחה לתוסף.
<Input><![CDATA[ JSON-containing-input-values ]]></Input>
ברירת מחדל | ללא |
---|---|
נוכחות | אופציונלי או חובה, בהתאם לתוסף. |
סוג | מחרוזת |
זהו למעשה ארגומנט לפעולה שאתם מציינים באמצעות הרכיב <Action>
. הערך של הרכיב <Input>
ישתנה בהתאם לתוסף ולפעולה שמבצעים. במסמכי התיעוד של חבילת התוספים יש פרטים על המאפיינים של כל פעולה.
חשוב לשים לב: הרבה ערכים של רכיבי <Input>
יפעלו בצורה תקינה בלי להיות מוקפים כקטע <![CDATA[]]>
, אבל כללי JSON מאפשרים ערכים שלא ינותחו כ-XML. מומלץ לתחום את ה-JSON כקטע CDATA
כדי למנוע שגיאות בניתוח של סביבת זמן הריצה.
ערך הרכיב <Input>
הוא בפורמט JSON תקין, שהמאפיינים שלו מציינים ערכים
כדי לשלוח לפעולת התוסף ולהפעיל. לדוגמה,
תוסף Google Cloud Logging
הפעולה log
של התוסף מקבלת ערכים שמציינים את היומן שבו יש לכתוב (logName
),
מטא-נתונים שייכללו ברשומה (metadata
) ובהודעה ביומן (data
).
לדוגמה:
<Input><![CDATA[{
"logName" : "example-log",
"metadata" : {
"resource": {
"type": "global",
"labels": {
"project_id": "my-test"
}
}
},
"message" : "This is a test"
}]]></Input>
שימוש במשתני זרימה בקובץ JSON <Input>
התוכן של <Input>
נחשב לתוכן
תבנית הודעות. כלומר, שם משתנה שמוקף בסוגריים מסולסלים יוחלף בזמן הריצה בערך של המשתנה שאליו מתבצעת ההפניה.
לדוגמה, אפשר לשכתב את בלוק <Input>
הקודם כדי להשתמש במשתנה הזרימה client.ip
של הלקוח שקורא לשרת ה-proxy ל-API:
<Input><![CDATA[{
"logName" : "example-log",
"metadata" : {
"resource": {
"type": "global",
"labels": {
"project_id": "my-test"
}
}
},
"message" : "{client.ip}"
}]]></Input>
אם אתם רוצים שערך מאפיין ב-JSON יהיה מוקף במירכאות בזמן הריצה, הקפידו להשתמש במירכאות כפולות בקוד ה-JSON. הדבר נכון גם אם מציינים משתנה זרימה כערך נכס JSON שצריך לפתור בזמן הריצה.
הדוגמה הבאה של <Input>
כוללת שתי הפניות למשתני זרימה:
<Input><![CDATA[{
"logName" : "example-log",
"metadata" : {my.log.entry.metadata},
"message" : "{client.ip}"
}]]></Input>
בזמן הריצה, הערכים של מאפיין JSON אמורים להיפתר באופן הבא:
- הערך של המאפיין
logName
– ליטרל המחרוזתexample-log
. - ערך המאפיין
metadata
– הערך של משתנה הזרימהmy.log.entry.metadata
ללא מירכאות. האפשרות הזו יכולה להיות שימושית אם הערך של המשתנה הוא בעצמו JSON שמייצג אובייקט. - ערך המאפיין
message
– הערך של משתנה הזרימהclient.ip
עם מירכאות כפולות.
<Output> רכיב
שם המשתנה שמאחסן את התגובה של פעולת התוסף.
<Output>variable-name</Output> <!-- The JSON object inside the variable is parsed -->
או
<Output parsed="false">variable-name</Output> <!-- The JSON object inside the variable is raw, unparsed -->
ברירת מחדל | ללא |
---|---|
נוכחות | אופציונלי או חובה, בהתאם לתוסף. |
סוג | אובייקט או מחרוזת שנותחו, בהתאם להגדרת המאפיין parsed . |
כשהתגובה מתקבלת, ערך התגובה מוצב במשתנה שאתם מציינים כאן, שם אפשר לגשת אליו מקוד Proxy אחר של API.
האובייקטים של תגובת התוסף הם בפורמט JSON. יש שתי אפשרויות לטיפול ב-JSON של המדיניות:
- ניתוח (ברירת המחדל): המדיניות מנתחת את אובייקט ה-JSON ויוצרת משתנים באופן אוטומטי עם נתוני ה-JSON. לדוגמה, אם קובץ ה-JSON מכיל
"messageId" : 12345;
ונותנים את השם של משתנה הפלטextensionOutput
, אפשר לגשת למזהה ההודעה הזה בכללי מדיניות אחרים באמצעות המשתנה{extensionOutput.messageId}
. - לא נותח: משתנה הפלט מכיל את תגובת ה-JSON הגולמית, שלא נותחה מהתוסף. (אם רוצים, עדיין אפשר לנתח את ערך התגובה בשלב נפרד באמצעות מדיניות JavaScript).
<Output> מאפיינים
מאפיין | תיאור | ברירת מחדל | נוכחות |
---|---|---|---|
מנותח | לנתח את אובייקט ה-JSON שמוחזר מהתוסף, וכך לאפשר לכללי מדיניות אחרים לגשת לנתונים שבאובייקט ה-JSON כמשתנים. | true | אופציונלי |
משתני זרימה
ללא.
קודי שגיאה
השגיאות שמוחזרות מכללי המדיניות של Apigee Edge הן בפורמט עקבי שמתואר בחומר העזר בנושא שגיאות מדיניות.
בקטע הזה מתוארות הודעות השגיאה ומשתני הזרימה שמוגדרים כאשר המדיניות הזו גורמת לשגיאה. חשוב לדעת את המידע הזה אם אתם מפתחים כללי כשל עבור שרת proxy. מידע נוסף זמין במאמרים מה צריך לדעת על שגיאות מדיניות ואיך לטפל בשגיאות.
שגיאות בזמן ריצה
השגיאות האלה עלולות להתרחש כשהמדיניות מופעלת.
שם השגיאה | סטטוס HTTP | הסיבה |
---|---|---|
הביצוע נכשל | 500 |
התוסף מגיב עם שגיאה. |
שגיאות פריסה
השגיאות האלה עשויות להתרחש במהלך פריסת שרת proxy שמכיל את המדיניות הזו.
שם השגיאה | מופיע כאשר | תיקון |
---|---|---|
InvalidConnectorInstance |
הרכיב <Connector> ריק. |
build |
ConnectorInstanceDoesNotExists |
התוסף שצוין ברכיב <Connector>
לא קיים בסביבה. |
build |
InvalidAction |
האלמנט <Action> במדיניות בנושא תוספי יתרונות מרכזיים חסר או מוגדר לערך ריק. |
build |
AllowExtensionsInPostClientFlow |
אסור להשתמש במדיניות תוספי יתרונות מרכזיים בתהליך פרסום של לקוח. | build |