برنامه افزودنی Google Cloud Functions

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

نسخه ۲.۰.۲

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

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

پیش‌نیازها

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

  1. API توابع ابری را فعال کنید.

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

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

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

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

درباره عملکردهای ابری

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

نمونه‌ها

مثال زیر نحوه فراخوانی توابع در Cloud Functions را با استفاده از سیاست ExtensionCallout نشان می‌دهد.

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

مثال زیر شامل یک سیاست ExtensionCallout است که یک افزونه Google Cloud Functions را فراخوانی می‌کند. این افزونه، تابع پیش‌فرض "hello world" را که هنگام فعال کردن API Cloud Functions گنجانده شده است، فراخوانی می‌کند.

کد جاوا اسکریپت Node.js زیر در توابع ابری برای یک حساب 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> مراجعه کنید.

اگر تابع ابری یک پاسخ 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>

پارامترهای درخواست

پارامتر توضیحات نوع پیش‌فرض مورد نیاز
منطقه منطقه‌ی ابری گوگل که این قابلیت در آن مستقر شده است. رشته. هیچ کدام. بله.
شناسه پروژه شناسه پروژه GCP. رشته. هیچ کدام. بله.
نام تابع نام تابع HTTP که باید فراخوانی شود. این نامی است که هنگام ایجاد تابع استفاده کرده‌اید (لزوماً نامی از کد تابع نیست). رشته. هیچ کدام. بله.
روش متد HTTP که هنگام فراخوانی تابع استفاده می‌شود. رشته. GET خیر.
بار مفید مقدار داده‌ای که باید با فراخوانی تابع ارسال شود. جی‌سان هیچ کدام. خیر.

پاسخ

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

خواص پاسخ

هیچ کدام.

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

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

ویژگی‌های افزونه‌های رایج

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

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

ویژگی‌های این بسته الحاقی

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

ملک توضیحات پیش‌فرض مورد نیاز
اعتبارنامه‌ها وقتی در کنسول Apigee Edge وارد می‌شود، این محتویات فایل کلید حساب سرویس شماست. وقتی از طریق API مدیریت ارسال می‌شود، یک مقدار کدگذاری شده با پایه 64 است که از فایل کلید حساب سرویس تولید می‌شود. هیچ کدام. بله.