افزونه Google Cloud Functions

درحال مشاهده اسناد Apigee Edge هستید.
به اسناد Apigee X بروید.
اطلاعات

نسخه ۱.۳.۱

«توابع ابری» را که ازطریق پروژه Google Cloud شما مستقر شده‌اند فراخوانی کنید.

درحال‌حاضر، این افزونه از فراخوانی توابع راه‌انداز HTTP پشتیبانی می‌کند.

پیش‌نیازها

این محتوا مرجعی برای پیکربندی و استفاده از این افزونه ارائه می‌دهد. قبل‌از استفاده از افزونه از یک پراکسی API بااستفاده از خط‌مشی ExtensionCallout، باید:

  1. Cloud Functions API را فعال کنید.

  2. توابع را در Cloud Functions برای پروژه Google Cloud خود تعریف و مستقر کنید.

  3. دسترسی کاربر را ازطریق IAM اعطا کنید برای سطح دسترسی‌ای که برای تابع می‌خواهید. برای مثال، می‌توانید دسترسی به این تابع را به حساب سرویسی که برای پیکربندی افزونه استفاده می‌کنید محدود کنید.

  4. از «کنسول GCP» برای تولید کلید حساب سرویس استفاده کنید.

  5. از محتوای فایل JSON کلید حاصل هنگام افزودن و پیکربندی افزونه بااستفاده از مرجع پیکربندی استفاده کنید.

درباره Cloud Functions

با Google Cloud Functions، می‌توانید توابعی را در Google Cloud ایجاد و مستقر کنید، سپس آن توابع را از کد دیگری فراخوانی کنید. برای آشنایی با Cloud Functions، یکی از شروع‌های سریع را امتحان کنید.

نمونه‌ها

مثال زیر نشان می‌دهد چگونه بااستفاده از خط‌مشی ExtensionCallout، توابع را در Cloud Functions فراخوانی کنید.

فراخوانی تابع Node.js

مثال زیر دارای خط‌مشی «افزونه‌تماس» است که افزونه Google Cloud Functions را فرا می‌خواند. افزونه تابع پیش‌فرض «سلام دنیا» را که هنگام فعال کردن Cloud Functions API اضافه می‌شود فرا می‌خواند.

‫Node.js JavaScript زیر در Cloud Functions برای حساب GCP پیاده‌سازی شده است. اگر درخواست شامل دارایی پیام باشد، کد آن را برمی‌گرداند. درغیراین‌صورت، «سلام دنیا!» را به‌عنوان پاسخ برمی‌گرداند.

/**
 * 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 ذخیره می‌شود. کد پیکربندی خط‌مشی «نوشتار راهنمای تماس با افزونه» زیر از این نام، همراه با مقادیر شناسه منطقه و پروژه که با جزئیات محیط 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 توسط خط‌مشی می‌شود. در اکثر مواقع هنگام استفاده از افزونه «توابع ابری»، parsed="false" را تنظیم می‌کنید. برای اطلاعات بیشتر، عنصر<Output> را ببینید.

اگر «کارکرد ابری» پاسخ JSON برگرداند و parsed="true" را تنظیم کنید، پاسخ افزونه مرجع شیء است. برای استخراج پاسخ از مرجع، از نحو زیر استفاده کنید: {objectName}.{jsonKey}. برای مثال:

function.response.message

کنش‌ها

فراخواندن

تابع ابری را فرا می‌خواند.

درحال‌حاضر، این افزونه از فراخوانی توابع راه‌انداز 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 شناسه پروژه GCP. رشته. هیچ‌کدام. بله.
functionName نام تابع HTTP برای فراخوانی. این نامی است که هنگام ایجاد تابع استفاده کردید (لزومی ندارد نامی از کد تابع باشد). رشته. هیچ‌کدام. بله.
روش روش HTTP برای استفاده هنگام فراخوانی تابع. رشته. GET شماره.
پایه‌بار بار ارسالی برای ارسال با فراخوانی تابع. ‫JSON. هیچ‌کدام. شماره.

پاسخ

مقدار پاسخ تابع مشخص‌شده، درصورت وجود.

خصوصیت‌های پاسخ

هیچ‌کدام.

مرجع پیکربندی

هنگام پیکربندی و استقرار این افزونه برای استفاده در پراکسی‌های API، از موارد زیر استفاده کنید. برای مراحل پیکربندی افزونه بااستفاده از کنسول Apigee، به افزودن و پیکربندی افزونه مراجعه کنید.

دارایی‌های افزونه مشترک

ویژگی های زیر برای هر افزونه وجود دارد.

ویژگی شرح پیش فرض ضروری
name نامی که به این پیکربندی افزونه می‌دهید. هیچ یک آره
packageName نام بسته افزودنی همانطور که توسط Apigee Edge داده شده است. هیچ یک آره
version شماره نسخه بسته برنامه افزودنی که از آن یک برنامه افزودنی را پیکربندی می کنید. هیچ یک آره
configuration مقدار پیکربندی مخصوص افزونه ای که اضافه می کنید. به ویژگی های این بسته برنامه افزودنی مراجعه کنید هیچ یک آره

دارایی‌های این بسته افزونه

مقادیر مشخصه‌های پیکربندی زیر را که مختص این افزونه است مشخص کنید.

دارایی شرح پیش‌فرض الزامی
اطلاعات اعتباری وقتی در کنسول Apigee Edge وارد می‌شود، این محتوای فایل کلید حساب خدمات شما است. وقتی ازطریق «میانای برنامه‌سازی کاربردی مدیریت» ارسال می‌شود، مقدار کدبندی‌شده با base64 است که از فایل کلید حساب سرویس تولید می‌شود. هیچ‌کدام. بله.