คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X ข้อมูล
เวอร์ชัน 1.0.5
เรียกใช้ Cloud Functions ที่ทำให้ใช้งานได้ผ่านโปรเจ็กต์ Google Cloud
ปัจจุบันส่วนขยายนี้รองรับการเรียกใช้ฟังก์ชันทริกเกอร์ HTTP
ข้อกำหนดเบื้องต้น
เนื้อหานี้ให้ข้อมูลอ้างอิงสำหรับการกำหนดค่าและใช้ส่วนขยายนี้ ก่อนที่จะใช้ส่วนขยายจากพร็อกซี API โดยใช้นโยบาย Extension), คุณต้องทำดังนี้
เปิดใช้ Cloud Functions API
กำหนดและdeployในฟังก์ชันระบบคลาวด์สำหรับโปรเจ็กต์ Google Cloud
ให้สิทธิ์การเข้าถึงแก่ผู้ใช้ผ่าน IAM สำหรับระดับการเข้าถึงที่คุณต้องการสำหรับฟังก์ชันนี้ เช่น คุณสามารถจํากัดการเข้าถึงฟังก์ชันให้เป็นบัญชีบริการที่คุณใช้กําหนดค่าส่วนขยายเท่านั้น
ใช้เนื้อหาของไฟล์ JSON คีย์ที่ได้มาเมื่อเพิ่มและกำหนดค่าส่วนขยายโดยใช้การอ้างอิงการกำหนดค่า
เกี่ยวกับ Cloud Function
ด้วย Google Cloud Functions คุณจะสร้างและทำให้ฟังก์ชันใช้งานได้ใน Google Cloud จากนั้นเรียกใช้ฟังก์ชันเหล่านั้นจากโค้ดอื่น หากต้องการดูข้อมูลเบื้องต้นเกี่ยวกับ Cloud Functions ให้ลองใช้การเริ่มต้นอย่างรวดเร็วอย่างใดอย่างหนึ่ง
ลองฟัง
ตัวอย่างต่อไปนี้จะแสดงวิธีเรียกใช้ฟังก์ชันในฟังก์ชันระบบคลาวด์โดยใช้นโยบาย Extensionวิส
เรียกใช้ฟังก์ชัน Node.js
ตัวอย่างต่อไปนี้มีนโยบาย Extension callout ที่เรียกใช้ส่วนขยาย Google Cloud Functions ส่วนขยายนี้จะเรียกใช้ฟังก์ชัน "hello world" ตามค่าเริ่มต้นเมื่อคุณเปิดใช้ Cloud Functions API
JavaScript Node.js ต่อไปนี้มีการใช้งานในฟังก์ชันระบบคลาวด์สำหรับบัญชี 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"
โปรดดูที่องค์ประกอบ<Export> สำหรับข้อมูลเพิ่มเติม
หาก 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>
พารามิเตอร์คำขอ
พารามิเตอร์ | คำอธิบาย | Type | ค่าเริ่มต้น | จำเป็น |
---|---|---|---|---|
region | ภูมิภาคของ Google Cloud ที่ทำให้ฟังก์ชันใช้งานได้ | สตริง | ไม่มี | ใช่ |
projectId | รหัสโปรเจ็กต์ GCP | สตริง | ไม่มี | ใช่ |
functionName | ชื่อของฟังก์ชัน HTTP ที่จะเรียกใช้ นี่คือชื่อที่คุณใช้เมื่อสร้างฟังก์ชัน (ไม่จำเป็นต้องเป็นชื่อจากโค้ดของฟังก์ชัน) | สตริง | ไม่มี | ใช่ |
method | เมธอด HTTP ที่จะใช้เมื่อเรียกใช้ฟังก์ชัน | สตริง | GET |
ไม่มี |
payload | เพย์โหลดที่จะส่งพร้อมกับการเรียกใช้ฟังก์ชัน | JSON | ไม่มี | ไม่มี |
คำตอบ
ค่าการตอบกลับของฟังก์ชันที่ระบุ (หากมี)
พร็อพเพอร์ตี้การตอบกลับ
ไม่มี
ข้อมูลอ้างอิงการกำหนดค่า
ใช้ข้อมูลต่อไปนี้เมื่อคุณกำหนดค่าและทำให้ส่วนขยายนี้ใช้งานได้ เพื่อใช้ในพร็อกซี API โปรดดูขั้นตอนการกำหนดค่าส่วนขยายโดยใช้คอนโซล Apigee ในการเพิ่มและการกำหนดค่าส่วนขยาย
คุณสมบัติส่วนขยายที่พบบ่อย
พร็อพเพอร์ตี้ต่อไปนี้มีอยู่ในส่วนขยายทุกรายการ
พร็อพเพอร์ตี้ | คำอธิบาย | ค่าเริ่มต้น | ต้องระบุ |
---|---|---|---|
name |
ชื่อที่คุณกําหนดให้การกําหนดค่านี้ของส่วนขยาย | ไม่มี | ได้ |
packageName |
ชื่อแพ็กเกจส่วนขยายที่ระบุโดย Apigee Edge | ไม่มี | ได้ |
version |
หมายเลขเวอร์ชันของแพ็กเกจส่วนขยายที่คุณกําหนดค่าส่วนขยาย | ไม่มี | ได้ |
configuration |
ค่าการกําหนดค่าเฉพาะสําหรับส่วนขยายที่คุณกําลังเพิ่ม ดูพร็อพเพอร์ตี้สําหรับแพ็กเกจส่วนขยายนี้ | ไม่มี | ได้ |
พร็อพเพอร์ตี้สำหรับแพ็กเกจส่วนขยายนี้
ระบุค่าสำหรับพร็อพเพอร์ตี้การกำหนดค่าต่อไปนี้ที่เจาะจงสำหรับส่วนขยายนี้
พร็อพเพอร์ตี้ | คำอธิบาย | ค่าเริ่มต้น | จำเป็น |
---|---|---|---|
ข้อมูลเข้าสู่ระบบ | ซึ่งเมื่อป้อนในคอนโซล Apigee Edge คือเนื้อหาในไฟล์คีย์บัญชีบริการ เมื่อส่งผ่าน API การจัดการ ค่าดังกล่าวคือค่าที่เข้ารหัสแบบ Base64 ซึ่งสร้างขึ้นจากไฟล์คีย์บัญชีบริการ | ไม่มี | ใช่ |