Google Cloud Functions एक्सटेंशन

यह Apigee Edge के दस्तावेज़ हैं.
पर जाएं Apigee X दस्तावेज़.
info

वर्शन 2.0.2

अपने Google Cloud प्रोजेक्ट के ज़रिए डिप्लॉय किए गए Cloud Functions को शुरू करें.

फ़िलहाल, यह एक्सटेंशन, एचटीटीपी ट्रिगर फ़ंक्शन को शुरू करने की सुविधा देता है.

ज़रूरी शर्तें

इस कॉन्टेंट में, इस एक्सटेंशन को कॉन्फ़िगर करने और इस्तेमाल करने के बारे में जानकारी दी गई है. ExtensionCallout नीति का इस्तेमाल करके, एपीआई प्रॉक्सी से एक्सटेंशन का इस्तेमाल करने से पहले, आपको ये काम करने होंगे:

  1. Cloud Functions API को चालू करना होगा.

  2. अपने Google Cloud प्रोजेक्ट के लिए, Cloud Functions में फ़ंक्शन तय और डिप्लॉय करने होंगे.

  3. आपको फ़ंक्शन के लिए जिस लेवल का ऐक्सेस चाहिए उसके लिए, IAM के ज़रिए उपयोगकर्ता को ऐक्सेस देना होगा. उदाहरण के लिए, एक्सटेंशन को कॉन्फ़िगर करने के लिए इस्तेमाल किए जाने वाले सेवा खाते के लिए, फ़ंक्शन के ऐक्सेस को सीमित किया जा सकता है.

  4. सेवा खाते के लिए कुंजी जनरेट करने के लिए, GCP कंसोल का इस्तेमाल करना होगा.

  5. कॉन्फ़िगरेशन रेफ़रंस का इस्तेमाल करके, एक्सटेंशन को जोड़ने और कॉन्फ़िगर करने के दौरान, जनरेट हुई कुंजी वाली JSON फ़ाइल के कॉन्टेंट का इस्तेमाल करना होगा.

Cloud Functions के बारे में जानकारी

Google Cloud Functions की मदद से, Google Cloud पर फ़ंक्शन बनाए और डिप्लॉय किए जा सकते हैं. इसके बाद, उन फ़ंक्शन को किसी अन्य कोड से शुरू किया जा सकता है. Cloud Functions के बारे में जानने के लिए, किसी एक क्विकस्टार्ट को आज़माएं.

सैंपल

यहां दिए गए उदाहरण में, ExtensionCallout नीति का इस्तेमाल करके, Cloud Functions में फ़ंक्शन शुरू करने का तरीका बताया गया है.

Node.js फ़ंक्शन शुरू करना

यहां दिए गए उदाहरण में, Google Cloud Functions एक्सटेंशन को कॉल करने वाली ExtensionCallout नीति दिखाई गई है. एक्सटेंशन, डिफ़ॉल्ट "hello world" फ़ंक्शन को कॉल करता है. यह फ़ंक्शन, 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);
};

इस उदाहरण में, 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 होती है. इस उदाहरण में, नीति के <Output> टैग में parsed="false" सेट किया गया है, इससे नीति, JSON जवाब को पार्स नहीं कर पाती. Cloud Functions एक्सटेंशन का इस्तेमाल करते समय, ज़्यादातर मामलों में parsed="false" सेट किया जाता है. ज़्यादा जानकारी के लिए, <Output> एलिमेंट देखें.

अगर Cloud Function, JSON जवाब दिखाता है और आपने parsed="true" सेट किया है, तो एक्सटेंशन से मिलने वाला जवाब, ऑब्जेक्ट रेफ़रंस होता है. रेफ़रंस से जवाब निकालने के लिए, इस सिंटैक्स का इस्तेमाल करें: {objectName}.{jsonKey}. उदाहरण के लिए:

function.response.message

कार्रवाइयां

शुरू करना

Cloud Function को शुरू करता है.

फ़िलहाल, यह एक्सटेंशन, एचटीटीपी ट्रिगर फ़ंक्शन को शुरू करने की सुविधा देता है.

सिंटैक्स

<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 शुरू करने के लिए, एचटीटीपी फ़ंक्शन का नाम. यह वह नाम है जिसका इस्तेमाल आपने फ़ंक्शन बनाते समय किया था. यह ज़रूरी नहीं है कि यह नाम, फ़ंक्शन के कोड में मौजूद नाम हो. स्ट्रिंग. कोई नहीं. हां.
तरीका फ़ंक्शन को शुरू करते समय इस्तेमाल किया जाने वाला एचटीटीपी तरीका. स्ट्रिंग. GET नहीं.
पेलोड फ़ंक्शन को शुरू करते समय भेजा जाने वाला पेलोड. JSON. कोई नहीं. नहीं.

जवाब

अगर कोई हो, तो बताए गए फ़ंक्शन की जवाब वैल्यू.

जवाब की प्रॉपर्टी

कोई नहीं.

कॉन्फ़िगरेशन रेफ़रंस

एपीआई प्रॉक्सी में इस्तेमाल करने के लिए, इस एक्सटेंशन को कॉन्फ़िगर और डिप्लॉय करते समय, यहां दी गई जानकारी का इस्तेमाल करें. Apigee कंसोल का इस्तेमाल करके, एक्सटेंशन को कॉन्फ़िगर करने के चरणों के लिए, एक्सटेंशन जोड़ना और कॉन्फ़िगर करना देखें.

एक्सटेंशन की सामान्य प्रॉपर्टी

हर प्रॉपर्टी के लिए नीचे दी गई प्रॉपर्टी मौजूद हैं.

प्रॉपर्टी जानकारी डिफ़ॉल्ट ज़रूरी है
name वह नाम, जिसे आप एक्सटेंशन का यह कॉन्फ़िगरेशन दे रहे हैं. कभी नहीं हां
packageName एक्सटेंशन पैकेज का नाम, जो Apigee Edge से दिया गया है. कभी नहीं हां
version उस एक्सटेंशन पैकेज का वर्शन नंबर जिससे आपको एक्सटेंशन कॉन्फ़िगर करना है. कभी नहीं हां
configuration आप जिस एक्सटेंशन को जोड़ रहे हैं उसके लिए खास तौर पर कॉन्फ़िगरेशन वैल्यू. इस एक्सटेंशन पैकेज के लिए प्रॉपर्टी देखें कभी नहीं हां

इस एक्सटेंशन पैकेज की प्रॉपर्टी

इस एक्सटेंशन के लिए, यहां दी गई कॉन्फ़िगरेशन प्रॉपर्टी की वैल्यू तय करें.

प्रॉपर्टी ब्यौरा डिफ़ॉल्ट ज़रूरी है
क्रेडेंशियल Apigee Edge कंसोल में डालने पर, यह आपके सेवा खाते की कुंजी वाली फ़ाइल का कॉन्टेंट होता है. मैनेजमेंट एपीआई के ज़रिए भेजने पर, यह सेवा खाते की कुंजी वाली फ़ाइल से जनरेट की गई, base64 में एनकोड की गई वैल्यू होती है. कोई नहीं. हां.