Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Memecahkan masalah dengan integrasi Lambda API HTTP
Berikut ini memberikan saran pemecahan masalah untuk kesalahan dan masalah yang mungkin Anda temui saat menggunakan AWS Lambda integrasi dengan API HTTP.
Masalah: API saya dengan integrasi Lambda kembali {"message":"Internal Server Error"}
Untuk memecahkan masalah kesalahan server internal, tambahkan variabel $context.integrationErrorMessage logging ke format log Anda, dan lihat log HTTP API Anda. Untuk mencapai ini, lakukan hal berikut:
Untuk membuat grup log dengan menggunakan AWS Management Console
Buka CloudWatch konsol di https://console.aws.amazon.com/cloudwatch/
. -
Pilih Grup log.
-
Pilih Buat grup log.
-
Masukkan nama grup log, lalu pilih Buat.
-
Perhatikan Nama Sumber Daya Amazon (ARN) untuk grup log Anda.
Anda memerlukan grup log ARN untuk mengaktifkan pencatatan akses untuk HTTP API Anda.Format ARN adalah arn:aws:logs: region: account-id:log-group:.
log-group-name
Untuk menambahkan variabel $context.integrationErrorMessage
logging
Masuk ke konsol API Gateway di https://console.aws.amazon.com/apigateway
. -
Pilih HTTP API Anda.
-
Di bawah Monitor, pilih Logging.
-
Pilih tahap API Anda.
-
Pilih Edit, lalu aktifkan pencatatan akses.
-
Untuk tujuan Log, masukkan ARN dari grup log yang Anda buat pada langkah sebelumnya.
-
Untuk format Log, pilih CLF. API Gateway membuat contoh format log.
-
Tambahkan
$context.integrationErrorMessage
ke akhir format log. -
Pilih Simpan.
Untuk melihat log API Anda
-
Hasilkan log. Gunakan browser atau
curl
untuk menjalankan API Anda.$
curl https://api-id
.execute-api.us-west-2
.amazonaws.com/route
Masuk ke konsol API Gateway di https://console.aws.amazon.com/apigateway
. -
Pilih HTTP API Anda.
-
Di bawah Monitor, pilih Logging.
-
Pilih tahap API yang Anda aktifkan logging.
-
Pilih Lihat log masuk CloudWatch.
-
Pilih aliran log terbaru untuk melihat log HTTP API Anda.
-
Entri log Anda akan terlihat mirip dengan yang berikut ini:
Karena kami menambahkan $context.integrationErrorMessage
ke format log, kami melihat pesan kesalahan di log kami yang merangkum masalah.
Log Anda mungkin menyertakan pesan kesalahan berbeda yang menunjukkan bahwa ada masalah dengan kode fungsi Lambda Anda. Dalam hal ini, periksa kode fungsi Lambda Anda, dan verifikasi bahwa fungsi Lambda Anda mengembalikan respons dalam format yang diperlukan. Jika log Anda tidak menyertakan pesan kesalahan, tambahkan $context.error.message
dan $context.error.responseType
ke format log Anda untuk informasi selengkapnya guna membantu memecahkan masalah.
Dalam kasus ini, log menunjukkan bahwa API Gateway tidak memiliki izin yang diperlukan untuk menjalankan fungsi Lambda.
Saat Anda membuat integrasi Lambda di konsol API Gateway, API Gateway secara otomatis mengonfigurasi izin untuk menjalankan fungsi Lambda. Saat membuat integrasi Lambda dengan menggunakan AWS CLI,, atau SDK AWS CloudFormation, Anda harus memberikan izin kepada API Gateway untuk menjalankan fungsi tersebut. Contoh AWS CLI perintah berikut memberikan izin untuk rute API HTTP yang berbeda untuk menjalankan fungsi Lambda.
contoh Contoh - Untuk $default
tahap dan $default
rute API HTTP
aws lambda add-permission \ --function-name
my-function
\ --statement-idapigateway-invoke-permissions
\ --action lambda:InvokeFunction \ --principal apigateway.amazonaws.com \ --source-arn "arn:aws:execute-api:us-west-2
:123456789012
:api-id
/\$default
/\$default
"
contoh Contoh - Untuk prod
tahap dan test
rute API HTTP
aws lambda add-permission \ --function-name
my-function
\ --statement-idapigateway-invoke-permissions
\ --action lambda:InvokeFunction \ --principal apigateway.amazonaws.com \ --source-arn "arn:aws:execute-api:us-west-2
:123456789012
:api-id
/prod
/*/test
"
Konfirmasi kebijakan fungsi di tab Izin di konsol Lambda.
Coba jalankan API Anda lagi. Anda akan melihat respons fungsi Lambda Anda.