การแก้ไขข้อบกพร่องของส่วนขยาย

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

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

  • เครื่องมือ Trace ของ Apigee Edge เป็นที่ที่คุณใช้ทดสอบและแก้ไขโค้ดพร็อกซี API ซ้ำๆ ขณะพัฒนา ข้อความ Trace จะมีข้อผิดพลาดจากโค้ดพร็อกซี API ซึ่งรวมถึงการกำหนดค่าพร็อกซี API และนโยบาย

    ข้อผิดพลาดที่เกี่ยวข้องกับส่วนขยายซึ่งปรากฏในเครื่องมือ Trace มักจะไม่มีรายละเอียดมากนัก นอกเหนือจากการระบุว่าการเรียกใช้ส่วนขยายใดล้มเหลว พร้อมกับรหัสข้อผิดพลาด HTTP หากไม่พบข้อมูลที่เป็นประโยชน์ในเครื่องมือ Trace ให้ดูที่บันทึกของส่วนขยายที่คุณใช้อยู่

  • ส่วนขยายจะสร้างรายการบันทึกในขณะรันไทม์ (บันทึกของส่วนขยายมีไว้สำหรับผู้ดูแลระบบขององค์กรเท่านั้น)

    บันทึกเหล่านี้จะมีรายการที่แสดงผลโดยทรัพยากรภายนอกที่กำหนดค่าให้ส่วนขยายโต้ตอบด้วย ตัวอย่างเช่น หากกำหนดค่าข้อมูลเข้าสู่ระบบของทรัพยากรภายนอกในส่วนขยายไม่ถูกต้อง ข้อผิดพลาดมีแนวโน้มที่จะปรากฏที่นี่

    นอกจากนี้ บันทึกยังรวมถึงรายการจากโค้ดส่วนขยายภายในด้วย เมื่อดูบันทึก โปรดทราบว่าบางรายการอาจไม่เกี่ยวข้องกับข้อผิดพลาดที่คุณกำลังแก้ไข รายการบันทึกที่เกี่ยวข้องกับส่วนขยายมักจะขึ้นต้นด้วยคำว่า details เช่น ในรายการบันทึกต่อไปนี้จากส่วนขยาย Cloud Pub/Sub

    details: 'Invalid resource name given (name=projects/example-test-123456/topic/extension-example). Refer to https://cloud.google.com/pubsub/docs/admin#resource_names for more information.'
    

ประเภทและสาเหตุของข้อผิดพลาด

การประมวลผลคำขอของส่วนขยายจะเริ่มจากนโยบาย ExtensionCallout ในพร็อกซี API ผ่านส่วนขยาย ไปยังทรัพยากรภายนอก แล้วกลับมาอีกครั้ง ดังนั้นข้อผิดพลาดจึงอาจเกิดขึ้นได้ในที่ใดที่หนึ่ง

ข้อผิดพลาดที่คุณเห็นอาจอยู่ในหมวดหมู่ต่อไปนี้

ข้อผิดพลาดในการกำหนดค่าส่วนขยาย

การกำหนดค่านี้เป็นสิ่งที่ผู้ดูแลระบบองค์กรทำเมื่อเพิ่มส่วนขยายลงในสภาพแวดล้อม

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

หลักฐานในเครื่องมือ Trace

ในเครื่องมือแก้ไขพร็อกซี ข้อผิดพลาดเหล่านี้มักจะปรากฏเป็นข้อผิดพลาดระดับ 4xx- หรือ 5xx- อย่างไรก็ตาม เครื่องมือแก้ไขพร็อกซีจะไม่แสดงรายละเอียดเกี่ยวกับสาเหตุของข้อผิดพลาด นอกเหนือจากการระบุว่าส่วนขยายแสดงข้อผิดพลาด

{
  "fault": {
    "faultstring":"Execution of ConnectorCallout Logging-Extension failed. Reason: Connector returned error statuscode=500",
    "detail": {
      "errorcode":"steps.connectorcallout.ExecutionFailed"
    }
  }
}

หลักฐานในบันทึกของส่วนขยาย

หากมีรายละเอียดเกี่ยวกับข้อผิดพลาดประเภทนี้ คุณจะเห็นรายละเอียดดังกล่าวในรายการบันทึกของส่วนขยาย ข้อความแสดงข้อผิดพลาดต่อไปนี้ที่แสดงผลโดยบริการ Cloud Pub/Sub เกิดจากรหัสโปรเจ็กต์ที่มีรูปแบบไม่ถูกต้อง

details: 'Project does not exist: example-test-12345'

ข้อผิดพลาดในการกำหนดค่านโยบาย ExtensionCallout

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

  • ค่าไม่ถูกต้องที่ทรัพยากรภายนอกประเมิน

    ข้อผิดพลาดนี้อาจเกิดขึ้นเมื่อข้อผิดพลาดในการกำหนดค่าปรากฏว่าถูกต้องสำหรับส่วนขยาย แต่ไม่ถูกต้องสำหรับทรัพยากรภายนอก ตัวอย่างเช่น หากส่วนขยายส่งรหัสฐานข้อมูลที่ไม่ถูกต้องไปยัง Cloud Spanner, Cloud Spanner จะแสดงข้อผิดพลาดที่บันทึกไว้ในบันทึกของส่วนขยาย ดังนี้

    details: 'Database not found: projects/example-test-123456/instances/spanner-extension-example-db/databases/my-business-d'
    

    ข้อผิดพลาดนี้อาจเกิดขึ้นได้เช่นกันกับ JSON การกำหนดค่าที่ไม่ถูกต้องในองค์ประกอบ <Input> ของนโยบาย สำหรับส่วนขยายบางรายการ ส่วนหนึ่งของ JSON จะได้รับการประมวลผลโดยส่วนขยาย และอีกส่วนหนึ่งจะส่งไปยังทรัพยากร ตัวอย่างเช่น JSON การกำหนดค่าส่วนขยาย Cloud Logging มีออบเจ็กต์ metadata ซึ่งเนื้อหาจะส่งไปยัง Cloud Logging ชื่อคีย์ที่ไม่ถูกต้อง เช่น typ แทน type อาจแสดงข้อผิดพลาดจากทรัพยากรภายนอกซึ่งปรากฏเป็นรายการในบันทึกของส่วนขยาย ดังนี้

    details: 'Resource type cannot be empty'
    
  • ค่าไม่ถูกต้องที่ส่วนขยายประเมิน

    ข้อผิดพลาดเหล่านี้รวมถึงข้อผิดพลาดเกี่ยวกับไวยากรณ์ในส่วนที่นโยบายประเมินของ JSON องค์ประกอบ <Input> การสะกดชื่อการดำเนินการผิดในองค์ประกอบ <Action> และอื่นๆ ข้อผิดพลาดเหล่านี้มักจะปรากฏในเครื่องมือ Trace แต่ไม่ปรากฏในบันทึกของส่วนขยาย

หลักฐานในเครื่องมือ Trace

ในเครื่องมือแก้ไขพร็อกซี ข้อผิดพลาดเหล่านี้มักจะปรากฏเป็นข้อผิดพลาดระดับ 4xx- หรือ 5xx- อย่างไรก็ตาม เครื่องมือแก้ไขพร็อกซีจะไม่แสดงรายละเอียดเกี่ยวกับสาเหตุของข้อผิดพลาด นอกเหนือจากการระบุว่าส่วนขยายแสดงข้อผิดพลาด ข้อผิดพลาดต่อไปนี้จะปรากฏในเครื่องมือ Trace เมื่อสะกดชื่อการดำเนินการผิดใน ส่วนขยาย Cloud Firestore

{
  "fault":{
    "faultstring":"Execution of ConnectorCallout Add-User-Data failed. Reason: Connector returned error statuscode=404","detail":
    {
      "errorcode":"steps.connectorcallout.ExecutionFailed"
    }
  }
}

หลักฐานในบันทึกของส่วนขยาย

เมื่อการกำหนดค่านโยบายทำให้เกิดข้อผิดพลาดในการประมวลผลในทรัพยากรภายนอก ข้อผิดพลาดมักจะปรากฏในบันทึก

ข้อผิดพลาดนี้เกิดขึ้นเมื่อคำขอไปยังทรัพยากรภายนอกไม่สำเร็จด้วยเหตุผลที่ไม่เกี่ยวข้องกับส่วนขยาย

ตัวอย่างเช่น สมมติว่าคุณใช้ส่วนขยาย Cloud Spanner เพื่อเพิ่มแถวลงในฐานข้อมูล แต่ค่าคีย์หลักของแถวถูกใช้ในแถวที่มีอยู่แล้ว Cloud Spanner จะแสดงข้อผิดพลาดไปยังส่วนขยาย ซึ่งจะเพิ่มข้อผิดพลาดลงในบันทึกของส่วนขยาย

หลักฐานในเครื่องมือ Trace

ในเครื่องมือแก้ไขพร็อกซี ข้อผิดพลาดเหล่านี้มักจะปรากฏเป็นข้อผิดพลาดระดับ 4xx- หรือ 5xx อย่างไรก็ตาม เครื่องมือแก้ไขพร็อกซีจะไม่แสดงรายละเอียดเกี่ยวกับสาเหตุของข้อผิดพลาด นอกเหนือจากการระบุว่าส่วนขยายแสดงข้อผิดพลาด

{
  "fault":{
    "faultstring":"Execution of ConnectorCallout Add-User-Data failed. Reason: Connector returned error statuscode=404",
    "detail":{
      "errorcode":"steps.connectorcallout.ExecutionFailed"
    }
  }
}

หลักฐานในบันทึกของส่วนขยาย

โดยปกติแล้วบันทึกจะมีรายการที่มีข้อความจากทรัพยากรภายนอกเอง ข้อความในบันทึกต่อไปนี้จาก Cloud Spanner อธิบายข้อผิดพลาดเกี่ยวกับค่าคีย์หลักที่มีอยู่

details: 'Row [jonesy42] in table user already exists'