ส่วนขยาย Google Cloud Functions

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

เวอร์ชัน 1.3.1

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

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

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

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

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

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

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

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

  5. ใช้เนื้อหาของไฟล์ JSON คีย์ที่ได้เมื่อเพิ่มและกำหนดค่าส่วนขยายโดยใช้ข้อมูลอ้างอิงการกำหนดค่า

เกี่ยวกับ Cloud Functions

คุณสามารถใช้ Google Cloud Functions ในการสร้างและทำให้ฟังก์ชันใช้งานได้บน Google Cloud แล้วเรียกใช้ฟังก์ชันเหล่านั้นจากโค้ดอื่นๆ สำหรับข้อมูลเบื้องต้นเกี่ยวกับฟังก์ชันระบบคลาวด์ ให้ลองลองใช้การเริ่มต้นอย่างรวดเร็ว

ตัวอย่าง

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

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

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

JavaScript Node.js ต่อไปนี้มีการทำให้ใช้งานได้ใน Cloud Functions สำหรับบัญชี GCP หากคำขอมีพร็อพเพอร์ตี้ข้อความ รหัสจะแสดงพร็อพเพอร์ตี้นั้น มิเช่นนั้น จะแสดงข้อความ "สวัสดีทุกคน" เป็นการตอบสนอง

/**
 * 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 โค้ดการกำหนดค่านโยบาย Extensionข้อความไฮไลต์ ต่อไปนี้ใช้ชื่อนี้ รวมถึงค่ารหัสภูมิภาคและรหัสโปรเจ็กต์ที่ตรงกับรายละเอียดในสภาพแวดล้อม 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

การทำงาน

เรียกใช้

เรียกใช้ฟังก์ชันระบบคลาวด์

ปัจจุบันส่วนขยายนี้รองรับการเรียกใช้ฟังก์ชันทริกเกอร์ 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 นี่จะเป็นเนื้อหาในไฟล์คีย์บัญชีบริการของคุณ เมื่อส่งผ่าน API การจัดการ ค่านี้จะเป็นค่าที่เข้ารหัสฐาน 64 ซึ่งสร้างขึ้นจากไฟล์คีย์บัญชีบริการ ไม่มี ได้