ส่วนขยาย Google Cloud Functions

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

เวอร์ชัน 1.0.5

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

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

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

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

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

  2. กำหนดและทำให้ใช้งานได้ฟังก์ชันใน Cloud Functions สำหรับโปรเจ็กต์ Google Cloud

  3. ให้สิทธิ์เข้าถึงแก่ผู้ใช้ผ่าน IAM สำหรับระดับการเข้าถึงที่คุณต้องการให้ฟังก์ชัน ตัวอย่างเช่น คุณสามารถจำกัดการเข้าถึงฟังก์ชันให้เฉพาะบัญชีบริการที่คุณใช้กำหนดค่าส่วนขยายได้

  4. ใช้ GCP Console เพื่อสร้างคีย์สำหรับบัญชีบริการ

  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 ซึ่งสร้างจากไฟล์คีย์บัญชีบริการ ไม่มี ได้