إضافة دوال Google Cloud

أنت الآن بصدد الاطّلاع على مستندات Apigee Edge.
انتقِل إلى مستندات Apigee X.
info

الإصدار 2.0.2

استدعاء دوال Cloud Functions التي يتم نشرها من خلال مشروعك على Google Cloud

تتيح هذه الإضافة حاليًا استدعاء دوال مشغّل HTTP.

المتطلبات الأساسية

يوفّر هذا المحتوى مرجعًا لإعداد هذه الإضافة واستخدامها. قبل استخدام الإضافة من خادم وكيل لواجهة برمجة التطبيقات باستخدام سياسة ExtensionCallout، يجب اتّباع ما يلي:

  1. فعِّل Cloud Functions API.

  2. تحديد ونشر الدوال في Cloud Functions لمشروعك على Google Cloud

  3. امنح المستخدم إذن الوصول من خلال إدارة الهوية وإمكانية الوصول (IAM) لمستوى الوصول الذي تريده للدالة. على سبيل المثال، يمكنك حصر الوصول إلى الدالة على حساب الخدمة الذي تستخدمه لضبط الإضافة فقط.

  4. استخدام "وحدة تحكّم Google Cloud Platform" لإنشاء مفتاح لحساب الخدمة

  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 لحساب على Google Cloud Platform. إذا كان الطلب يتضمّن سمة رسالة، يعرض الرمز هذه السمة. بخلاف ذلك، يتم عرض "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> لمزيد من المعلومات.

إذا كانت "الدالة السحابية" تعرض استجابة 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>

مَعلمات الطلب

المَعلمة الوصف النوع تلقائي مطلوب
المنطقة المنطقة في Google Cloud التي يتم نشر الدالة فيها سلسلة. بلا عُري نعم.
projectId رقم تعريف مشروع Google Cloud Platform سلسلة. بلا عُري نعم.
functionName اسم دالة HTTP المطلوب استدعاؤها. هذا هو الاسم الذي استخدمته عند إنشاء الدالة (وليس بالضرورة اسمًا من رمز الدالة). سلسلة. بلا عُري نعم.
method طريقة HTTP التي سيتم استخدامها عند استدعاء الدالة سلسلة. GET لا.
الحمولة الحِزمة التي سيتم إرسالها مع استدعاء الدالة. JSON بلا عُري لا.

الردّ

قيمة استجابة الدالة المحدّدة، إن وُجدت

خصائص الاستجابة

بلا عُري

مرجع الإعدادات

استخدِم ما يلي عند ضبط هذه الإضافة ونشرها لاستخدامها في خوادم API الوكيلة. للاطّلاع على خطوات إعداد إضافة باستخدام وحدة تحكّم Apigee، يُرجى الرجوع إلى إضافة إضافة وإعدادها.

خصائص الإضافة الشائعة

السمات التالية متاحة لكل إضافة.

الموقع الوصف تلقائي عنصر مطلوب
name الاسم الذي تُعطِه هذه الإضافة من الإضافات. لا ينطبق متوافق
packageName اسم حزمة الإضافة كما هو مُوضَّح من Apigee Edge. لا ينطبق متوافق
version رقم إصدار حزمة الإضافة التي تجري عملية إعداد الإضافة منها. لا ينطبق متوافق
configuration قيمة الإعداد المتعلقة بالإضافة التي تدرجها الاطّلاع على خصائص حزمة الإضافات هذه لا ينطبق متوافق

سمات حزمة الإضافة هذه

حدِّد قيمًا لخصائص الإعداد التالية الخاصة بهذا الامتداد.

الموقع الوصف تلقائي مطلوب
بيانات الاعتماد عند إدخالها في وحدة تحكّم Apigee Edge، يكون هذا هو محتوى ملف مفتاح حساب الخدمة. عند إرسالها من خلال واجهة برمجة التطبيقات الإدارية، تكون قيمة بترميز base64 تم إنشاؤها من ملف مفتاح حساب الخدمة. بلا عُري نعم.