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

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

גרסה 2.0.0

הפעלת פונקציות Cloud Functions שנפרסו דרך הפרויקט שלכם ב-Google Cloud.

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

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

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

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

  2. הגדרה וdeploy של פונקציות ב-Cloud Functions לפרויקט ב-Google Cloud.

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

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

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

מידע על Cloud Functions

בעזרת Google 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.

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