כרגע מוצג התיעוד של Apigee Edge.
כניסה למסמכי התיעוד של
Apigee X. מידע
מה
מספקת גישה מבוססת-מדיניות לחנות Key Value Map (KVM) שזמינה ב-Apigee Edge. אפשר לשמור, לאחזר ולמחוק צמדי מפתח/ערך ממפות קיימות בעלות שם, על ידי הגדרת כללי מדיניות KeyValueMapOperations שמציינים פעולות PUT, GET או DELETE. (לפחות אחת מהפעולות האלה צריכה להתבצע על ידי המדיניות).
סרטונים
כדאי לצפות בסרטונים הבאים כדי לקבל מידע נוסף על מכונות KVM.
וידאו | התיאור |
---|---|
למה כדאי להשתמש במפות עם ערך מרכזי? | למה צריך מכונות KVM ואיך הן פועלות? |
יצירת KVM באמצעות ממשק משתמש ואחזור KVM בזמן ריצה | יצירת KVM, אחזור הערך באמצעות מדיניות KVM והחדרת הערך לבקשת ה-API באמצעות משתני זרימה. |
יצירה ועדכון של KVM בזמן הריצה של API | יצירת KVM בזמן הריצה של API באמצעות מדיניות KVM. |
שימוש במטמון של KVM כדי לשפר את הביצועים | אפשר לשפר את הביצועים של מדיניות KVM באמצעות שמירת הנתונים במטמון. |
אחסון KVM מוצפן | אפשר לאחסן מידע רגיש ב-KVM בפורמט מוצפן ולאחזר את הערך בזמן הריצה באמצעות מדיניות KVM ומשתנים פרטיים. |
ניהול הגישה באמצעות היקף ה-KVM | הגבלת KVM לארגון, לסביבה, לשרת proxy של API או לגרסה של שרת proxy של API באמצעות מאפיין היקף המדיניות של KVM. |
מחיקת רשומות KVM בזמן ריצה של API | מוחקים רשומות KVM בזמן הריצה של API באמצעות פעולת DELETE במדיניות KVM. |
טעימות
PUT KVM עם ליטרל
כשהמדיניות הבאה פועלת, נוצר KVM מוצפן בשם
FooKVM
, ואז יוצר מפתח בשם FooKey_1
עם
שני ערכים שהוגדרו עם מחרוזות מילוליות foo
ו-bar
(לא מוגדר עם ערכים שחולצו ממשתנים). כשמוסיפים GET
את המפתח בדוגמה הבאה, צריך לציין מספר אינדקס כדי לאחזר את הערך הרצוי.
<KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="FooKVM" mapIdentifier="FooKVM"> <DisplayName>FooKVM</DisplayName> <ExpiryTimeInSecs>86400</ExpiryTimeInSecs> <Scope>environment</Scope> <Put> <Key> <Parameter>FooKey_1</Parameter> </Key> <Value>foo</Value> <Value>bar</Value> </Put> </KeyValueMapOperations>
שימו לב שההיקף הוא 'environment'. פירוש הדבר הוא שאפשר לראות את ה-KVM בממשק המשתמש של הניהול בקטע APIs > Environment Configuration > Key Value Maps. כל מכונות ה-KVM שמוצגות בדף הזה נכללות בסביבה שנבחרה.
קבלת KVM משפה מילולית
במסגרת המדיניות הזו, המערכת בוחנת את מפת FooKVM
מהדוגמה הקודמת, מקבלת
את הערך השני (index="2) מהמפתח FooKey_1
ומאחסנת אותו במשתנה
שנקרא foo_variable
.
<KeyValueMapOperations mapIdentifier="FooKVM" async="false" continueOnError="false" enabled="true" name="GetKVM"> <DisplayName>GetKVM</DisplayName> <ExpiryTimeInSecs>86400</ExpiryTimeInSecs> <Scope>environment</Scope> <Get assignTo="foo_variable" index="2"> <Key> <Parameter>FooKey_1</Parameter> </Key> </Get> </KeyValueMapOperations>
PUT KVM עם משתנה
דוגמה פשוטה למפת ערך מפתח שימושית היא שירות לקיצור כתובות URL. אפשר להגדיר את מפת הערכים של המפתח כך שיאחסן כתובות URL מקוצרות יחד עם כתובות URL מלאות תואמות.
דוגמת המדיניות הזו יוצרת מפה של ערכי מפתח. המדיניות מוסיפה מפתח עם שני ערכים משויכים למפת מפתח/ערך בשם "urlMapper".
<KeyValueMapOperations name="putUrl" mapIdentifier="urlMapper"> <Scope>apiproxy</Scope> <Put override="true"> <Key> <Parameter ref="urlencoding.requesturl.hashed"/> </Key> <Value ref="urlencoding.longurl.encoded"/> <Value ref="request.queryparam.url"/> </Put> </KeyValueMapOperations>
המפתח בדוגמה הזו, urlencoding.requesturl.hashed
, הוא דוגמה
למשתנה מותאם אישית. כתובת ה-URL של הבקשה המגובבת תיווצר באמצעות קוד (לדוגמה, JavaScript או Java)
ולאחר מכן תישמר במשתנה הזה, ושם המדיניות KeyValueMapOperations תוכל לגשת אליה.
לכל מפתח, requesturl.hashed
, נשמרים שני ערכים:
- התוכן של המשתנה המותאם אישית שנקרא
urlencoding.longurl.encoded
- תוכן המשתנה שהוגדר מראש
request.queryparam.url
לדוגמה, כשהמדיניות מופעלת בזמן ריצה, הערכים של המשתנים יכולים להיות כך:
urlencoding.requesturl.hashed: ed24e12820f2f900ae383b7cc4f2b31c402db1be
urlencoding.longurl.encoded: http://tinyurl.com/38lwmlr
request.queryparam.url: http://apigee.com
מפת המפתח/ערך הבאה ייווצרו במאגר המפתח/ערך של Edge ויהיו בהיקף של שרת proxy ל-API שאליו המדיניות מצורפת:
{ "entry" :[ { "name" : "ed24e12820f2f900ae383b7cc4f2b31c402db1be", "value" : "http://tinyurl.com/38lwmlr,http://apigee.com" } ], "name" : "urlMapper" }
הרשומה תישמר עד שתימחק. רשומות של מפתחות/ערכים מאוחסנות במכונות של Edge שפועלות בענן.
קבלת KVM ממשתנה
דוגמה פשוטה למפת ערך מפתח שימושית היא שירות 'קיצור דרך' של כתובות URL. אפשר להגדיר את מפת הערכים של המפתח כך שיאחסן כתובות URL מקוצרות יחד עם כתובות URL מלאות תואמות.
כדי לאחזר את הערך של רשומת מפתח/ערך במפה, כמו זה שמופיע בכרטיסייה KeyValueMapOperations PUT, מגדירים מדיניות לקבלת מפת ערכי המפתח:
<KeyValueMapOperations name="getUrl" mapIdentifier="urlMapper"> <Scope>apiproxy</Scope> <Get assignTo="urlencoding.shorturl" index='1'> <Key> <Parameter ref="urlencoding.requesturl.hashed"/> </Key> </Get> </KeyValueMapOperations>
לאחר שהמדיניות הזו מיושמת, אם הערך של
המשתנה urlencoding.requesturl.hashed
הוא
ed24e12820f2f900ae383b7cc4f2b31c402db1be
, המשתנה המותאם אישית שנקרא
urlencoding.shorturl
יוגדר עם הערך
http://tinyurl.com/38lwmlr
.
עכשיו, אחרי שהנתונים אוחזרו, כללי מדיניות וקוד אחרים יכולים לגשת אליהם על ידי חילוץ הערך מהמשתנים האלה.
קבלת ערך מוצפן מ-KVM
אם מפת ערכי מפתח מוצפנת, אפשר לאחזר ערכים באמצעות הקידומת "private.
"
בערך המאפיין assignTo
. בדוגמה הזו, המשתנה private.encryptedVar
מכיל את הערך המפוענח של מפתח foo
במפת ערכי המפתח. למידע על יצירת מפות מוצפנות של ערכי מפתח, קראו את נושאי "create" ב-Key/Value Maps management API.
<KeyValueMapOperations name="getEncrypted" mapIdentifier="encrypted_map"> <Scope>apiproxy</Scope> <Get assignTo="private.encryptedVar" index='1'> <Key> <Parameter>foo</Parameter> </Key> </Get> </KeyValueMapOperations>
עכשיו, אחרי שהנתונים אוחזרו, כללי מדיניות וקוד אחרים יכולים לגשת אליהם על ידי חילוץ הערך מהמשתנה הזה.
הפניה לרכיב
בהפניה לרכיב מתוארים הרכיבים והמאפיינים של מדיניות KeyValueMapOperations:
<KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="Key-Value-Map-Operations-1" mapIdentifier="urlMapper" > <DisplayName>Key Value Map Operations 1</DisplayName> <Scope>environment</Scope> <ExpiryTimeInSecs>300</ExpiryTimeInSecs> <InitialEntries> <Entry> <Key> <Parameter>key_name_literal</Parameter> </Key> <Value>value_literal</Value> </Entry> <Entry> <Key> <Parameter>variable_name</Parameter> </Key> <Value>value_1_literal</Value> <Value>value_2_literal</Value> </Entry> </InitialEntries> <Put override="false"> <Key> <Parameter>key_name_literal</Parameter> </Key> <Value ref="variable_name"/> </Put> <Get assignTo="myvar" index="1"> <Key> <Parameter ref="variable_name"/> </Key> </Get> <Delete> <Key> <Parameter>key_name_literal</Parameter> </Key> </Delete> </KeyValueMapOperations>
מאפייני <KeyValueMapOperations>
בדוגמה הבאה מוצגים המאפיינים בתג <KeyValueMapOperations>
:
<KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="Key-Value-Map-Operations-1" mapIdentifier="map_name">
בטבלה הבאה מפורטים המאפיינים הספציפיים לתג <KeyValueMapOperations>
:
מאפיין | התיאור | ברירת המחדל | נוכחות |
---|---|---|---|
mapIdentifier |
מציין מזהה שיש להשתמש בו כשניגשים למפה שנוצרה על ידי המדיניות הזו או בממשק המשתמש של הניהול. שם ה-KVM הוא תלוי אותיות רישיות ב-Apigee Edge ל-Public Cloud.
לדוגמה, אם מחריגים את המאפיין הזה, ייעשה שימוש ב-KVM בשם בטווח של Organization/environment/apiproxy, אפשר להשתמש
במאפיין |
לא רלוונטי | אופציונלי |
בטבלה הבאה מפורטים המאפיינים שמשותפים לכל רכיבי ההורה של המדיניות:
מאפיין | התיאור | ברירת המחדל | נוכחות |
---|---|---|---|
name |
השם הפנימי של המדיניות. הערך של המאפיין אפשר להשתמש באלמנט |
לא רלוונטי | נדרש |
continueOnError |
צריך להגדיר את הערך צריך להגדיר את הערך |
false | אופציונלי |
enabled |
צריך להגדיר את הערך צריך להגדיר את הערך |
true | אופציונלי |
async |
המאפיין הזה הוצא משימוש. |
false | הוצא משימוש |
רכיב <DisplayName>
יש להשתמש במאפיין הזה בנוסף למאפיין name
כדי להוסיף למדיניות
בכלי לעריכת שרת ה-proxy לניהול ממשק משתמש עם שם אחר בשפה טבעית.
<DisplayName>Policy Display Name</DisplayName>
ברירת המחדל |
לא רלוונטי אם משמיטים את הרכיב הזה, המערכת משתמשת בערך של מאפיין |
---|---|
נוכחות | אופציונלי |
תיאור | מחרוזת |
רכיב <Delete>
מחיקת צמד מפתח/ערך שצוין. יש להשתמש לפחות באחד מהערכים <Get>
,
<Put>
או <Delete>
.
חשוב לציין את שם ה-KVM באמצעות המאפיין mapIdentifier
ברכיב ההורה. לדוגמה:
<Delete> <Key> <Parameter>key_name_literal</Parameter> </Key> </Delete>
ברירת המחדל | לא רלוונטי |
---|---|
נוכחות | חובה אם <Get> או <Put> לא קיימים. |
תיאור | לא רלוונטי |
רכיב <Entry>
ערכי בסיס למפות של ערכי מפתח, שמאוכלסים במפת ערכי המפתח אחרי האתחול.
גודל המפתח מוגבל ל-2KB ב-Edge for Public Cloud. לדוגמה:
<InitialEntries> <Entry> <Key> <Parameter>key_name_literal</Parameter> </Key> <Value>v1</Value> </Entry> <Entry> <Key> <Parameter>key_name_variable</Parameter> </Key> <Value>v3</Value> <Value>v4</Value> </Entry> </InitialEntries>
ברירת המחדל | לא רלוונטי |
---|---|
נוכחות | אופציונלי |
תיאור | לא רלוונטי |
אלמנט <ExclusiveCache>
הוּצא משימוש. במקומו צריך להשתמש ברכיב <Scope>
.
רכיב <ExpiryTimeInSecs>
המדיניות קובעת את משך הזמן בשניות שאחריו Edge ירענן את הערך ששמור במטמון מה-KVM שצוין.
ערך של 0 או -1, או ללא הרכיב הזה, משמעו שנעשה שימוש בערך ברירת המחדל של 300 שניות. לדוגמה:
<ExpiryTimeInSecs>600</ExpiryTimeInSecs>
ברירת המחדל | 300 (5 דקות) |
---|---|
נוכחות | אופציונלי |
תיאור | מספר שלם |
KVM הוא מנגנון לשמירה על עקביות לטווח ארוך, שמאחסן מפתחות וערכים במסד הנתונים של NoSQL. לכן קריאה מ-KVM בזמן ריצה עשויה להאט את הביצועים של שרת ה-proxy. כדי לשפר את הביצועים, ב-Edge יש מנגנון מובנה לשמירת מפתחות/ערכים של KVM בזיכרון בזמן ריצה. המדיניות הזו בנושא פעולות KVM תמיד קוראת מהמטמון לפעולות GET.
הרכיב <ExpiryTimeInSecs>
מאפשר לקבוע את משך הזמן שבו המפתחות/הערכים
שנעשה בהם שימוש במדיניות יאוחסנו במטמון, לפני שהמערכת תרענן אותם שוב מה-KVM. עם זאת,
יש כמה הבדלים בין האופן שבו פעולות GET ו-PUT משפיעות על תפוגת המטמון.
GET – בפעם הראשונה שפעולת KVM GET מופעלת, המפתחות/הערכים המבוקשים מה-KVM (שהשם שלהם צוין במאפיין השורש mapIdentifier
של המדיניות) נטענים במטמון, שם הם נשארים לפעולות הבאות של GET עד שמתרחשת אחת מהפעולות הבאות:
- התוקף של מספר השניות שצוין ב-
<ExpiryTimeInSecs>
יפוג.
או - פעולת PUT במדיניות KVM מחליפה את הערכים הקיימים (כמו שמוסבר בהמשך).
PUT – פעולת PUT כותבת מפתחות/ערכים ל-KVM שצוין. אם ה-PUT
כותב מפתח שכבר קיים במטמון, מתבצע רענון מיידי של המטמון הזה
ושומר עכשיו
את הערך החדש עבור מספר השניות שצוין ברכיב <ExpiryTimeInSecs>
של המדיניות.
דוגמה – שמירה במטמון של KVM
- פעולת GET מאחזרת את הערך של Rank (דירוג), שמוסיף את הערך '10' למטמון. הערך
<ExpiryTimeInSecs>
במדיניות הוא 60. - 30 שניות לאחר מכן, מדיניות GET תופעל שוב ומאחזרת את "10" מהמטמון.
- 5 שניות לאחר מכן, מדיניות PUT מעדכנת את הערך של 'rating' ל-'8', וה-
<ExpiryTimeInSecs>
במדיניות PUT הוא 20. המטמון מתרענן מיד עם הערך החדש, שמוגדר עכשיו להישאר במטמון למשך 20 שניות. (אם ה-PUT לא היה קורה, המטמון שאוכלס במקור על ידי ה-GET הראשונה עדיין היה קיים למשך 30 שניות נוספות, שנשארו מ-60 השניות המקוריות). - 15 שניות לאחר מכן, שיטת GET אחרת מופעלת ומאחזרת את הערך "8".
רכיב <Get>
מאחזרת את הערך של המפתח שצוין. יש להשתמש לפחות באחד מהערכים <Get>
,
<Put>
או <Delete>
.
חשוב לציין את שם ה-KVM באמצעות המאפיין mapIdentifier
ברכיב ההורה.
אפשר לכלול במדיניות מספר בלוקים של Get
כדי לאחזר מספר פריטים מ-KVM.
ברירת המחדל | לא רלוונטי |
---|---|
נוכחות | חובה אם <Put> או <Delete>
לא קיימים. |
תיאור | לא רלוונטי |
קבלת פריט יחיד מ-KVM
<Get assignTo="myvar" index="1"> <Key> <Parameter>key_name_literal</Parameter> </Key> </Get>
שליפה של מספר פריטים מ-KVM
בדוגמה הבאה, נניח ש-KVM עם המפתחות והערכים הבאים. בנוסף לשמירת רשימה פעילה של הסרטים הפופולריים ביותר בכל הזמנים, ה-KVM שומר את שם הבמאי של כל הסרטים הגדולים.
מפתח | Value |
---|---|
top_movies | הנסיכה הכלה,הסנדק,האזרח קיין |
אזרח קיין | אורסון וולס |
כלה נסיכה | רוב ריינר |
הסנדק | פרנסיס פורד קופולה |
זוהי הגדרה של מדיניות KVM שבה אפשר להשתמש כדי לאחזר את הסרט הפופולרי ביותר העדכני ואת שם הבמאי שלו:
<Get assignTo="top.movie.pick" index="1"> <Key> <Parameter>top_movies</Parameter> </Key> </Get> <Get assignTo="movie.director"> <Key> <Parameter ref="top.movie.pick"/> </Key> </Get>
כשמתבצעת קריאה לשרת ה-proxy של ה-API, המערכת של Edge יוצרת את המשתנים הבאים שאפשר להשתמש בהם בתהליך ה-API של שרת ה-proxy:
top.movie.pick=Princess Bride
movie.director=Rob Reiner
מאפיינים
בטבלה הבאה מפורטים המאפיינים של הרכיב <Get>
:
מאפיין | התיאור | ברירת המחדל | נוכחות |
---|---|---|---|
assignTo |
המשתנה שאליו יש להקצות את הערך שאוחזר. אם מפת ערכי המפתח מוצפנת, צריך להתחיל את שם assignTo בערך " <Get assignTo="private.myvar"> המדיניות מציגה הודעת שגיאה כשמנסים לאחזר מפה מוצפנת של ערכי מפתח בלי להשתמש בקידומת. התחילית, שנדרשת למטרות אבטחה בסיסית במהלך ניפוי באגים, מסתירה את הערכים המוצפנים מ-API Proxy Trace ומסשנים של ניפוי באגים. למידע על יצירת מפות מוצפנות של ערכי מפתח, אפשר לעיין בקטעי 'create' על ה-API לניהול מפתחות/ערך של מפות ויצירה ועריכה של מפות של ערכי מפתח של סביבה. |
לא רלוונטי | נדרש |
index |
מספר האינדקס (באינדקס מבוסס 1) של הפריט שיש לאחזר ממפתח מרובה ערכים.
לדוגמה, אם מציינים לדוגמה, אפשר לעיין בכרטיסייה 'קבלת ערך מוצפן מ-KVM' בקטע דגימות. |
לא רלוונטי | אופציונלי |
רכיב <InitialEntries>
ערכי בסיס למפות של ערכי מפתח, שמאוכלסים במפת ערכי המפתח כשהוא מופעל.
חשוב לציין את שם ה-KVM באמצעות המאפיין mapIdentifier
ברכיב ההורה. לדוגמה:
<InitialEntries> <Entry> <Key> <Parameter>key_name_literal</Parameter> </Key> <Value>v1</Value> </Entry> <Entry> <Key> <Parameter>key_name_variable</Parameter> </Key> <Value>v3</Value> <Value>v4</Value> </Entry> </InitialEntries>
כשמשתמשים ברכיב הזה, כששומרים את המדיניות בממשק המשתמש לניהול בגרסה פרוסה של שרת ה-proxy, או פורסים את חבילת שרת ה-API של שרת ה-API שמכילה את המדיניות עם הרכיב הזה, המפתחות נוצרים באופן אוטומטי ב-KVM (כשאינם מוצפנים). אם הערכים במדיניות שונים מהערכים ב-KVM, הערכים ב-KVM מוחלפים כששרת ה-proxy נפרס. המפתחות או הערכים החדשים יתווספו ל-KVM הקיים לצד המפתחות או הערכים הקיימים.
מפתחות וערכים שמאכלס את הרכיב הזה חייבים להיות ליטרלים. לדוגמה, הרכיב <Parameter
ref="request.queryparam.key">
לא נתמך ברכיב הזה.
גודל המפתח מוגבל ל-2KB גם ל-Edge for Public Cloud וגם ל-Edge for Private Is. ערך ה-KVM מוגבל ל-2KB.
כדי ליצור KVM מוצפן, יש להשתמש ב-Key/Value Maps Management API.
ברירת המחדל | לא רלוונטי |
---|---|
נוכחות | אופציונלי |
תיאור | לא רלוונטי |
רכיב <Key>
מציינת את המפתח ברשומת מפתח/ערך במפה. מפתח יכול להיות מורכב, כלומר אפשר לצרף יותר מפרמטר אחד כדי ליצור את המפתח. לדוגמה, יכול להיות שהשילוב של userID
עם
role
יאפשר ליצור key
. לדוגמה:
<Key> <Parameter>key_name_literal</Parameter> </Key>
חשוב לעיין באלמנט <Parameter> כדי לקבל פרטים על אופן ההגדרה של שם המפתח.
ב-Edge for Public Cloud, גודל המפתח מוגבל ל-2KB. אפשר לקרוא מידע נוסף על ההבדלים בין Edge for Public Cloud API לבין Private Cloud API.
ברירת המחדל | לא רלוונטי |
---|---|
נוכחות | אופציונלי |
תיאור | לא רלוונטי |
רכיב <Parameter>
מציינת את המפתח בצמד של מפתח/ערך. הרכיב הזה מציין את השם בזמן היצירה, ההעברה, האחזור או המחיקה של צמד מפתח/ערך.
אפשר לציין את השם באמצעות:
-
מחרוזת מילולית
<Key> <Parameter>literal</Parameter> </Key>
-
משתנה שצריך לאחזר בזמן הריצה, באמצעות המאפיין
ref
<Key> <Parameter ref="variable_name"/> </Key>
-
שילוב של ליטרלים והפניות משתנים
<Key> <Parameter>targeturl</Parameter> <Parameter ref="apiproxy.name"/> <Parameter>weight</Parameter> </Key>
כשהרכיב Key כולל מספר רכיבי Parameter, מחרוזת המפתח בפועל היא שרשור הערכים של כל פרמטר, בצירוף קו תחתון כפול. לדוגמה, בדוגמה שלמעלה, אם המשתנה apiproxy.name
מכיל את הערך 'abc1', המפתח בפועל יהיה targeturl__abc1__weight
.
בין אם מנסים לקבל, לעדכן או למחוק רשומת מפתח/ערך, שם המפתח חייב להתאים לשם של המפתח במפת ערכי המפתח. להנחיות, אפשר לקרוא את המאמר בנושא ציון ואחזור של שמות מפתחות.
ברירת המחדל | לא רלוונטי |
---|---|
נוכחות | נדרש |
תיאור | מחרוזת |
מאפיינים
בטבלה הבאה מפורטים המאפיינים של הרכיב <Parameter>
:
מאפיין | התיאור | ברירת המחדל | נוכחות |
---|---|---|---|
ר' | קובעת את השם של משתנה שהערך שלו מכיל את השם המדויק של המפתח שרוצים ליצור, לקבל או למחוק. | לא רלוונטי | נדרש אם לא צוין ערך מילולי בין התג הפותח לתג הסוגר. אסור אם ניתן ערך מילולי. |
רכיב <Put>
כותב צמד מפתח/ערך במפת ערכי מפתח, בין אם מפת ערכי המפתח מוצפנת
ובין אם לא מוצפנת. אם מפת ערכי המפתח שצוינה במאפיין mapIdentifier
ברכיב ההורה לא קיימת, המפה נוצרת באופן אוטומטי (כלא מוצפנת). אם מפת ערכי המפתח כבר קיימת, המפתח/הערך יתווסף אליה.
כדי ליצור מפת ערכי מפתח מוצפנת באמצעות Key/Value Maps management API, תוכלו גם לקרוא את המאמר יצירה ועריכה של מפות ערכי מפתח של סביבה כדי ליצור מכונות KVM מוצפנים עם רמת סביבה בממשק המשתמש.
<Put override="false"> <Key> <Parameter ref="mykeyvar"/> </Key> <Value ref="myvalvar1"/> </Put>
ברירת המחדל | לא רלוונטי |
---|---|
נוכחות | חובה אם <Get> או <Delete>
לא קיימים. |
תיאור | לא רלוונטי |
מאפיינים
בטבלה הבאה מפורטים המאפיינים של הרכיב <Put>
:
מאפיין | התיאור | ברירת המחדל | נוכחות |
---|---|---|---|
שינוי מברירת המחדל |
אם היא מוגדרת לערך |
false |
אופציונלי |
רכיב <היקף>
מגדיר את גבול הנגישות למפות של ערכי מפתח. היקף ברירת המחדל הוא environment
, כלומר, כברירת מחדל, רשומות המפות משותפות לכל שרתי ה-proxy של ממשק ה-API שפועלים בסביבה (לדוגמה, בדיקה או ייצור). אם מגדירים את ההיקף ל-apiproxy
, רק שרת ה-API של ה-API שכותב את הערכים במפה יכול לגשת לרשומות במפת ערכי המפתח.
חשוב לזכור שכשניגשים לרשומה של מפה או מפה, צריך לציין את אותו ערך היקף שבו השתמשת
כשהמפה נוצרה. לדוגמה, אם המפה נוצרה בהיקף של apiproxy
, צריך להשתמש בהיקף apiproxy
בעת אחזור הערכים שלו, הוספת שינויים או מחיקת רשומות.
<Scope>environment</Scope>
ברירת המחדל | environment |
---|---|
נוכחות | אופציונלי |
תיאור | מחרוזת |
הערכים האפשריים: |
|
הרכיב <Value>
מציינת את הערך של מפתח. אפשר לציין את הערך כמחרוזת מילולית או באמצעות
המאפיין ref
, כמשתנה שיאוחזר בזמן ריצה:
<!-- Specify a literal value --> <Value>literal<Value>
או:
<!-- Specify the name of variable value to be populated at run time. --> <Value ref="variable_name"/>
אפשר גם לכלול כמה רכיבי <Value>
כדי לציין ערך שמורכב
מכמה חלקים. הערכים משולבים בזמן הריצה.
בדוגמה הבאה מוסיפים שני מפתחות ל-KVM:
- מפתח
k1
עם הערכיםv1,v2
- מפתח
k2
עם הערכיםv3,v4
<InitialEntries> <Entry> <Key> <Parameter>k1</Parameter> </Key> <Value>v1</Value> <Value>v2</Value> </Entry> <Entry> <Key> <Parameter>k2</Parameter> </Key> <Value>v3</Value> <Value>v4</Value> </Entry> </InitialEntries>
בדוגמה הבאה נוצר מפתח אחד עם שני ערכים. נניח ששם הארגון
הוא foo_org
, שם ה-proxy של ה-API הוא bar
והסביבה היא
test
:
- מפתח
foo_org
עם הערכיםbar,test
<Put> <Key> <Parameter ref="organization.name"/> </Key> <Value ref="apiproxy.name"/> <Value ref="environment.name"/> </Put>
ברירת המחדל | לא רלוונטי |
---|---|
נוכחות | נדרש |
תיאור | מחרוזת |
מאפיינים
בטבלה הבאה מפורטים המאפיינים של הרכיב <Value>
:
מאפיין | התיאור | ברירת המחדל | נוכחות |
---|---|---|---|
ר' | ההגדרה הזאת קובעת את השם של משתנה שהערך שלו מכיל את ערכי המפתח שרוצים להגדיר. | לא רלוונטי | נדרש אם לא צוין ערך מילולי בין התג הפותח לתג הסוגר. אסור אם ניתן ערך מילולי. |
הפניה לשגיאות
השגיאות שהוחזרו ממדיניות Edge הן בפורמט עקבי, כמו שמתואר בחומר העזר בנושא קוד שגיאה.
בקטע הזה מתוארים קודי התקלות והודעות השגיאה שמוחזרים, ומשתני השגיאה שמוגדרים על ידי Edge כשהמדיניות הזו גורמת לשגיאה. חשוב לדעת אם אתם מפתחים כללים לתיקון תקלות. מידע נוסף זמין במאמר מה צריך לדעת על שגיאות מדיניות ועל טיפול בפגמים.
שגיאות בזמן ריצה
השגיאות האלה יכולות להתרחש כשהמדיניות מופעלת.
קוד שגיאה | סטטוס HTTP | סיבה | תיקון |
---|---|---|---|
steps.keyvaluemapoperations.SetVariableFailed |
500 |
השגיאה הזו מתקבלת כשמנסים לאחזר ערך ממפת ערכי מפתח מוצפנת ולהגדיר את הערך למשתנה שהשם שלו לא כולל את הקידומת |
build |
steps.keyvaluemapoperations.UnsupportedOperationException |
500 |
השגיאה הזו מתרחשת אם המאפיין |
build |
שגיאות בפריסה
השגיאות האלה יכולות להתרחש כשפורסים שרת proxy שכולל את המדיניות הזו.
שם השגיאה | סיבה | תיקון |
---|---|---|
InvalidIndex |
אם המאפיין index שצוין ברכיב <Get> במדיניות של פעולות במפת ערך המפתח הוא
אפס או מספר שלילי, הפריסה של שרת ה-proxy של ה-API תיכשל. האינדקס מתחיל
מ-1 , כך שאינדקס של אפס או מספר שלם שלילי נחשב לא חוקי.
|
build |
KeyIsMissing |
השגיאה הזו מתרחשת אם הרכיב <Key> חסר לגמרי, או אם הרכיב <Parameter>
חסר ברכיב <Key> מתחת ל-<Entry> של הרכיב <InitialEntries>
במדיניות הפעולות במפת ערכי המפתח.
|
build |
ValueIsMissing |
השגיאה הזו מתרחשת אם הרכיב <Value> חסר מתחת לרכיב <Entry> של
הרכיב <InitialEntries> במדיניות הפעולות במפת ערכי המפתח. |
build |
סכימות
הערות על שימוש
במאמר עבודה עם מפות של ערכי מפתח תוכלו למצוא סקירה כללית על המפות של ערכי המפתח.
מאגר מיפוי של ערכי מפתח מספק מנגנון פשוט ויעיל לשמירה על נתונים בפורמט
צמדי מפתח/ערך. אפשר לגשת אליהם בזמן הריצה באמצעות מדיניות או קוד. מפה מכילה נתונים שרירותיים בפורמט key=value
.
לדוגמה localhost=127.0.0.1
, zip_code=94110
או
first_name=felix
. בדוגמה הראשונה, localhost
הוא מפתח, ו-127.0.0.1
הוא value. כל צמד מפתח/ערך מאוחסן כרשומה
במפת ערכי המפתח. מפה של ערכי מפתח יכולה לאחסן ערכים רבים.
בהמשך מוצגת דוגמה לשימוש במפות של ערכי מפתח. נניח שאתם צריכים לאחסן רשימה של כתובות IP שמשויכות לסביבות שונות של קצה עורפי. אפשר ליצור מפת ערכי מפתח בשם ipAddresses
שמכילה רשימה של צמדי מפתח/ערך כרשומות. לדוגמה, ה-JSON הזה יכול לייצג מפה כזו:
{ "entry" : [ { "name" : "Development", "value" : "65.87.18.18" }, { "name" : "Staging", "value" : "65.87.18.22" } ], "name" : "ipAddresses" }
אפשר להשתמש במבנה הזה כדי ליצור מאגר של כתובות IP שכללי מדיניות יכולים להשתמש בהן בזמן הריצה, כדי לאכוף הוספה של כתובות IP לרשימת ההיתרים או רשימת ישויות שנחסמו, כדי לבחור באופן דינמי כתובת יעד עורפית וכן הלאה. בדרך כלל, המדיניות KeyValueMapOperations משמשת לאחסון או אחזור של מידע לטווח ארוך שיש לעשות בו שימוש חוזר בעסקאות מרובות של בקשה/תגובה.
אפשר לשנות מפות של מפתח/ערכים באמצעות המדיניות KeyValueMapOperations, או ישירות דרך ממשק ה-API לניהול Apigee Edge. לפרטים על ה-API של מפתח/ערך מפות של ארגון, אפשר לעיין בחומר העזר בנושא Management API. אפשר להשתמש ב-API, למשל, כדי להעלות קבוצות נתונים גדולות למאגר המפתח/הערכים, או ליצור סקריפטים כדי לנהל רשומות של מפתח/ערך במפה. צריך ליצור מפת מפתח/ערך באמצעות ה-API לפני שתהיה לך אפשרות לגשת אליה במדיניות KeyValueMapOperations.
ציון ואחזור של שמות מפתחות
באמצעות הרכיבים <Parameter>
ו-<Value>
אפשר לציין ערך מילולי (כאשר הערך נמצא בין התג הפותח לתג הסוגר) או להשתמש
במאפיין ref
כדי לציין את השם של משתנה שיש להשתמש בערך שלו
בזמן ריצה.
לרכיב הפרמטר צריך להיות אזכור מיוחד, כי הוא קובע את שם המפתח שנוצר ואת שם המפתח שרוצים לאחזר או למחוק. בהמשך מפורטות שתי דוגמאות. הראשון מציין שם מפתח באופן מילולי, והשני מציין שם מפתח באמצעות משתנה. נניח שהפריטים הבאים משמשים ליצירת מפתחות ב-KVM:
<Parameter>key_name_literal</Parameter> <Parameter ref="key.name.variable"/>
במקרה הראשון, הערך המילולי של 'key_name_literal' מאוחסן ב-KVM בתור שם המפתח. במקרה השני, הערך שנמצא ב-key.name.variable
הופך לשם של המפתח ב-KVM. לדוגמה, אם key.name.variable
מכיל את הערך foo
, השם של המפתח יהיה "foo".
כשרוצים לאחזר את המפתח ואת ערך המפתח באמצעות פעולת GET (או למחוק באמצעות פעולת DELETE), ההגדרה <Parameter> צריכה להתאים לשם המפתח ב-KVM. לדוגמה, אם שם המפתח ב-KVM הוא "foo", אפשר לציין את הערך המילולי באמצעות <Parameter>foo</Parameter>
או לציין משתנה שמכיל את הערך המדויק "foo", באופן הבא: <Parameter ref="variable.containing.foo"/>
.