Google Cloud Functions এক্সটেনশন

আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন দেখুন।
তথ্য

ভার্সন 1.0.5

আপনার Google Cloud প্রোজেক্টের মাধ্যমে ডেপ্লয় করা Cloud Functions ইনভোক করুন।

বর্তমানে, এই এক্সটেনশন HTTP ট্রিগার ফাংশন ইনভোক করতে পারে।

পূর্বশর্ত

এই এক্সটেনশন কনফিগার ও ব্যবহার করার জন্য এই কন্টেন্ট রেফারেন্স প্রদান করে। ExtensionCallout নীতি ব্যবহার করে API প্রক্সি থেকে এক্সটেনশন ব্যবহার করার আগে, আপনাকে অবশ্যই:

  1. Cloud Functions API চালু করুন।

  2. আপনার Google Cloud প্রোজেক্টের জন্য Cloud Functions-এ ফাংশন সংজ্ঞায়িত করুন ও ডিপ্লয় করুন।

  3. ফাংশনের জন্য যে লেভেলের অ্যাক্সেস চান তার জন্য IAM-এর মাধ্যমে ব্যবহারকারীকে অ্যাক্সেস দিন। যেমন, আপনি শুধুমাত্র সেই পরিষেবা অ্যাকাউন্টের জন্য ফাংশনে অ্যাক্সেস সীমিত করতে পারেন যা আপনি এক্সটেনশন কনফিগার করতে ব্যবহার করেন।

  4. পরিষেবা অ্যাকাউন্টের জন্য কী তৈরি করতে GCP Console ব্যবহার করুন।

  5. কনফিগারেশন রেফারেন্স ব্যবহার করে এক্সটেনশন যোগ ও কনফিগার করার সময়, ফলাফল হিসেবে প্রাপ্ত কী JSON ফাইলের কন্টেন্ট ব্যবহার করুন।

Cloud Functions সম্পর্কে

Google Cloud Functions-এর সাহায্যে, আপনি Google Cloud-এ ফাংশন তৈরি ও ডিপ্লয় করতে পারবেন, তারপর সেইসব ফাংশন অন্য কোড থেকে ইনভোক করতে পারবেন। Cloud Functions সম্পর্কে জানতে, দ্রুত শুরু গাইডগুলির মধ্যে একটি অনুসরণ করে দেখুন।

নমুনা

ExtensionCallout নীতি ব্যবহার করে Cloud Functions-এ ফাংশন কীভাবে ইনভোক করতে হয় তা নিম্নলিখিত উদাহরণে দেখানো হয়েছে।

Node.js ফাংশন ইনভোক করা

নিচে দেওয়া উদাহরণে Google Cloud Functions এক্সটেনশন কল করা একটি ExtensionCallout নীতি দেখানো হয়েছে। আপনি Cloud Functions API চালু করলে, এক্সটেনশনটি অন্তর্ভুক্ত ডিফল্ট "হ্যালো ওয়ার্ল্ড" ফাংশনকে কল করে।

নিচে উল্লেখ করা Node.js JavaScript GCP অ্যাকাউন্টের জন্য Cloud Functions-এ ডেপ্লয় করা হয়েছে। অনুরোধে মেসেজ প্রপার্টি থাকলে, কোড সেটি রিটার্ন করে। অন্যথায়, এটি উত্তর হিসেবে "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);
};

এই উদাহরণে, Cloud Functions-এ কোড ইনভোক করার জন্য যাচাইকরণ ও অনুমোদন পেতে প্রয়োজনীয় ক্রেডেনশিয়াল সহ একটি Google 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। এই উদাহরণে নীতির <Output> ট্যাগে parsed="false" সেট করা হয়েছে, যা JSON রেসপন্স পার্স করা থেকে নীতিকে বাধা দেয়। Cloud Functions এক্সটেনশন ব্যবহার করার সময় বেশিরভাগ ক্ষেত্রে আপনি 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 কনসোলে এটি প্রবেশ করানো হলে, এটি আপনার পরিষেবা অ্যাকাউন্ট কী ফাইলের কন্টেন্ট। ম্যানেজমেন্ট API-এর মাধ্যমে পাঠানো হলে, এটি হল পরিষেবা অ্যাকাউন্ট কী ফাইল থেকে তৈরি হওয়া base64-এনকোড করা ভ্যালু। কোনওটিই নয়। হ্যাঁ।