ใช้ปลั๊กอิน

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

Edge Microgateway v. 2.5.x

กลุ่มเป้าหมาย

หัวข้อนี้มีไว้สำหรับผู้ปฏิบัติงาน Edge Microgateway ที่ต้องการใช้ปลั๊กอินที่มีอยู่ซึ่ง ติดตั้งไว้กับ Microgateway นอกจากนี้ยังกล่าวถึงปลั๊กอินการป้องกันการเพิ่มขึ้นอย่างฉับพลันและการจำกัดโควต้าโดยละเอียด (ทั้ง 2 รายการรวมอยู่ในการติดตั้ง) หากคุณเป็นนักพัฒนาแอปที่ต้องการพัฒนาปลั๊กอินใหม่ โปรดดูหัวข้อพัฒนา ปลั๊กอินที่กำหนดเอง

ปลั๊กอิน Edge Microgateway คืออะไร

ปลั๊กอินคือโมดูล Node.js ที่เพิ่มฟังก์ชันการทำงานให้กับ Edge Microgateway โมดูลปลั๊กอิน เป็นไปตามรูปแบบที่สอดคล้องกันและจัดเก็บไว้ในตำแหน่งที่ Edge Microgateway ทราบ ซึ่งช่วยให้ Microgateway ค้นพบและโหลดโมดูลเหล่านั้นได้โดยอัตโนมัติ Edge Microgateway มีปลั๊กอินที่มีอยู่หลายรายการ และคุณยังสร้างปลั๊กอินที่กำหนดเองได้ด้วยตามที่อธิบายไว้ในหัวข้อพัฒนาปลั๊กอินที่กำหนดเอง

ปลั๊กอินที่มีอยู่ซึ่งรวมอยู่ใน Edge Microgateway

Edge Microgateway มีปลั๊กอินที่มีอยู่หลายรายการเมื่อติดตั้ง ซึ่งรวมถึงปลั๊กอินต่อไปนี้

ปลั๊กอิน เปิดใช้โดยค่าเริ่มต้นแล้ว คำอธิบาย
analytics ใช่ ส่งข้อมูล Analytics จาก Edge Microgateway ไปยัง Apigee Edge
oauth ใช่ เพิ่มการตรวจสอบโทเค็น OAuth และคีย์ API ลงใน Edge Microgateway ดูหัวข้อ การตั้งค่า และการกำหนดค่า Edge Microgateway
quota ไม่ บังคับใช้โควต้ากับคำขอที่ส่งไปยัง Edge Microgateway ใช้ Apigee Edge เพื่อจัดเก็บและจัดการ โควต้า ดูหัวข้อการใช้ปลั๊กอินโควต้า
spikearrest ไม่ ป้องกันการเพิ่มขึ้นอย่างฉับพลันของปริมาณการเข้าชมและการโจมตีแบบ DoS ดูหัวข้อ การใช้ปลั๊กอินการป้องกันการเพิ่มขึ้นอย่างฉับพลัน
header-uppercase ไม่ พร็อกซีตัวอย่างที่มีคำอธิบายประกอบ ซึ่งมีไว้เพื่อเป็นแนวทางช่วยนักพัฒนาแอปเขียนปลั๊กอินที่กำหนดเอง ดู ปลั๊กอินตัวอย่าง Edge Microgateway
accumulate-request ไม่ สะสมข้อมูลคำขอเป็นออบเจ็กต์เดียวก่อนที่จะส่งข้อมูลไปยังแฮนเดิลอร์ถัดไปในเชนปลั๊กอิน มีประโยชน์สำหรับการเขียนปลั๊กอินการแปลงที่ต้องทำงานกับออบเจ็กต์เนื้อหาคำขอสะสมรายการเดียว
accumulate-response ไม่ สะสมข้อมูลการตอบสนองเป็นออบเจ็กต์เดียวก่อนที่จะส่งข้อมูลไปยังตัวแฮนเดิลถัดไปในเชนปลั๊กอิน มีประโยชน์สำหรับการเขียนปลั๊กอินการแปลงที่ต้องทำงานกับออบเจ็กต์เนื้อหาการตอบสนองสะสมรายการเดียว
transform-uppercase ไม่ แปลงข้อมูลคำขอหรือการตอบสนอง ปลั๊กอินนี้แสดงถึงการใช้งานปลั๊กอินการแปลงตามแนวทางปฏิบัติแนะนำ ปลั๊กอินตัวอย่างจะทำการแปลงแบบง่าย (แปลงข้อมูลคำขอหรือการตอบสนองเป็นตัวพิมพ์ใหญ่) แต่สามารถปรับเปลี่ยนให้ทำการแปลงประเภทอื่นๆ ได้อย่างง่ายดาย เช่น XML เป็น JSON
json2xml ไม่ แปลงข้อมูลคำขอหรือการตอบสนองตามส่วนหัว Accept หรือ Content-Type ดูรายละเอียดได้ในเอกสารประกอบของปลั๊กอินใน GitHub
quota-memory ไม่ บังคับใช้โควต้ากับคำขอที่ส่งไปยัง Edge Microgateway จัดเก็บและจัดการโควต้าในหน่วยความจำภายใน
healthcheck ไม่ แสดงข้อมูลเกี่ยวกับกระบวนการ Edge Microgateway เช่น การใช้งานหน่วยความจำ การใช้ CPU เป็นต้น หากต้องการใช้ปลั๊กอิน ให้เรียก URL /healthcheck ในอินสแตนซ์ Edge Microgateway ปลั๊กอินนี้มีไว้เพื่อเป็นตัวอย่างที่คุณใช้เพื่อ ติดตั้งใช้งานปลั๊กอินการตรวจสอบสถานะของตนเองได้

ตำแหน่งที่จะค้นหาปลั๊กอินที่มีอยู่

ปลั๊กอินที่มีอยู่ซึ่งรวมอยู่ใน Edge Microgateway จะอยู่ที่นี่ โดย [prefix] คือไดเรกทอรีคำนำหน้า npm ดู Edge Microgateway ติดตั้งอยู่ที่ใด หากคุณไม่พบไดเรกทอรีนี้

[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins

การเพิ่มและการกำหนดค่าปลั๊กอิน

ทำตามรูปแบบต่อไปนี้เพื่อเพิ่มและกำหนดค่าปลั๊กอิน

  1. หยุด Edge Microgateway
  2. เปิดไฟล์การกำหนดค่า Edge Microgateway ดูรายละเอียดได้ที่ การทำการเปลี่ยนแปลงการกำหนดค่า สำหรับตัวเลือก
  3. เพิ่มปลั๊กอินลงในองค์ประกอบ plugins:sequence ของไฟล์การกำหนดค่า ดังนี้ ระบบจะเรียกใช้ปลั๊กอินตามลำดับที่ปรากฏในรายการนี้
edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
     level: info
     dir: /var/tmp
     stats_log_interval: 60
  plugins:
     dir: ../plugins
     sequence:   
     - oauth
     - plugin-name
  1. กำหนดค่าปลั๊กอิน ปลั๊กอินบางรายการมีพารามิเตอร์ที่ไม่บังคับซึ่งคุณกำหนดค่าได้ใน ไฟล์การกำหนดค่า เช่น คุณสามารถเพิ่ม stanza ต่อไปนี้เพื่อกำหนดค่าปลั๊กอินการป้องกันการเพิ่มขึ้นอย่างฉับพลัน ดูข้อมูลเพิ่มเติมได้ที่การใช้ปลั๊กอินการป้องกันช่วงที่เพิ่มขึ้น
    edgemicro:
      home: ../gateway
      port: 8000
      max_connections: -1
      max_connections_hard: -1
      logging:
        level: info
        dir: /var/tmp
        stats_log_interval: 60
      plugins:
        dir: ../plugins
        sequence:
          - oauth
          - spikearrest
    spikearrest:
       timeUnit: minute
       allow: 10
    
  1. บันทึกไฟล์
  2. รีสตาร์ทหรือโหลด Edge Microgateway อีกครั้ง ทั้งนี้ขึ้นอยู่กับไฟล์การกำหนดค่าที่คุณแก้ไข

การกำหนดค่าเฉพาะปลั๊กอิน

คุณสามารถลบล้างพารามิเตอร์ปลั๊กอินที่ระบุไว้ในไฟล์การกำหนดค่าได้โดยสร้างการกำหนดค่าเฉพาะปลั๊กอินในไดเรกทอรีนี้:

[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins/config

โดย [prefix] คือไดเรกทอรีคำนำหน้า npm ดู Edge Microgateway ติดตั้งอยู่ที่ใด หากคุณไม่พบไดเรกทอรีนี้

plugins/<plugin_name>/config/default.yaml เช่น คุณสามารถวางบล็อกนี้ไว้ใน plugins/spikearrest/config/default.yaml และบล็อกนี้จะลบล้างการตั้งค่าการกำหนดค่าอื่นๆ

spikearrest:
   timeUnit: hour   
   allow: 10000   
   buffersize: 0

การใช้ปลั๊กอินการป้องกันการเพิ่มขึ้นอย่างฉับพลัน

ปลั๊กอินการป้องกันการเพิ่มขึ้นอย่างฉับพลันช่วยป้องกันการเพิ่มขึ้นอย่างฉับพลันของปริมาณการเข้าชม โดยจะควบคุมจำนวนคำขอ ที่อินสแตนซ์ Edge Microgateway ประมวลผล

การเพิ่มปลั๊กอินการป้องกันการเพิ่มขึ้นอย่างฉับพลัน

ดูหัวข้อ การเพิ่มและการกำหนดค่าปลั๊กอิน

ตัวอย่างการกำหนดค่าสำหรับ การป้องกันการเพิ่มขึ้นอย่างฉับพลัน

edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
  plugins:
    dir: ../plugins
    sequence:
      - oauth
      - spikearrest
spikearrest:
   timeUnit: minute
   allow: 10
   bufferSize: 5

ตัวเลือกการกำหนดค่าสำหรับการป้องกันการเพิ่มขึ้นอย่างฉับพลัน

  • timeUnit: ความถี่ในการรีเซ็ตหน้าต่างการดำเนินการของการป้องกันการเพิ่มขึ้นอย่างฉับพลัน ค่าที่ใช้ได้ คือ "วินาที" หรือ "นาที"
  • allow: จำนวนคำขอสูงสุดที่อนุญาตในระหว่าง timeUnit ดูเพิ่มเติมที่ ที่ หากคุณเรียกใช้กระบวนการ Edge Micro หลายรายการ
  • bufferSize: (ไม่บังคับ ค่าเริ่มต้น = 0) หาก bufferSize > 0 การป้องกันการเพิ่มขึ้นอย่างฉับพลัน จะจัดเก็บคำขอจำนวนนี้ไว้ในบัฟเฟอร์ เมื่อหน้าต่างการดำเนินการถัดไปเกิดขึ้น คำขอที่บัฟเฟอร์ไว้จะได้รับการประมวลผลก่อน ดูเพิ่มเติมที่การเพิ่ม บัฟเฟอร์

การป้องกันการเพิ่มขึ้นอย่างฉับพลันทำงานอย่างไร

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

ลักษณะการทำงานของการป้องกันการเพิ่มขึ้นอย่างฉับพลันในรันไทม์จะแตกต่างจากสิ่งที่คุณอาจคาดหวังจากค่าต่อนาทีหรือต่อวินาทีที่คุณป้อน

ตัวอย่างเช่น สมมติว่าคุณระบุอัตรา 30 คำขอต่อนาที ดังนี้

spikearrest:
   timeUnit: minute
   allow: 30

ในการทดสอบ คุณอาจคิดว่าคุณสามารถส่งคำขอ 30 รายการใน 1 วินาทีได้ ตราบใดที่คำขอเหล่านั้นอยู่ในช่วง 1 นาที แต่ไม่ใช่ลักษณะที่นโยบายบังคับใช้การตั้งค่า หากพิจารณาดูแล้ว คำขอ 30 รายการภายในระยะเวลา 1 วินาทีอาจถือเป็นการเพิ่มขึ้นอย่างฉับพลันขนาดเล็กในบางสภาพแวดล้อม

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

อัตราต่อนาที

อัตราต่อนาทีจะทำให้ราบรื่นขึ้นเป็นช่วงเวลาที่อนุญาตคำขอเป็นวินาที ตัวอย่างเช่น คำขอ 30 รายการต่อนาทีจะทำให้ราบรื่นขึ้นดังนี้

60 วินาที (1 นาที) / 30 = ช่วงเวลา 2 วินาที หรือประมาณ 1 คำขอที่อนุญาตทุกๆ 2 วินาที คำขอที่ 2 ภายใน 2 วินาทีจะล้มเหลว นอกจากนี้ คำขอที่ 31 ภายใน 1 นาทีจะล้มเหลว

อัตราต่อวินาที

อัตราต่อวินาทีจะทำให้ราบรื่นขึ้นเป็นช่วงเวลาที่อนุญาตคำขอเป็นมิลลิวินาที ตัวอย่างเช่น คำขอ 10 รายการ/วินาทีจะทำให้ราบรื่นขึ้นดังนี้

1, 000 มิลลิวินาที (1 วินาที) / 10 = ช่วงเวลา 100 มิลลิวินาที หรือประมาณ 1 คำขอที่อนุญาต ทุกๆ 100 มิลลิวินาที คำขอที่ 2 ภายใน 100 มิลลิวินาทีจะล้มเหลว นอกจากนี้ คำขอที่ 11 ภายใน 1 วินาทีจะล้มเหลว

เมื่อเกินขีดจำกัด

หากจำนวนคำขอเกินขีดจำกัดภายในช่วงเวลาที่ระบุ การป้องกันการเพิ่มขึ้นอย่างฉับพลัน จะแสดงข้อความแสดงข้อผิดพลาดนี้พร้อมสถานะ HTTP 503

{"error": "spike arrest policy violated"}

การเพิ่มบัฟเฟอร์

คุณมีตัวเลือกในการเพิ่มบัฟเฟอร์ลงในนโยบาย สมมติว่าคุณตั้งค่าบัฟเฟอร์เป็น 10 คุณจะเห็นว่า API ไม่แสดงข้อผิดพลาดทันทีเมื่อคุณเกินขีดจำกัดการป้องกันการเพิ่มขึ้นอย่างฉับพลัน แต่ระบบจะบัฟเฟอร์คำขอ (สูงสุดตามจำนวนที่ระบุ) และประมวลผลคำขอที่บัฟเฟอร์ไว้ทันทีที่หน้าต่างการดำเนินการที่เหมาะสมถัดไปพร้อมใช้งาน ค่าเริ่มต้น bufferSize คือ 0

หากคุณเรียกใช้กระบวนการ Edge Micro หลายรายการ

จำนวนคำขอที่อนุญาตจะขึ้นอยู่กับจำนวนกระบวนการทำงานของ Edge Micro ที่กำลังทำงานอยู่ การป้องกันการเพิ่มขึ้นอย่างฉับพลันจะคำนวณจำนวนคำขอที่อนุญาตต่อกระบวนการทำงาน โดยค่าเริ่มต้น จำนวนกระบวนการ Edge Micro จะเท่ากับจำนวน CPU ในเครื่องที่ติดตั้ง Edge Micro อย่างไรก็ตาม คุณสามารถกำหนดค่าจำนวนกระบวนการทำงานได้เมื่อเริ่ม Edge Micro โดยใช้ตัวเลือก --processes ในคำสั่ง start ตัวอย่างเช่น หากคุณ ต้องการให้การป้องกันการเพิ่มขึ้นอย่างฉับพลันทริกเกอร์ที่คำขอ 100 รายการในช่วงเวลาที่กำหนด และหากคุณเริ่ม Edge Microgateway ด้วยตัวเลือก --processes 4 ให้ตั้งค่า allow: 25 ในการ กำหนดค่าการป้องกันการเพิ่มขึ้นอย่างฉับพลัน โดยสรุป กฎง่ายๆ คือให้ตั้งค่าพารามิเตอร์การกำหนดค่า allow config เป็นค่า "จำนวนการป้องกันการเพิ่มขึ้นอย่างฉับพลันที่ต้องการ / จำนวนกระบวนการ"

การใช้ปลั๊กอินโควต้า

โควต้าจะระบุจำนวนข้อความคำขอที่แอปได้รับอนุญาตให้ส่งไปยัง API ในช่วงเวลา 1 ชั่วโมง 1 วัน 1 สัปดาห์ หรือ 1 เดือน เมื่อแอปถึงขีดจำกัดโควต้า ระบบจะปฏิเสธการเรียก API ครั้งต่อๆ ไป ดูเพิ่มเติมที่การป้องกันการเพิ่มขึ้นอย่างฉับพลันและการจำกัดโควต้าแตกต่างกันอย่างไร

การเพิ่มปลั๊กอินโควต้า

ดูหัวข้อ การเพิ่มและการกำหนดค่าปลั๊กอิน

การกำหนดค่าผลิตภัณฑ์ใน Apigee Edge

คุณกำหนดค่าโควต้าใน UI ของ Apigee Edge ซึ่งเป็นที่ที่คุณกำหนดค่าผลิตภัณฑ์ API คุณต้องทราบ ว่าผลิตภัณฑ์ใดมีพร็อกซีที่รับรู้ถึง Microgateway ซึ่งคุณต้องการจำกัดด้วยโควต้า คุณต้องเพิ่มผลิตภัณฑ์นี้ลงในแอปของนักพัฒนาแอป เมื่อคุณเรียก API ที่มีการตรวจสอบสิทธิ์โดยใช้ คีย์ในแอปของนักพัฒนาแอป ระบบจะใช้โควต้ากับการเรียก API เหล่านั้น

  1. เข้าสู่ระบบบัญชีขององค์กร Apigee Edge
  2. ใน UI ของ Edge ให้เปิดผลิตภัณฑ์ที่เชื่อมโยงกับพร็อกซีที่รับรู้ถึง Microgateway ซึ่ง คุณต้องการใช้โควต้า
    1. ใน UI ให้เลือกผลิตภัณฑ์ จากเมนู "เผยแพร่"
    2. เปิดผลิตภัณฑ์ที่มี API ที่คุณต้องการใช้โควต้า
    3. คลิกแก้ไข
    4. ในช่อง "โควต้า" ให้ระบุช่วงเวลาโควต้า เช่น คำขอ 100 รายการทุกๆ 1 นาที หรือคำขอ 50,000 รายการทุกๆ 2 ชั่วโมง

  1. คลิกบันทึก
  2. ตรวจสอบว่าได้เพิ่มผลิตภัณฑ์ลงในแอปของนักพัฒนาแอปแล้ว คุณจะต้องใช้คีย์จากแอปนี้เพื่อเรียก API ที่มีการตรวจสอบสิทธิ์

ตัวอย่างการกำหนดค่าสำหรับการจำกัดโควต้า

edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
  plugins:
    dir: ../plugins
    sequence:
      - oauth
      - quota

ตัวเลือกการกำหนดค่าสำหรับการจำกัดโควต้า

ไม่มีตัวเลือกการกำหนดค่าเพิ่มเติมสำหรับปลั๊กอินโควต้า

การทดสอบปลั๊กอินโควต้า

เมื่อเกินโควต้า ระบบจะแสดงสถานะ HTTP 403 ให้ไคลเอ็นต์ พร้อมข้อความต่อไปนี้

{"error": "exceeded quota"}

การป้องกันการเพิ่มขึ้นอย่างฉับพลันและการจำกัดโควต้าแตกต่างกันอย่างไร

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

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

ใช้การป้องกันการเพิ่มขึ้นอย่างฉับพลันเพื่อป้องกันการเพิ่มขึ้นอย่างฉับพลันของปริมาณการเข้าชม API โดยปกติแล้ว การป้องกันการเพิ่มขึ้นอย่างฉับพลันจะ ใช้เพื่อป้องกันการโจมตีแบบ DDoS หรือการโจมตีที่เป็นอันตรายอื่นๆ ที่อาจเกิดขึ้น