ส่วนขยาย Google Cloud Functions

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

เวอร์ชัน 2.0.0

เรียกใช้ Cloud Functions ที่ใช้งานผ่านโปรเจ็กต์ที่อยู่ในระบบคลาวด์ Google

ปัจจุบันส่วนขยายนี้รองรับการเรียกใช้ฟังก์ชันทริกเกอร์ 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 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 ไม่
payload เปย์โหลดที่จะส่งไปพร้อมกับการเรียกใช้ฟังก์ชัน JSON ไม่มี ไม่

คำตอบ

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

พร็อพเพอร์ตี้คำตอบ

ไม่มี

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

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

พร็อพเพอร์ตี้ส่วนขยายทั่วไป

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

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

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

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

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