

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
<a name="http-api-troubleshooting-lambda"></a>

Berikut ini memberikan saran pemecahan masalah untuk kesalahan dan masalah yang mungkin Anda temui saat menggunakan [AWS Lambda integrasi](http-api-develop-integrations-lambda.md) dengan HTTP. APIs

## Masalah: API saya dengan integrasi Lambda kembali `{"message":"Internal Server Error"}`
<a name="http-api-troubleshooting-lambda-internal-server-error"></a>

Untuk memecahkan masalah kesalahan server internal, tambahkan [variabel `$context.integrationErrorMessage` logging](http-api-logging-variables.md) ke format log Anda, dan lihat log HTTP API Anda. Untuk mencapai ini, lakukan hal berikut:

**Untuk membuat grup log dengan menggunakan Konsol Manajemen AWS**

1. Buka CloudWatch konsol di [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Pilih **Grup log**.

1. Pilih **Buat grup log**.

1. Masukkan nama grup log, lalu pilih **Buat**.

1. Perhatikan Nama Sumber Daya Amazon (ARN) untuk grup log Anda. Format ARN adalah arn:aws:logs: ::log-group:. *region* *account-id* *log-group-name* Anda memerlukan grup log ARN untuk mengaktifkan pencatatan akses untuk HTTP API Anda.

**Untuk menambahkan variabel `$context.integrationErrorMessage` logging**

1. Masuk ke konsol API Gateway di [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway).

1. Pilih HTTP API Anda.

1. Di bawah **Monitor**, pilih **Logging**.

1. Pilih tahap API Anda.

1. Pilih **Edit**, lalu aktifkan pencatatan akses.

1. Untuk **tujuan Log**, masukkan ARN dari grup log yang Anda buat pada langkah sebelumnya.

1. Untuk **format Log**, pilih **CLF**. API Gateway membuat contoh format log. 

1. Tambahkan `$context.integrationErrorMessage` ke akhir format log.

1. Pilih **Simpan**.

**Untuk melihat log API Anda**

1. Hasilkan log. Gunakan browser atau `curl` untuk menjalankan API Anda.

   ```
   $curl https://api-id.execute-api.us-west-2.amazonaws.com/route
   ```

1. Masuk ke konsol API Gateway di [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway).

1. Pilih HTTP API Anda.

1. Di bawah **Monitor**, pilih **Logging**.

1. Pilih tahap API yang Anda aktifkan logging.

1. Pilih **Lihat log masuk CloudWatch**.

1. Pilih aliran log terbaru untuk melihat log HTTP API Anda.

1. Entri log Anda akan terlihat mirip dengan yang berikut ini:  
![\[CloudWatch Entri log log yang menunjukkan pesan kesalahan integrasi dari Lambda.\]](http://docs.aws.amazon.com/id_id/apigateway/latest/developerguide/images/troubleshoot-http-api-logs.png)

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.](http-api-develop-integrations-lambda.md#http-api-develop-integrations-lambda.response) 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 CloudFormation, Anda harus memberikan izin kepada API Gateway untuk menjalankan fungsi tersebut. Perintah [izin tambahan](https://docs.aws.amazon.com/cli/latest/reference/lambda/add-permission.html) berikut memberikan izin untuk rute API HTTP yang berbeda untuk menjalankan fungsi Lambda.

**Example Contoh - Untuk `$default` tahap dan `$default` rute API HTTP**  

```
aws lambda add-permission \
    --function-name my-function \
    --statement-id apigateway-invoke-permissions \
    --action lambda:InvokeFunction \
    --principal apigateway.amazonaws.com \
    --source-arn "arn:aws:execute-api:us-west-2:123456789012:api-id/\$default/\$default"
```

**Example Contoh - Untuk `prod` tahap dan `test` rute API HTTP**  

```
aws lambda add-permission \
    --function-name my-function \
    --statement-id apigateway-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](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html) di tab **Izin** di konsol Lambda.

Coba jalankan API Anda lagi. Anda akan melihat respons fungsi Lambda Anda.