תבניות נגד מיגרציה מ-Apigee Edge ל-Apigee X

אתם צופים במסמכי העזרה של Apigee Edge.
כניסה למסמכי העזרה של Apigee X.
info

לקוחות Apigee Edge יכולים לבחור להעביר את ההתקנה שלהם ל-Apigee X כדי ליהנות מיכולות חדשות או מזמינות שונה באזורים שונים.

בדף הזה מתוארים דפוסי התנהלות לא רצויים בהגדרות שצריך לטפל בהם לפני ההעברה ל-Apigee X, וגם שינויים אחרים בהתנהגות שחשוב לדעת עליהם לפני ההעברה.

ברשימת הדפוסים השליליים של Apigee Edge מתוארים שיטות שימוש שכדאי להימנע מהן בכל מקרה. בדף הזה מתוארות שיטות שימוש ספציפיות שאנחנו לא ממליצים עליהן, ושימנעו העברה. מומלץ לפתור את הבעיות האלה עכשיו כדי למנוע בעיות במהלך ההעברה ל-Apigee X.

אפליקציות ללא מוצרי API

סיכום האם נדרשים שינויים מצד הלקוח? רזולוציה

יש אפליקציות ללא מוצרי API.

ההבדל בין Apigee Edge לבין Apigee X:

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

פתרון: אפליקציות ללא מוצרי API

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

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

מטמון ללא תאריך תפוגה

סיכום האם נדרשים שינויים מצד הלקוח? רזולוציה

למטמון אין תאריך תפוגה.

ההבדל בין Apigee Edge לבין Apigee X:

Apigee Edge Apigee X
תמיכה ביצירה, בעדכון ובמחיקה של מתארי משאבי מטמון. לא תומך ביצירה, בעדכון או במחיקה של מתארי משאבי מטמון.
לא

פתרון: מטמון ללא תאריך תפוגה

מגדירים זמן תפוגה לכל המטמון.

ביטויים של מסנני JSONPath בנתיב לא מוגדר

סיכום האם נדרשים שינויים מצד הלקוח? רזולוציה

לגבי נתיבים לא סופיים, שליחת שאילתה לגבי התוצאה של ביטויי סינון היא לא חלק מפרט JSONPath. אפשר לעיין במאמר https://goessner.net/articles/JsonPath/.

ההבדל בין Apigee Edge לבין Apigee X:

כשמנווטים במבנה לדוגמה הזה,

{
    "books": [
      {
        "name": "A",
      },
      {
        "name": "B",
      }
    ]
}

בביטוי $..books[?(@.name == 'A')][0],

Apigee Edge Apigee X
פלטים ‘{"name": "A"}’ פלטים []

בביטוי $..books[?(@.name == 'A')][0].name,

Apigee Edge Apigee X
פלטים "A" פלטים []
כן

פתרון: ביטויים של מסנני JSONPath בנתיבים לא מוגדרים

מחפשים את השאילתות המושפעות ומחליפים אותן.

ביטויים של JSONPath לאינדקסים שאינם קיימים

סיכום האם נדרשים שינויים מצד הלקוח? רזולוציה

לביטויים של JSONPath עם אינדקס שלא קיים יש התנהגות שונה ב-Apigee X לעומת Apigee Edge. אם הנתיב לא נמצא, Apigee X מחזיר את השגיאה PathNotFoundException.

ההבדל בין Apigee Edge לבין Apigee X:

כשמנווטים במבנה לדוגמה הזה,

{
    "books": [
      {
        "name": "A",
      },
      {
        "name": "B",
      }
    ]
}

עם הביטוי $.books[3],

Apigee Edge Apigee X
פלטים null הפלט הוא השגיאה PathNotFoundException
כן

פתרון: ביטויים של JSONPath לאינדקסים שלא קיימים

מחפשים את השאילתות המושפעות ומחליפים אותן.

ביטויים של JSONPath עם אינדקס מערך שלא מחזירים אובייקט מערך

סיכום האם נדרשים שינויים מצד הלקוח? רזולוציה

ביטויים של JSONPath עם אינדקס מערך או פלחים מחזירים אובייקט מערך ב-Apigee X.

ההבדל בין Apigee Edge לבין Apigee X:

כשמנווטים במבנה לדוגמה הזה,

{
    "books": [
      {
        "name": "A",
      },
      {
        "name": "B",
      }
    ]
}

עם הביטוי $.books,

Apigee Edge Apigee X
פלטים {“name”:”A”, “name”: “B”} פלטים [{“name”:”A”, “name”: “B”}]

בביטוי $.books[-1],

Apigee Edge Apigee X
פלטים {“name”: “B”} פלטים [{“name”: “B”}]

עם הביטוי $.books[-2:],

Apigee Edge Apigee X
פלטים {“name”:”A”, “name”: “B”} פלטים [{“name”:”A”, “name”: “B”}]
כן

פתרון: ביטויים של JSONPath עם אינדקס מערך שלא מחזירים אובייקט מערך

חיפוש והחלפה של ביטויים שעשויים להחזיר תוצאות שונות אחרי השדרוג.

הגבלות על שמות של מאגרי מפתחות

סיכום האם נדרשים שינויים מצד הלקוח? רזולוציה

שמות של מאגרי מפתחות ב-Apigee X יכולים להכיל רק אותיות, מספרים ומקפים. שמות של מאגרי מפתחות ב-Edge לא כפופים להגבלות האלה.

לא

פתרון: הגבלות על שמות של מאגרי מפתחות

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

פריסה של כמה נתיבים בסיסיים ל-proxy ל-API

סיכום האם נדרשים שינויים מצד הלקוח? רזולוציה

מספר גרסאות של שרת proxy ל-API נפרסים בסביבה, וכל גרסה כוללת נתיב בסיס שונה.

ההבדל בין Apigee Edge לבין Apigee X:

Apigee Edge Apigee X
תמיכה בפריסה של כמה גרסאות של שרת proxy ל-API, שבכל אחת מהן יכול להיות נתיב בסיס שונה. אין תמיכה בפריסה של כמה גרסאות של שרת proxy ל-API, גם אם לשרת ה-proxy יש נתיבים בסיסיים שונים.
לא

פתרון: פריסה של כמה נתיבים בסיסיים לשרת proxy של API

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

הודעות HTTP לא תואמות

סיכום האם נדרשים שינויים מצד הלקוח? רזולוציה

לקוחות או שרת proxy של API שולחים הודעות (בקשות או תשובות) שלא תואמות לתקן HTTP. לדוגמה, שמות כותרות לא חוקיים, כפילויות בחלק מהכותרות המוגבלות וכו'.

לא ניתן לעבור ל-Apigee X אם בביצוע ה-API יש אחת או יותר מהשגיאות הבאות:

שגיאה פרטים
INVALID_CHARACTERS_IN_HEADER נמצא תו אחד או יותר לא חוקי בכותרת שצוינה. שמות כותרות תקינים מורכבים מאותיות באנגלית, מספרות ומקפים.
MISSING_COLON חסר סימן : (נקודה-פסיק) בשם הכותרת ובצמד הערכים של הכותרת.
MULTIPLE_CONTENT_LENGTH צוינו כמה ערכים לכותרת Content-Length.
CONTENT_LENGTH_NOT_INTEGER הערך של הכותרת Content-Length אינו מספר שלם.
INVALID_UPGRADE צריך להשתמש בכותרת Upgrade רק כדי להפעיל חיבורי WebSocket, אבל לא עושים זאת.
URL_HEADER_SIZE_TOO_LONG הגודל הכולל של כתובת ה-URL של הבקשה והכותרות חורג מהגודל המקסימלי המותר של 15KB.
BODY_NOT_ALLOWED אסור להשתמש בגוף הודעה בשיטות GET,‏ DELETE,‏ TRACE,‏ OPTIONS ו-HEAD.
UNSUPPORTED_HTTP_VERSION בבקשה נעשה שימוש בגרסה של HTTP שאינה 1.1, ואין תמיכה בגרסה הזו.
ZERO_CONTENT_LENGTH_FOR_POST_OR_PUT שדה הכותרת Content-Length (אורך התוכן) הוגדר לערך אפס ('0') בשיטת POST או PUT.
UNSUPPORTED_RESPONSE_PREFIX תחילית כותרת מסוג 'X-Apigee-' שלא נתמכת הייתה קיימת בכותרת התגובה.
כן, יכול להיות.

פתרון: הודעות HTTP לא תואמות

לפני ההעברה ל-Apigee X, צריך לתקן את כל השגיאות בפרוטוקולים של HTTP. אם השגיאה נובעת מאפליקציית לקוח, צריך לבקש ממפתח האפליקציה לתקן את הבעיה.

זמן התפוגה של אסימון OAuth 2.0 לא חוקי

סיכום האם נדרשים שינויים מצד הלקוח? רזולוציה

מגבלות התפוגה של אסימוני OAuth 2.0 חורגות מהטווח שנקבע.

ההבדל בין Apigee Edge לבין Apigee X:

Apigee Edge Apigee X
בשלב זה לא קיימת אכיפה של אילוץ על מועד התפוגה של אסימון OAuth 2.0, אבל אנחנו מתכננים לאכוף אותו. אפשר לעיין בהנחיות בקטע OAuth בקטע 'הגבלות'. צריך להגדיר מועד תפוגה לאסימון גישה ולאסימון רענון ב-OAuth 2.0. אלה טווחי הערכים הנתמכים:
  • 180 שניות <= מועד התפוגה של אסימון הגישה מסוג OAuth 2.0 <= 30 ימים
  • 1 יום <= מועד התפוגה של אסימון הרענון מסוג OAuth 2.0 <= שנתיים
לא

פתרון: זמן התפוגה של אסימון OAuth 2.0 לא חוקי

משתמשים במדיניות OAuthV2 ומציינים את זמן התפוגה ב-<ExpiresIn> וב-<RefreshTokenExpiresIn>.

חרגת ממגבלות המוצרים

סיכום האם נדרשים שינויים מצד הלקוח? רזולוציה

ההגדרה של Apigee Edge לא תואמת למגבלות המוצר שהוגדרו. חלק מהמגבלות על מוצרים שמפורטות במסמכים אבל לא נאכפות ב-Apigee Edge, נאכפות ב-Apigee X.

לא

פתרון: חרגת ממגבלות המוצרים

לפני ההעברה ל-Apigee X, צריך לתקן כל שימוש שחורג מהמגבלות של המוצר.

כללי מדיניות של ServiceCallout עם מפרטים של חיבור ליעד של נקודת קצה ונתיב

סיכום האם נדרשים שינויים מצד הלקוח? רזולוציה

במדיניות ServiceCallout, הרכיב <LocalTargetConnection> צריך לכלול את הרכיבים <APIProxy> ו-<ProxyEndpoint> או את הרכיב <Path>, אבל לא את שניהם. מידע נוסף זמין ברכיב <LocalTargetConnection>.

הדרישה הזו מתועדת ב-Apigee Edge, אבל היא לא נאכפת. Apigee X מפסיק את העיבוד אם הוא נתקל ב-<LocalTargetConnection> עם שתי ההגדרות.

לא

פתרון: כללי מדיניות של ServiceCallout עם מפרטים של חיבורים ליעד של נקודת קצה ונתיב

בודקים את הגדרות המדיניות של ServiceCallout ומבטלים הגדרות של <LocalTargetConnection> שלא עומדות בדרישות.

הגבלות על שם שרת היעד

סיכום האם נדרשים שינויים מצד הלקוח? רזולוציה

שמות של שרתי יעד ב-Apigee X יכולים להכיל רק אותיות, מספרים, מקפים ונקודות. שמות של שרתי יעד של Edge לא מחילים את ההגבלות האלה.

לא

פתרון: הגבלות על שם שרת היעד

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

אישור ניסיון במארח וירטואלי

סיכום האם נדרשים שינויים מצד הלקוח? רזולוציה

מארח וירטואלי אחד או יותר משתמש באישור 'תקופת ניסיון בחינם' ש-Apigee מספקת. כך המארח הווירטואלי מגיב לבקשות בדומיינים כמו ORG-ENV.apigee.net.

ההבדל בין Apigee Edge לבין Apigee X:

Apigee Edge Apigee X
הגדרה אוטומטית של ה-vhost 'default' לתמיכה בשם דומיין בפורמט ORG-ENV.apigee.net. יש אישור תו כללי שנקרא 'אישור תקופת הניסיון בחינם' שמאפשר להשתמש ב-TLS בדומיינים האלה. דומיינים מדור קודם של Apigee בפורמט ORG-ENV.apigee.net לא זמינים ב-Apigee X. עליכם להגדיר שם דומיין משלכם ולהקצות את האישורים בהתאם.
כן

פתרון: אישור ניסיון בשרת וירטואלי

צריך להגדיר דומיין משלכם ולהקצות אישורים בהתאם.

כל אפליקציית לקוח שתלויה בשם הדומיין הקודם של הטופס ORG-ENV.apigee.net צריכה להיות מותאמת כדי לקרוא לדומיין החדש.

DNS לא נפתרה

סיכום האם נדרשים שינויים מצד הלקוח? רזולוציה

בשמות הדומיינים של נקודות הקצה של היעד יש בעיות פתרון.

ההבדל בין Apigee Edge לבין Apigee X:

Apigee Edge Apigee X
אם פתרון ה-DNS נכשל, Apigee מצרף את הערך .apigee.com לשם הדומיין וה-DNS פותר את הבעיה עם קוד תגובה 4xx. אם פתרון ה-DNS נכשל, Apigee לא מבצע את הבקשה ומחזיר קוד תגובה 5xx.
לא

פתרון: DNS לא נפתר

מעדכנים את נקודת הקצה של היעד בשם דומיין חוקי.