ส่วนขยาย Google Cloud Functions

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

เวอร์ชัน 1.0.5

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

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

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

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

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

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

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

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

  5. ใช้เนื้อหาของไฟล์ 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 ซึ่งสร้างขึ้นจากไฟล์คีย์บัญชีบริการ ไม่มี ใช่