คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่
เอกสารประกอบของ Apigee X info
เวอร์ชัน 2.0.0
เรียกใช้ Cloud Functions ที่ใช้งานผ่านโปรเจ็กต์ที่อยู่ในระบบคลาวด์ Google
ปัจจุบันส่วนขยายนี้รองรับการเรียกใช้ฟังก์ชันทริกเกอร์ HTTP
ข้อกำหนดเบื้องต้น
เนื้อหานี้เป็นข้อมูลอ้างอิงสำหรับการกำหนดค่าและการใช้ส่วนขยายนี้ ก่อนใช้ส่วนขยายจากพร็อกซี API โดยใช้นโยบาย ExtensionCallout คุณต้องดำเนินการต่อไปนี้
เปิดใช้ Cloud Functions API
กำหนดและทำให้ใช้งานได้ฟังก์ชันใน Cloud Functions สำหรับโปรเจ็กต์ Google Cloud
ให้สิทธิ์เข้าถึงแก่ผู้ใช้ผ่าน IAM สำหรับระดับการเข้าถึงที่คุณต้องการให้ฟังก์ชัน ตัวอย่างเช่น คุณสามารถจำกัดการเข้าถึงฟังก์ชันให้เฉพาะบัญชีบริการที่คุณใช้กำหนดค่าส่วนขยายได้
ใช้เนื้อหาของไฟล์ 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 ซึ่งสร้างจากไฟล์คีย์บัญชีบริการ | ไม่มี | ได้ |