ส่วนขยาย Google Cloud Functions

คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X
info

เวอร์ชัน 2.0.2

เรียกใช้ Cloud Functions ที่ติดตั้งใช้งานผ่านโปรเจ็กต์ 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 โปรดลองใช้คู่มือเริ่มต้นฉบับย่อ

ตัวอย่าง

ตัวอย่างต่อไปนี้แสดงวิธีเรียกใช้ฟังก์ชันใน Cloud Functions โดยใช้นโยบาย ExtensionCallout

เรียกใช้ฟังก์ชัน Node.js

ตัวอย่างต่อไปนี้แสดงนโยบาย ExtensionCallout ที่เรียกใช้ส่วนขยาย Google Cloud Functions ส่วนขยายจะเรียกฟังก์ชัน "hello world" เริ่มต้นที่รวมไว้เมื่อคุณเปิดใช้ Cloud Functions API

JavaScript ของ Node.js ต่อไปนี้ทำให้ใช้งานได้ใน Cloud Functions สำหรับบัญชี 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>

หาก Cloud Functions แสดงการตอบกลับ JSON และคุณตั้งค่า parsed="true" การตอบกลับจากส่วนขยายจะเป็นการอ้างอิงออบเจ็กต์ หากต้องการดึงคำตอบจากข้อมูลอ้างอิง ให้ใช้ไวยากรณ์ต่อไปนี้ {objectName}.{jsonKey} เช่น

function.response.message

การดำเนินการ

เรียกใช้

เรียกใช้ Cloud Function

ปัจจุบันส่วนขยายนี้รองรับการเรียกใช้ฟังก์ชันทริกเกอร์ 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 ที่จะเรียกใช้ นี่คือชื่อที่คุณใช้เมื่อสร้างฟังก์ชัน (ไม่จำเป็นต้องเป็นชื่อจากโค้ดของฟังก์ชัน) สตริง ไม่มี ได้
method เมธอด HTTP ที่จะใช้เมื่อเรียกใช้ฟังก์ชัน สตริง GET ไม่
เปย์โหลด เพย์โหลดที่จะส่งพร้อมกับการเรียกใช้ฟังก์ชัน JSON ไม่มี ไม่

การตอบกลับ

ค่าการตอบกลับของฟังก์ชันที่ระบุ (หากมี)

พร็อพเพอร์ตี้การตอบกลับ

ไม่มี

ข้อมูลอ้างอิงการกำหนดค่า

ใช้ข้อมูลต่อไปนี้เมื่อกำหนดค่าและติดตั้งใช้งานส่วนขยายนี้เพื่อใช้ในพร็อกซี API ดูขั้นตอนการกำหนดค่าส่วนขยายโดยใช้คอนโซล Apigee ได้ที่การเพิ่มและการกำหนดค่าส่วนขยาย

คุณสมบัติส่วนขยายทั่วไป

พร็อพเพอร์ตี้ต่อไปนี้มีอยู่ในส่วนขยายทุกรายการ

พร็อพเพอร์ตี้ คำอธิบาย ค่าเริ่มต้น ต้องระบุ
name ชื่อที่คุณกําหนดให้การกําหนดค่านี้ของส่วนขยาย ไม่มี ได้
packageName ชื่อแพ็กเกจส่วนขยายที่ระบุโดย Apigee Edge ไม่มี ได้
version หมายเลขเวอร์ชันของแพ็กเกจส่วนขยายที่คุณกําหนดค่าส่วนขยาย ไม่มี ได้
configuration ค่าการกําหนดค่าเฉพาะสําหรับส่วนขยายที่คุณกําลังเพิ่ม ดูพร็อพเพอร์ตี้สําหรับแพ็กเกจส่วนขยายนี้ ไม่มี ได้

พร็อพเพอร์ตี้สำหรับแพ็กเกจส่วนขยายนี้

ระบุค่าสำหรับพร็อพเพอร์ตี้การกำหนดค่าต่อไปนี้ที่เฉพาะเจาะจงสำหรับส่วนขยายนี้

พร็อพเพอร์ตี้ คำอธิบาย ค่าเริ่มต้น ต้องระบุ
ข้อมูลเข้าสู่ระบบ เมื่อป้อนในคอนโซล Apigee Edge นี่คือเนื้อหาของไฟล์คีย์บัญชีบริการ เมื่อส่งผ่าน Management API ค่าจะเป็นค่าที่เข้ารหัส Base64 ซึ่งสร้างจากไฟล์คีย์บัญชีบริการ ไม่มี ได้