Anda sedang melihat dokumentasi Apigee Edge.
Buka dokumentasi
Apigee X. info
Anda dapat men-debug ekstensi menggunakan pesan yang terlihat di dua tempat: alat Pelacakan dan log ekstensi. Jika ekstensi tidak berfungsi, identifikasi masalah terkadang memerlukan informasi dari kedua tempat tersebut.
Alat Trace Apigee Edge adalah tempat Anda menguji dan mengedit kode proxy API secara iteratif saat mengembangkannya. Pesan rekaman aktivitas menyertakan error dari kode proxy API Anda, termasuk proxy API dan konfigurasi kebijakan.
Error terkait ekstensi yang muncul di alat Pelacakan biasanya tidak berisi banyak detail, kecuali untuk menunjukkan info ekstensi mana yang gagal, beserta kode error HTTP. Jika Anda tidak melihat informasi yang berguna di sini, tempat terbaik berikutnya untuk mencari 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 berinteraksi dengan ekstensi yang dikonfigurasi. Misalnya, jika kredensial resource eksternal salah dikonfigurasi di ekstensi, error kemungkinan akan muncul di sini.
Log juga menyertakan entri dari kode ekstensi internal. Saat Anda melihat log, perlu diingat bahwa beberapa entri tidak relevan dengan error yang Anda perbaiki. Entri log terkait ekstensi biasanya diawali 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
Pemrosesan permintaan ekstensi mengalir 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 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. 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 detail apa pun
tentang penyebab error, kecuali untuk 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, dihasilkan dari ID project yang salah formatnya.
details: 'Project does not exist: example-test-12345'
Error dalam konfigurasi kebijakan ExtensionCallout
Error ini terjadi saat kebijakan ExtensionCallout salah dikonfigurasi, baik melalui 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 di elemen
<Input>
kebijakan. Untuk beberapa ekstensi, sebagian JSON diproses oleh ekstensi dan sebagian diteruskan ke resource. Misalnya, JSON konfigurasi ekstensi Cloud Logging menyertakan objekmetadata
yang kontennya 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 yang salah dievaluasi oleh ekstensi
Error ini mencakup error sintaksis di bagian JSON elemen
<Input>
yang dievaluasi kebijakan, salah ejaan nama tindakan di elemen<Action>
, dan sebagainya. Error ini biasanya akan muncul di alat Rekaman aktivitas, 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 detail apa pun
tentang penyebab error, kecuali untuk menyatakan bahwa ekstensi menampilkan error. Error berikut akan 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 sudah digunakan di 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
detail apa pun tentang penyebab error, kecuali untuk 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'