Men-debug ekstensi

Anda sedang melihat dokumentasi Apigee Edge.
Buka dokumentasi Apigee X.
info

Anda dapat men-debug ekstensi menggunakan pesan yang terlihat di dua tempat: alat Trace dan log ekstensi. Saat ekstensi tidak berfungsi, terkadang mengidentifikasi masalah memerlukan informasi dari kedua tempat.

  • Alat Trace Apigee Edge adalah tempat Anda menguji dan mengedit kode proxy API secara berulang saat mengembangkannya. Pesan pelacakan mencakup error dari kode proxy API Anda, termasuk proxy API dan konfigurasi kebijakan.

    Kesalahan terkait ekstensi yang muncul di alat Pelacakan biasanya tidak berisi banyak detail, kecuali untuk mengatakan info ekstensi mana yang gagal, bersama dengan kode kesalahan HTTP. Bila Anda tidak melihat apa pun yang berguna di sini, tempat terbaik berikutnya untuk mencarinya adalah log untuk ekstensi yang Anda gunakan.

  • Ekstensi menghasilkan entri log saat runtime. (Log ekstensi hanya tersedia untuk administrator organisasi.)

    Log ini mencakup entri yang ditampilkan oleh resource eksternal yang dikonfigurasi untuk berinteraksi dengan ekstensi. Misalnya, jika kredensial resource eksternal salah dikonfigurasi dalam ekstensi, error kemungkinan akan muncul di sini.

    Log juga menyertakan entri dari kode ekstensi internal. Saat Anda memeriksa log, ingatlah bahwa beberapa entri tidak relevan dengan kesalahan yang Anda perbaiki. Entri log terkait ekstensi biasanya dimulai dengan kata details, seperti dalam entri log berikut dari ekstensi 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.'
    

Jenis dan penyebab error

Pemrosesan permintaan ekstensi mengalir dari kebijakan Extensioncallout di proxy API, melalui ekstensi, keluar ke resource eksternal, lalu kembali lagi. Jadi, error bisa terjadi di salah satu tempat tersebut.

Kesalahan yang Anda lihat mungkin termasuk dalam kategori berikut.

Error dalam konfigurasi ekstensi

Ini adalah konfigurasi yang dilakukan administrator organisasi saat menambahkan ekstensi ke lingkungan.

Misalnya, jika Anda mengonfigurasi ekstensi Cloud Logging dengan project ID Google Cloud yang salah, Google Cloud Logging akan menampilkan error ke ekstensi tersebut. Detail tentang error ini biasanya ada di log ekstensi.

Bukti dalam alat Trace

Di editor proxy, error ini biasanya akan muncul sebagai error tingkat 4xx atau 5xx. Namun, editor proxy tidak akan menampilkan informasi spesifik tentang penyebab error, kecuali mengatakan bahwa ekstensi menampilkan error.

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

Bukti dalam log ekstensi

Jika ada detail tentang jenis error ini, Anda akan melihatnya di entri log ekstensi. Pesan error berikut, yang ditampilkan oleh layanan Cloud Pub/Sub, berasal dari format ID project yang salah.

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

Error dalam konfigurasi kebijakan ExtensionInfo

Error ini terjadi saat kebijakan ExtensionCallout salah dikonfigurasi, baik karena error sintaksis konfigurasi kebijakan maupun melalui kunci atau nilai konfigurasi yang salah. Error ini memiliki dua bentuk, bergantung pada cara kebijakan dikonfigurasi:

  • Nilai yang salah dievaluasi oleh resource eksternal

    Hal ini dapat terjadi jika error konfigurasi tampak valid untuk ekstensi, tetapi tidak valid untuk resource eksternal. Misalnya, jika ekstensi meneruskan ID database yang salah ke Cloud Spanner, Cloud Spanner akan menampilkan error yang dicatat dalam log ekstensi:

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

    Hal ini juga dapat terjadi untuk JSON konfigurasi yang salah dalam elemen <Input> kebijakan. Untuk beberapa ekstensi, sebagian JSON diproses oleh ekstensi dan sebagian diteruskan ke resource. Misalnya, JSON konfigurasi ekstensi Cloud Logging menyertakan objek metadata yang kontennya diteruskan ke Cloud Logging. Nama kunci yang salah di sana—seperti typ dan bukan type—dapat menampilkan error dari resource eksternal yang muncul sebagai entri di log ekstensi:

    details: 'Resource type cannot be empty'
    
  • Nilai yang salah dievaluasi oleh ekstensi

    Error ini mencakup error sintaksis di bagian JSON elemen <Input> yang dievaluasi kebijakannya, kesalahan ejaan nama tindakan dalam elemen <Action>, dan seterusnya. Error ini biasanya akan muncul di alat Trace, tetapi tidak di log ekstensi.

Bukti dalam alat Trace

Di editor proxy, error ini biasanya akan muncul sebagai error tingkat 4xx atau 5xx. Namun, editor proxy tidak akan menampilkan informasi spesifik tentang penyebab error, kecuali mengatakan bahwa ekstensi menampilkan error. Error berikut muncul di alat Trace saat salah mengeja nama tindakan di ekstensi Cloud Firestore.

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

Bukti dalam log ekstensi

Jika konfigurasi kebijakan menghasilkan error pemrosesan di resource eksternal, error tersebut biasanya akan muncul di log.

Ini adalah error saat permintaan ke resource eksternal tidak berhasil karena alasan yang tidak terkait dengan ekstensi.

Misalnya, bayangkan Anda menggunakan ekstensi Cloud Spanner untuk menambahkan baris ke database, tetapi nilai kunci utama baris sudah digunakan di baris yang ada. Cloud Spanner akan menampilkan error ke ekstensi, yang akan menambahkan error ke log ekstensi.

Bukti dalam alat Trace

Di editor proxy, error ini biasanya akan muncul sebagai error tingkat 4xx atau 5xx. Namun, editor proxy tidak akan menampilkan informasi spesifik terkait penyebab error, kecuali mengatakan bahwa ekstensi menampilkan error.

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

Bukti dalam log ekstensi

Log biasanya akan memiliki entri dengan pesan dari sumber daya eksternal itu sendiri. Pesan log dari Cloud Spanner berikut menjelaskan error nilai kunci utama yang ada.

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