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

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

คุณสามารถแก้ไขข้อบกพร่องของส่วนขยายได้โดยใช้ข้อความที่แสดงใน 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.'
    

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

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

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

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

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

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

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

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