מדיניות KeyValueMapsOperations

כרגע מוצג התיעוד של Apigee Edge.
כניסה למסמכי התיעוד של Apigee X.
מידע

סמל של פעולות במפת ערך מפתח מממשק המשתמש של Edge

מה

מספקת גישה מבוססת-מדיניות לחנות 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. לדוגמה, foobar שונה מ-FooBar.

אם מחריגים את המאפיין הזה, ייעשה שימוש ב-KVM בשם kvmap.

בטווח של Organization/environment/apiproxy, אפשר להשתמש במאפיין mapIdentifier כדי לציין שם של מפה משלכם.

לא רלוונטי אופציונלי

בטבלה הבאה מפורטים המאפיינים שמשותפים לכל רכיבי ההורה של המדיניות:

מאפיין התיאור ברירת המחדל נוכחות
name

השם הפנימי של המדיניות. הערך של המאפיין name יכול להכיל אותיות, מספרים, רווחים, מקפים, קווים תחתונים ונקודות. הערך יכול להיות באורך של עד 255 תווים.

אפשר להשתמש באלמנט <DisplayName> כדי להוסיף למדיניות בכלי לעריכת שרת ה-proxy לניהול ממשק משתמש עם שם בשפה טבעית אחרת.

לא רלוונטי נדרש
continueOnError

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

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

false אופציונלי
enabled

צריך להגדיר את הערך true כדי לאכוף את המדיניות.

צריך להגדיר את הערך false כדי להשבית את המדיניות. המדיניות לא תיאכף גם אם היא תישאר מצורפת לזרימה.

true אופציונלי
async

המאפיין הזה הוצא משימוש.

false הוצא משימוש

רכיב <DisplayName>

יש להשתמש במאפיין הזה בנוסף למאפיין name כדי להוסיף למדיניות בכלי לעריכת שרת ה-proxy לניהול ממשק משתמש עם שם אחר בשפה טבעית.

<DisplayName>Policy Display Name</DisplayName>
ברירת המחדל

לא רלוונטי

אם משמיטים את הרכיב הזה, המערכת משתמשת בערך של מאפיין name של המדיניות.

נוכחות אופציונלי
תיאור מחרוזת

רכיב <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

  1. פעולת GET מאחזרת את הערך של Rank (דירוג), שמוסיף את הערך '10' למטמון. הערך <ExpiryTimeInSecs> במדיניות הוא 60.
  2. 30 שניות לאחר מכן, מדיניות GET תופעל שוב ומאחזרת את "10" מהמטמון.
  3. 5 שניות לאחר מכן, מדיניות PUT מעדכנת את הערך של 'rating' ל-'8', וה-<ExpiryTimeInSecs> במדיניות PUT הוא 20. המטמון מתרענן מיד עם הערך החדש, שמוגדר עכשיו להישאר במטמון למשך 20 שניות. (אם ה-PUT לא היה קורה, המטמון שאוכלס במקור על ידי ה-GET הראשונה עדיין היה קיים למשך 30 שניות נוספות, שנשארו מ-60 השניות המקוריות).
  4. 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 בערך "private.". לדוגמה:

<Get assignTo="private.myvar">

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

למידע על יצירת מפות מוצפנות של ערכי מפתח, אפשר לעיין בקטעי 'create' על ה-API לניהול מפתחות/ערך של מפות ויצירה ועריכה של מפות של ערכי מפתח של סביבה.

לא רלוונטי נדרש
index

מספר האינדקס (באינדקס מבוסס 1) של הפריט שיש לאחזר ממפתח מרובה ערכים. לדוגמה, אם מציינים index=1, הפונקציה מחזירה את הערך הראשון ומקצים אותו למשתנה assignTo. אם לא מציינים ערך לאינדקס, כל הערכים של הרשומה הזו מוקצים למשתנה כ-java.util.List.

לדוגמה, אפשר לעיין בכרטיסייה 'קבלת ערך מוצפן מ-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>:

מאפיין התיאור ברירת המחדל נוכחות
שינוי מברירת המחדל

אם היא מוגדרת לערך true, היא מבטלת את הערך של מפתח.

false אופציונלי

רכיב <היקף>

מגדיר את גבול הנגישות למפות של ערכי מפתח. היקף ברירת המחדל הוא environment, כלומר, כברירת מחדל, רשומות המפות משותפות לכל שרתי ה-proxy של ממשק ה-API שפועלים בסביבה (לדוגמה, בדיקה או ייצור). אם מגדירים את ההיקף ל-apiproxy, רק שרת ה-API של ה-API שכותב את הערכים במפה יכול לגשת לרשומות במפת ערכי המפתח.

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

<Scope>environment</Scope>
ברירת המחדל environment
נוכחות אופציונלי
תיאור מחרוזת
הערכים האפשריים:
  • organization
  • environment
  • apiproxy
  • policy (גרסה של שרת proxy ל-API)

הרכיב <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

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

steps.keyvaluemapoperations.UnsupportedOperationException 500

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

שגיאות בפריסה

השגיאות האלה יכולות להתרחש כשפורסים שרת proxy שכולל את המדיניות הזו.

שם השגיאה סיבה תיקון
InvalidIndex אם המאפיין index שצוין ברכיב <Get> במדיניות של פעולות במפת ערך המפתח הוא אפס או מספר שלילי, הפריסה של שרת ה-proxy של ה-API תיכשל. האינדקס מתחיל מ-1, כך שאינדקס של אפס או מספר שלם שלילי נחשב לא חוקי.
KeyIsMissing השגיאה הזו מתרחשת אם הרכיב <Key> חסר לגמרי, או אם הרכיב <Parameter> חסר ברכיב <Key> מתחת ל-<Entry> של הרכיב <InitialEntries> במדיניות הפעולות במפת ערכי המפתח.
ValueIsMissing השגיאה הזו מתרחשת אם הרכיב <Value> חסר מתחת לרכיב <Entry> של הרכיב <InitialEntries> במדיניות הפעולות במפת ערכי המפתח.

סכימות

הערות על שימוש

במאמר עבודה עם מפות של ערכי מפתח תוכלו למצוא סקירה כללית על המפות של ערכי המפתח.

מאגר מיפוי של ערכי מפתח מספק מנגנון פשוט ויעיל לשמירה על נתונים בפורמט צמדי מפתח/ערך. אפשר לגשת אליהם בזמן הריצה באמצעות מדיניות או קוד. מפה מכילה נתונים שרירותיים בפורמט 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"/>.

נושאים קשורים