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

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

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

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

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

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

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

    บันทึกยังรวมรายการจากโค้ดส่วนขยายภายในด้วย ขณะอ่านบันทึก โปรดทราบว่าบางรายการไม่เกี่ยวข้องกับข้อผิดพลาดที่คุณกำลังแก้ไข โดยปกติแล้วรายการบันทึกที่เกี่ยวข้องกับส่วนขยายจะขึ้นต้นด้วยคำว่า 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.'
    

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

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

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

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

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

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

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

ในตัวแก้ไขพร็อกซี ข้อผิดพลาดเหล่านี้มักจะแสดงเป็นข้อผิดพลาดระดับ 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'

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

ข้อผิดพลาดเหล่านี้เกิดขึ้นเมื่อนโยบาย Extensionคำขอราคาเสนอ กำหนดค่าไม่ถูกต้อง ไม่ว่าจะผ่านข้อผิดพลาดทางไวยากรณ์ในการกำหนดค่านโยบาย หรือผ่านคีย์หรือค่าการกำหนดค่าที่ไม่ถูกต้อง ข้อผิดพลาดเหล่านี้มีอยู่ 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> และอื่นๆ ข้อผิดพลาดเหล่านี้มักจะปรากฏในเครื่องมือติดตาม แต่จะไม่ปรากฏในบันทึกของส่วนขยาย

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

ในตัวแก้ไขพร็อกซี ข้อผิดพลาดเหล่านี้มักจะแสดงเป็นข้อผิดพลาดระดับ 4xx หรือ 5xx อย่างไรก็ตาม ตัวแก้ไขพร็อกซีจะไม่แสดงข้อมูลเฉพาะเกี่ยวกับ สาเหตุของข้อผิดพลาด ยกเว้นข้อความว่าส่วนขยายนั้นแสดงข้อผิดพลาด ข้อผิดพลาดต่อไปนี้จะปรากฏในเครื่องมือติดตามเมื่อสะกดชื่อการดำเนินการในส่วนขยาย 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 จะส่งกลับข้อผิดพลาดไปยังส่วนขยาย ซึ่งจะเป็นการเพิ่มข้อผิดพลาดลงในบันทึกของส่วนขยาย

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

ในตัวแก้ไขพร็อกซี ข้อผิดพลาดเหล่านี้มักจะแสดงเป็นข้อผิดพลาดระดับ 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'