מדיניות KeyValueMapOperations

אתם צופים במסמכי התיעוד של Apigee Edge.
כדאי לעיין במסמכי התיעוד של Apigee X.
מידע

סמל של פעולות במפת צמדי מפתח/ערך בממשק המשתמש של Edge

מה

מאפשרת גישה למאגר של מפת מפתח-ערך (KVM) שזמין ב-Apigee Edge על סמך מדיניות. אפשר לאחסן, לאחזר ולמחוק צמדי מפתח/ערך ממפות קיימות עם שם באמצעות הגדרת מדיניות של KeyValueMapOperations שמציינת פעולות PUT,‏ GET או DELETE. (המדיניות צריכה לבצע לפחות אחת מהפעולות האלה).

סרטונים

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

וידאו תיאור
למה כדאי להשתמש במפות של זוגות מפתח/ערך? כאן מוסבר למה צריך KVM ואיך הוא עובד.
יצירת KVM באמצעות ממשק המשתמש ואחזור KVM בזמן ריצה יוצרים KVM, מאחזרים את הערך שלו באמצעות מדיניות KVM ומזריקים את הערך לבקשת ה-API באמצעות משתני זרימה.
יצירה ועדכון של KVM בזמן הריצה של ה-API יוצרים KVM בזמן הריצה של ה-API באמצעות מדיניות KVM.
שמירת KVM במטמון כדי לשפר את הביצועים שיפור הביצועים של מדיניות KVM באמצעות שמירת הנתונים במטמון.
Store encrypted KVM אחסון מידע אישי רגיש ב-KVM בפורמט מוצפן ואחזור הערך בזמן ריצה באמצעות מדיניות KVM ומשתנים פרטיים.
ניהול גישה באמצעות היקף KVM הגבלת KVM לארגון, לסביבה, ל-proxy ל-API או לגרסה של proxy ל-API באמצעות מאפיין היקף המדיניות של KVM.
מחיקת רשומות KVM בזמן הריצה של API מחיקת רשומות KVM בזמן הריצה של ה-API באמצעות פעולת המחיקה של מדיניות 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>

שימו לב שההיקף הוא 'סביבה'. כלומר, אפשר לראות את ה-KVM בממשק המשתמש לניהול בקטע APIs > Environment Configuration > Key Value Maps. המשתנים של KVM שמוצגים בדף הזה הם כולם בהיקף של הסביבה שנבחרה.

‫GET KVM from a literal

המדיניות הזו בודקת את המפה 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>

הצבת 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 המלאות התואמות.

כדי לאחזר את הערך של רשומה במפת מפתח/ערך, כמו הרשומה שמוסברת בכרטיסייה PUT של KeyValueMapOperations, צריך להגדיר מדיניות שתבצע GET של מפת מפתח/ערך:

<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 במפת ערכי המפתח. מידע על יצירת מיפויים מוצפנים של מפתח/ערך זמין בנושאים בנושא 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 הוא case sensitive ב-Apigee Edge for Public Cloud. לדוגמה, foobar שונה מ-FooBar.

אם לא תציינו את המאפיין הזה, ייעשה שימוש ב-KVM בשם kvmap.

במסגרת היקף של ארגון, סביבה או שרת proxy של API, אפשר להשתמש במאפיין mapIdentifier כדי לציין שם מיפוי משלכם.

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

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

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

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

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

לא רלוונטי חובה
continueOnError

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

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

false אופציונלי
enabled

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

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

true אופציונלי
async

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

false הוצא משימוש

&lt;DisplayName&gt; רכיב

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

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

לא רלוונטי

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

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

אלמנט <Delete>

מחיקת צמד המפתח/הערך שצוין. צריך להשתמש לפחות באחד מהמאפיינים הבאים: <Get>, <Put> או <Delete>.

חשוב לציין את השם של זוג הערכים של מפתח/ערך באמצעות המאפיין mapIdentifier ברכיב ההורה. לדוגמה:

<Delete>
   <Key>
      <Parameter>key_name_literal</Parameter>
   </Key>
</Delete>
ברירת מחדל לא רלוונטי
נוכחות חובה אם לא צוינו הערכים <Get> או <Put>.
סוג לא רלוונטי

אלמנט <Entry>

ערכי seed למיפויים של ערכי מפתח, שמאוכלסים במיפויים של ערכי מפתח כשהם מאותחלים.

ב-Edge for Public Cloud, גודל המפתח מוגבל ל-2KB. לדוגמה:

<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 Operations תמיד קוראת ממטמון לפעולות GET.

רכיב <ExpiryTimeInSecs> מאפשר לקבוע כמה זמן יישמרו במטמון המפתחות והערכים שמשמשים במדיניות לפני שהם יתעדכנו שוב מ-KVM. עם זאת, יש הבדלים בין האופן שבו פעולות GET ו-PUT משפיעות על תפוגת המטמון.

GET – בפעם הראשונה שמופעלת פעולת GET של KVM, המפתחות או הערכים המבוקשים מ-KVM (שהשם שלו מצוין במאפיין הבסיס mapIdentifier של המדיניות) נטענים למטמון, והם נשארים שם לפעולות GET הבאות עד שאחד מהמקרים הבאים מתרחש:

  • מספר השניות שצוין ב-<ExpiryTimeInSecs> יפוג.
    או
  • פעולת PUT במדיניות KVM מחליפה את הערכים הקיימים (כפי שמוסבר בהמשך).

PUT – פעולת PUT כותבת מפתחות/ערכים ל-KVM שצוין. אם הפקודה PUT כותבת למפתח שכבר קיים במטמון, המטמון הזה מתרענן באופן מיידי ועכשיו הוא מכיל את הערך החדש למספר השניות שצוין ברכיב <ExpiryTimeInSecs> של המדיניות.

דוגמה – שמירה במטמון של KVM

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

אלמנט <Get>

הפונקציה מאחזרת את הערך של המפתח שצוין. צריך להשתמש לפחות באחד מהמאפיינים הבאים: <Get>, <Put> או <Delete>.

חשוב לציין את השם של זוג הערכים של מפתח/ערך באמצעות המאפיין mapIdentifier ברכיב האב.

אפשר לכלול כמה בלוקים של Get במדיניות כדי לאחזר כמה פריטים מ-KVM.

ברירת מחדל לא רלוונטי
נוכחות חובה אם לא צוינו הערכים <Put> או <Delete>.
סוג לא רלוונטי

קבלת פריט בודד מ-KVM

<Get assignTo="myvar" index="1">
   <Key>
      <Parameter>key_name_literal</Parameter>
   </Key>
</Get>

קבלת כמה פריטים ממכונת KVM

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

מפתח ערך
top_movies Princess Bride,The Godfather,Citizen Kane
האזרח קיין אורסון וולס
Princess Bride רוב ריינר
הסנדק פרנסיס פורד קופולה

זוהי הגדרת מדיניות של 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 יוצר את המשתנים הבאים שאפשר להשתמש בהם בתהליך של שרת ה-proxy ל-API:

  • top.movie.pick=Princess Bride
  • movie.director=Rob Reiner

מאפיינים

בטבלה הבאה מפורטים המאפיינים של הרכיב <Get>:

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

המשתנה שאליו יוקצה הערך שאוחזר.

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

<Get assignTo="private.myvar">

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

מידע על יצירת מיפויים מוצפנים של מפתח/ערך זמין בנושאים 'יצירה' במאמרים בנושא API לניהול מיפויים של מפתח/ערך ויצירה ועריכה של מיפויים של מפתח/ערך בסביבה.

לא רלוונטי חובה
אינדקס

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

דוגמה מופיעה בכרטיסייה 'קבלת ערך מוצפן מ-KVM' בדוגמאות.

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

אלמנט <InitialEntries>

ערכי seed למיפויים של ערכי מפתח, שמאוכלסים במיפויים של ערכי מפתח כשהם מאותחלים. חשוב לציין את השם של זוג המפתחות והערכים באמצעות המאפיין 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, או כשפורסים את חבילת ה-proxy ל-API שמכילה את המדיניות עם הרכיב הזה, המפתחות נוצרים באופן אוטומטי ב-KVM (כשהם לא מוצפנים). אם הערכים במדיניות שונים מהערכים ב-KVM, הערכים ב-KVM נמחקים כשפורסים את ה-proxy. כל זוג חדש של מפתח/ערך מתווסף למאגר הקיים של זוגות מפתח/ערך.

המפתחות והערכים שמאוכלסים על ידי הרכיב הזה חייבים להיות ליטרלים. לדוגמה, אי אפשר להשתמש ב-<Parameter ref="request.queryparam.key"> בתוך הרכיב הזה.

גודל המפתח מוגבל ל-2KB גם ב-Edge for the Public Cloud וגם ב-Edge for the Private Could. הערך של 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>:

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

אלמנט <Put>

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

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

<Put override="false">
   <Key>
      <Parameter ref="mykeyvar"/>
   </Key>
   <Value ref="myvalvar1"/>
</Put>
ברירת מחדל לא רלוונטי
נוכחות חובה אם לא צוינו הערכים <Get> או <Delete>.
סוג לא רלוונטי

מאפיינים

בטבלה הבאה מפורטים המאפיינים של הרכיב <Put>:

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

אם הערך הוא true, הוא מחליף את הערך של המפתח.

false אופציונלי

אלמנט <Scope>

השדה הזה מגדיר את הגבול של הנגישות למפות של זוגות מפתח/ערך. ההיקף שמוגדר כברירת מחדל הוא environment, כלומר כברירת מחדל, רשומות של מפות משותפות על ידי כל ה-API proxies שפועלים בסביבה (לדוגמה, test או prod). אם מגדירים את ההיקף ל-apiproxy, רק ה-proxy ל-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>:

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

הפניה לשגיאה

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

דוגמה לשימוש במיפוי של צמדי מפתח/ערך. נניח שאתם צריכים לאחסן רשימה של כתובות IP שמשויכות לסביבות שונות של קצה עורפי. אפשר ליצור מפה של צמדי מפתח/ערך בשם ipAddresses שמכילה רשימה של צמדי מפתח/ערך כרשומות. לדוגמה, קובץ ה-JSON הזה יכול לייצג מפה כזו:

{
  "entry" : [ {
    "name" : "Development",
    "value" : "65.87.18.18"
  }, {
    "name" : "Staging",
    "value" : "65.87.18.22"
  } ],
  "name" : "ipAddresses"
}

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

אפשר לשנות מפות של מפתח/ערך באמצעות מדיניות KeyValueMapOperations, או ישירות באמצעות Apigee Edge Management API. פרטים על Organization key/value maps API זמינים במאמרי העזרה של ה-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"/>.

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