מדיניות KeyValueMapsOperations

מוצג המסמך של Apigee Edge.
עוברים אל מסמכי תיעוד של Apigee X.
מידע

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

מה

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

סרטונים

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

וידאו תיאור
למה כדאי להשתמש בערך מרכזי מפות Google? הסבר למה צריך KVMs ואיך הם פועלים.
יצירת 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>

שימו לב שההיקף הוא "סביבה". זה אומר שאפשר לראות את ה-KVM ממשק משתמש בקטע APIs > הגדרת הסביבה > מפות לערך מרכזי. מכונות ה-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 מלאות תואמות.

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

&lt;KeyValueMapOperations&gt; מאפיינים

בדוגמה הבאה מוצגים המאפיינים של התג <KeyValueMapOperations>:

<KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="Key-Value-Map-Operations-1" mapIdentifier="map_name">

בטבלה הבאה מתוארים המאפיינים הספציפיים לתג <KeyValueMapOperations>:

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

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

שם ה-KVM הוא תלוי אותיות רישיות ב-Apigee Edge לענן ציבורי. לדוגמה, foobar שונה מ-FooBar.

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

במסגרת הארגון/סביבה/apiproxy, אפשר להשתמש 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 של המדיניות הוא בשימוש.

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

&lt;Delete&gt; רכיב

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

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

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

&lt;Entry&gt; רכיב

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

ב-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>
ברירת מחדל לא רלוונטי
נוכחות אופציונלי
סוג לא רלוונטי

&lt;ExclusiveCache&gt; רכיב

הוצא משימוש. במקום זאת, צריך להשתמש ברכיב <Scope>.

&lt;ExpiryTimeInSecs&gt; רכיב

המדיניות הזו מציינת את משך הזמן בשניות שאחריו 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 (שמו צוין ברמה הבסיסית (root) של המדיניות mapIdentifier נטענים למטמון, שם הם נשארים עבור פעולות GET הבאות עד שאחת זה מה שקורה:

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

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

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

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

&lt;Get&gt; רכיב

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

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

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

מאפיינים

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

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

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

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

<Get assignTo="private.myvar">

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

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

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

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

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

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

&lt;InitialEntries&gt; רכיב

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

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

גודל המפתח מוגבל ל-2KB גם ב-Edge עבור ענן ציבורי וגם Edge ל'פרטי'. ערך ה-KVM מוגבל ל-2KB.

כדי ליצור KVM מוצפן, משתמשים ב-Key/Value Maps management API.

ברירת מחדל לא רלוונטי
נוכחות אופציונלי
סוג לא רלוונטי

&lt;Key&gt; רכיב

מציין את המפתח ברשומה של מפת מפתח/ערך. מפתח יכול להיות מורכב, כלומר ניתן לצרף פרמטר אחד כדי ליצור את המפתח. לדוגמה, userID וגם ייתכן שהמערכת תשלב את role כדי ליצור key. לדוגמה:

<Key>
    <Parameter>key_name_literal</Parameter>
</Key>

חשוב לעיין ברכיב &lt;Parameter&gt; כדי לקבל מידע מפורט על מגדירים את שם המפתח.

ב-Edge for Public Cloud, גודל המפתח מוגבל ל-2KB. מידע נוסף זמין במאמר ההבדלים בין Edge for Public Cloud API לבין Private Cloud API.

ברירת מחדל לא רלוונטי
נוכחות אופציונלי
סוג לא רלוונטי

&lt;Parameter&gt; רכיב

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

אפשר לציין את השם באמצעות:

  • מחרוזת מילולית

    <Key>
      <Parameter>literal</Parameter>
    </Key>
    
  • משתנה לאחזור בזמן ריצה, עם המאפיין ref

    <Key>
      <Parameter ref="variable_name"/>
    </Key>
    
  • שילוב של מילים ואזכורים של משתנים

    <Key>
      <Parameter>targeturl</Parameter>
      <Parameter ref="apiproxy.name"/>
      <Parameter>weight</Parameter>
    </Key>
    

כאשר רכיב המפתח כולל מספר רכיבי 'פרמטר', מחרוזת המפתח האפקטיבית היא את שרשור הערכים של כל פרמטר, שמסומן בקו תחתון כפול. לדוגמה, ב- בדוגמה שלמעלה, אם הערך של המשתנה apiproxy.name הוא abc1, אז הפרמטר המפתח בפועל יהיה targeturl__abc1__weight.

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

ברירת מחדל לא רלוונטי
נוכחות חובה
סוג מחרוזת

מאפיינים

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

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

&lt;Put&gt; רכיב

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

כדי ליצור מפה מוצפנת של ערכי מפתח, צריך להשתמש ב- Key/Value Maps management API; או לעיין במאמר יצירה ועריכה של מפות של ערכי מפתחות בסביבה כדי ליצור בממשק המשתמש מכונות KVM מוצפנות ברמת הסביבה.

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

מאפיינים

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

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

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

false אופציונלי

&lt;Scope&gt; רכיב

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

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

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

&lt;Value&gt; רכיב

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

This section describes the fault codes and error messages that are returned and fault variables that are set by Edge when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Cause Fix
steps.keyvaluemapoperations.SetVariableFailed 500

This error occurs if you try to retrieve a value from an encrypted key value map and set the value to a variable whose name does not have the prefix private. The prefix, which is required for basic security purposes during debugging, hides the encrypted values from API proxy Trace and debug sessions.

steps.keyvaluemapoperations.UnsupportedOperationException 500

This error occurs if the mapIdentifier attribute is set to empty string in the Key Value Map Operations policy.

Deployment errors

These errors can occur when you deploy a proxy containing this policy.

Error name Cause Fix
InvalidIndex If the index attribute specified in the <Get> element of Key Value Map Operations policy is zero or a negative number, then the deployment of the API proxy fails. The index starts from 1, so an index of zero or negative integer is considered as invalid.
KeyIsMissing This error occurs if the <Key> element is completely missing or <Parameter> element is missing within <Key> element underneath the <Entry> of the <InitialEntries> element of the Key Value Map Operations policy.
ValueIsMissing This error occurs if the <Value> element is missing underneath the <Entry> element of the <InitialEntries> element of the Key Value Map Operations policy.

סכימות

הערות שימוש

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

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

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