AWS API Gateway Lambda Proxy Nonproxy Integration

API Gateway: Lambda Proxy vs Non-Proxy Integration#
AWS API Gateway menyediakan dua cara utama untuk menghubungkan endpoint API dengan AWS Lambda: Lambda Proxy Integration dan Lambda Non-Proxy Integration. Keduanya memiliki pendekatan dan fleksibilitas yang berbeda dalam mengelola request dan response.
1. Lambda Proxy Integration#
Lambda Proxy Integration adalah metode default dan disarankan oleh AWS. Dalam mode ini, API Gateway meneruskan seluruh HTTP request ke Lambda function dalam bentuk event object standar. Lambda bertanggung jawab sepenuhnya untuk menangani request dan membentuk response sesuai format yang ditentukan.
Struktur Event:#
{
"resource": "/path",
"path": "/path",
"httpMethod": "GET",
"headers": {
"Content-Type": "application/json"
},
"queryStringParameters": {
"name": "john"
},
"pathParameters": {
"id": "123"
},
"body": "{\"key\":\"value\"}",
"isBase64Encoded": false
}
Struktur Response (harus sesuai):#
{
"statusCode": 200,
"headers": {
"Content-Type": "application/json"
},
"body": "{\"message\":\"Hello World\"}"
}
Kelebihan:#
- Minimal konfigurasi di API Gateway
- Full control terhadap request dan response
- Cocok untuk RESTful API modern
Kekurangan:#
- Semua logika parsing harus dilakukan di dalam Lambda
- Tidak bisa gunakan mapping template di API Gateway
2. Lambda Non-Proxy Integration#
Non-Proxy Integration (juga dikenal sebagai custom integration) memberikan kontrol lebih di sisi API Gateway, di mana kita dapat menggunakan mapping template untuk mengubah request sebelum dikirim ke Lambda, dan mengubah response sebelum dikirim ke client.
Contoh Mapping Template untuk Request:#
{
"username": "$input.params('user')",
"action": "$input.params('action')"
}
Contoh Mapping Template untuk Response:#
#set($inputRoot = $input.path('$'))
{
"result": "$inputRoot.message"
}
Kelebihan:#
- Dapat mengatur transformasi request/response tanpa mengubah Lambda
- Cocok jika ingin menyembunyikan detail internal atau mengubah kontrak API
Kekurangan:#
- Konfigurasi lebih kompleks
- Kurang fleksibel untuk API yang dinamis
- Tidak cocok untuk banyak skenario modern (seperti GraphQL, complex payload)
Tabel Perbandingan#
Fitur | Proxy Integration | Non-Proxy Integration |
---|---|---|
Format request ke Lambda | Otomatis (event JSON utuh) | Disesuaikan via template |
Format response dari Lambda | Harus standar | Bebas, diproses di Gateway |
Perlu mapping template | Tidak | Ya |
Kontrol di API Gateway | Rendah | Tinggi |
Kontrol di Lambda | Tinggi | Rendah |
Use Case umum | REST API modern, fleksibel | Legacy API, kebutuhan transformasi custom |
Kapan Gunakan yang Mana?#
Gunakan Proxy Integration jika:
- Ingin pengaturan lebih sederhana
- Menggunakan framework modern di Lambda (Express.js, Flask, dll)
- Ingin full control dalam kode
Gunakan Non-Proxy Integration jika:
- Perlu transformasi payload di API Gateway
- Lambda hanya menerima parameter tertentu
- Anda ingin menyembunyikan backend implementation
Kesimpulan#
Pemilihan antara Lambda Proxy dan Non-Proxy Integration tergantung pada gaya pengembangan dan kompleksitas API Anda. Untuk aplikasi modern, Proxy Integration adalah pilihan paling efisien dan fleksibel. Namun, Non-Proxy tetap berguna dalam situasi tertentu yang memerlukan transformasi khusus di layer API Gateway.