ส่วนขยาย Google Cloud Functions

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

เวอร์ชัน 2.0.0

เรียกใช้ Cloud Functions ที่ติดตั้งใช้งานผ่านโปรเจ็กต์ Google Cloud

ปัจจุบันส่วนขยายนี้รองรับการเรียกใช้ฟังก์ชันทริกเกอร์ HTTP

ข้อกำหนดเบื้องต้น

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

  1. เปิดใช้ Cloud Functions API

  2. กําหนดและdeployใน 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 Function แสดงผลลัพธ์ 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 ที่สร้างขึ้นจากไฟล์คีย์ของบัญชีบริการ ไม่มี ได้