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. Jika ekstensi tidak berfungsi, mengidentifikasi masalah terkadang memerlukan informasi dari kedua tempat tersebut.
Alat Trace Apigee Edge adalah tempat Anda menguji dan mengedit kode proxy API secara iteratif saat Anda mengembangkannya. Pesan rekaman aktivitas mencakup error dari kode proxy API Anda, termasuk konfigurasi proxy API dan kebijakan.
Error terkait ekstensi yang muncul di alat Trace biasanya tidak berisi banyak detail, kecuali untuk menyatakan panggilan ekstensi mana yang gagal, beserta kode error HTTP. Jika Anda tidak melihat sesuatu yang berguna di sini, tempat terbaik berikutnya untuk mencari informasi 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 di ekstensi, error kemungkinan akan muncul di sini.
Log juga mencakup entri dari kode ekstensi internal. Saat memeriksa log, ingatlah bahwa beberapa entri tidak relevan dengan error yang Anda perbaiki. Entri log terkait ekstensi biasanya dimulai dengan kata
details, seperti pada 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
Alur pemrosesan permintaan ekstensi dari kebijakan ExtensionCallout di proxy API, melalui ekstensi, ke resource eksternal, lalu kembali lagi. Jadi, error dapat terjadi di salah satu tempat tersebut.
Error yang Anda lihat mungkin termasuk dalam kategori berikut.
Error dalam konfigurasi ekstensi
Ini adalah konfigurasi yang dilakukan oleh administrator organisasi saat menambahkan ekstensi ke lingkungan.
Misalnya, jika Anda mengonfigurasi ekstensi Cloud Logging dengan ID project Google Cloud yang salah, Google Cloud Logging akan menampilkan error ke ekstensi. Detail tentang error ini biasanya ada di log ekstensi.
Bukti di alat Trace
Di editor proxy, error ini biasanya akan muncul sebagai error tingkat 4xx atau
5xx. Namun, editor proxy tidak akan menampilkan spesifikasi apa pun
tentang penyebab error, kecuali menyatakan 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, disebabkan oleh ID project yang salah format.
details: 'Project does not exist: example-test-12345'
Error dalam konfigurasi kebijakan ExtensionCallout
Error ini terjadi saat kebijakan ExtensionCallout salah dikonfigurasi, baik karena error sintaksis konfigurasi kebijakan maupun karena kunci atau nilai konfigurasi yang salah. Error ini memiliki dua bentuk, bergantung pada cara kebijakan dikonfigurasi:
Nilai salah yang dievaluasi oleh resource eksternal
Hal ini dapat terjadi saat 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'Error ini juga dapat terjadi karena 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 mencakup objekmetadatayang isinya diteruskan ke Cloud Logging. Nama kunci yang salah di sana—sepertityp, bukantype—dapat menampilkan error dari resource eksternal yang muncul sebagai entri dalam log ekstensi:details: 'Resource type cannot be empty'Nilai salah yang dievaluasi oleh ekstensi
Error ini mencakup error sintaksis di bagian yang dievaluasi kebijakan dari JSON elemen
<Input>, salah mengeja nama tindakan di elemen<Action>, dan sebagainya. Error ini biasanya akan muncul di alat Trace, tetapi tidak di log ekstensi.
Bukti di alat Trace
Di editor proxy, error ini biasanya akan muncul sebagai error tingkat 4xx atau
5xx. Namun, editor proxy tidak akan menampilkan spesifikasi apa pun
tentang penyebab error, kecuali menyatakan 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 menyebabkan error pemrosesan di resource eksternal, error tersebut biasanya akan muncul di log.
Error terkait permintaan ekstensi ke resource
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 tersebut sudah digunakan dalam baris yang ada. Cloud Spanner akan menampilkan error ke ekstensi, yang akan menambahkan error ke log ekstensi.
Bukti di alat Trace
Di editor proxy, error ini biasanya akan muncul sebagai error tingkat 4xx-
atau 5xx. Namun, editor proxy tidak akan menampilkan
spesifikasi apa pun tentang penyebab error, kecuali menyatakan 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 resource eksternal itu sendiri. Pesan log berikut dari Cloud Spanner menjelaskan error nilai kunci utama yang ada.
details: 'Row [jonesy42] in table user already exists'