תוסף לפונקציות של Google Cloud

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

גרסה 1.3.2

הפעלת Cloud Functions שנפרסו דרך פרויקט Google Cloud.

בשלב הזה, התוסף הזה תומך בהפעלת פונקציות של הפעלת HTTP.

דרישות מוקדמות

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

  1. מפעילים את Cloud Functions API.

  2. הגדרת ופריסת פונקציות ב-Cloud Functions עבור פרויקט Google Cloud.

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

  4. שימוש במסוף GCP כדי ליצור מפתח לחשבון השירות.

  5. משתמשים בתוכן של קובץ ה-JSON של המפתח שנוצר כשמוסיפים ומגדירים את התוסף באמצעות הפניה להגדרות.

מידע על Cloud Functions

באמצעות Cloud Functions, אפשר ליצור ולפרוס פונקציות ב-Google Cloud, ואז להפעיל את הפונקציות האלה מקוד אחר. כדי לקבל מבוא ל-Cloud Functions, אפשר לנסות אחד מהמדריכים למתחילים.

דוגמאות

בדוגמה הבאה מוצגות פונקציות הפעלה ב-Cloud Functions באמצעות מדיניות ExtensionCallout.

הפעלת פונקציית Node.js

בדוגמה הבאה מוצגת מדיניות ExtensionCallout שמבצעת קריאה לתוסף של Google Cloud Functions. התוסף קורא לפונקציית ברירת המחדל hello world שכלולה כשמפעילים את Cloud Functions API.

קוד ה-JavaScript הבא של Node.js נפרס ב-Cloud Functions בחשבון GCP. אם הבקשה כוללת מאפיין הודעה, הקוד מחזיר את ההודעה. אחרת, היא מחזירה 'Hello World!‎' כתשובה.

/**
 * Responds to any HTTP request.
 *
 * @param {!express:Request} req HTTP request context.
 * @param {!express:Response} res HTTP response context.
 */
exports.helloWorld = (req, res) => {
  let message = req.query.message || req.body.message || 'Hello World!';
  res.status(200).send(message);
};

הדוגמה הזו כוללת תוסף של Google Cloud Functions שהוגדר עם פרטי הכניסה שנדרשים לאימות ולקבלת הרשאה להפעלת קוד ב-Cloud Functions.

קוד הפונקציה הקודם נשמר ב-Cloud Functions פשוט כ-helloWorld. קוד ההגדרה של מדיניות ExtensionCallout הבא משתמש בשם הזה, יחד עם ערכים של אזור ומזהה פרויקט שתואמים לפרטים של סביבת Cloud Functions שבה הפונקציה נפרסת.

<Action>invoke</Action>
<Input><![CDATA[
  {
    "region" : "us-central1",
    "projectId" : "my-project",
    "functionName" : "hello-world",
    "method" : "POST",
    "payload" : { "message" : "Hello yourself!" }
  }
]]></Input>
<Output parsed="false">function.response</Output>

מדיניות AssignMessage הבאה מתעדת את ערך התגובה למטרות ניפוי באגים.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Get-Function-Response">
    <DisplayName>Get Function Response</DisplayName>
    <AssignTo type="response" createNew="false"/>
    <Set>
        <Payload contentType="application/json">{function.response}</Payload>
    </Set>
</AssignMessage>

התגובה לבקשה שלמעלה תהיה דומה לתגובה הבאה:

Hello yourself!

ערך ברירת המחדל של parsed הוא true. בדוגמה הזו, הערך parsed="false" מוגדר בתג <Output> של המדיניות, מה שמונע מהמדיניות לנתח את תגובת ה-JSON. ברוב המקרים כשמשתמשים בתוסף Cloud Functions, מגדירים את parsed="false". מידע נוסף זמין במאמר בנושא האלמנט<Output>.

אם פונקציית Cloud Functions מחזירה תגובת JSON והגדרתם את parsed="true", התגובה מהתוסף היא הפניה לאובייקט. כדי לחלץ את התשובה מההפניה, משתמשים בתחביר הבא: {objectName}.{jsonKey}. לדוגמה:

function.response.message

פעולות

להפעיל

מפעיל פונקציה של Cloud Functions.

בשלב הזה, התוסף הזה תומך בהפעלת פונקציות של הפעלת HTTP.

תחביר

<Action>invoke</Action>
<Input><![CDATA[
  {
    "region" : "deployment-region",
    "projectId" : "project-id",
    "functionName" : "function-name",
    "method" : "http-method",
    "payload" : { json-payload }
  }
]]></Input>
<Output>function.response</Output>

דוגמה

<Action>invoke</Action>
<Input><![CDATA[
  {
    "region" : "us-central1",
    "projectId" : "my-project",
    "functionName" : "hello-world",
    "method" : "POST",
    "payload" : { "message" : "Hello yourself!" }
  }
]]></Input>
<Output>function.response</Output>

פרמטרים של בקשה

פרמטר תיאור סוג ברירת מחדל חובה
region האזור ב-Google Cloud שבו הפונקציה נפרסת. מחרוזת. ללא. כן.
projectId מזהה הפרויקט ב-GCP. מחרוזת. ללא. כן.
functionName השם של פונקציית ה-HTTP שתופעל. זה השם שבו השתמשתם כשיצרתם את הפונקציה (לא בהכרח שם מתוך קוד הפונקציה). מחרוזת. ללא. כן.
method שיטת ה-HTTP שבה צריך להשתמש כשמפעילים את הפונקציה. מחרוזת. GET לא.
מטען ייעודי (payload) המטען הייעודי (payload) שיישלח עם הפעלת הפונקציה. ‫JSON. ללא. לא.

תשובה

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

מאפייני התגובה

ללא.

הסבר על ההגדרות

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

מאפיינים נפוצים של תוספים

המאפיינים הבאים קיימים בכל תוסף.

נכס תיאור ברירת המחדל נדרש
name השם שבחרת לתצורה הזו של התוסף. ללא כן
packageName השם של חבילת התוסף כפי שהוא סופק על ידי Apigee Edge. ללא כן
version מספר הגרסה של חבילת התוסף שממנה מגדירים את התוסף. ללא כן
configuration ערך הגדרה ספציפי לתוסף שרוצים להוסיף. מאפיינים לחבילת תוספים זו ללא כן

מאפיינים של חבילת התוסף הזו

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

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