Tutorial: Buat REST API dengan integrasi proxy Lambda - Amazon API Gateway

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Tutorial: Buat REST API dengan integrasi proxy Lambda

Integrasi proxy Lambda adalah jenis integrasi API Gateway API yang ringan dan fleksibel yang memungkinkan Anda mengintegrasikan metode API — atau seluruh API — dengan fungsi Lambda. Fungsi Lambda dapat ditulis dalam bahasa apa pun yang didukung Lambda. Karena ini adalah integrasi proxy, Anda dapat mengubah implementasi fungsi Lambda kapan saja tanpa perlu menerapkan ulang API Anda.

Dalam tutorial ini, Anda akan melakukan hal-hal berikut:

  • Buat “Halo, Dunia!” Lambda berfungsi sebagai backend untuk API.

  • Buat dan uji “Halo, Dunia!” API dengan integrasi proxy Lambda.

Buat “Halo, Dunia!” Fungsi Lambda

Untuk membuat “Halo, Dunia!” Fungsi Lambda di konsol Lambda
  1. Masuk ke konsol Lambda di https://console.aws.amazon.com/lambda.

  2. Pada bilah AWS navigasi, pilih file Wilayah AWS.

    catatan

    Perhatikan wilayah tempat Anda membuat fungsi Lambda. Anda akan membutuhkannya saat membuat API.

  3. Pilih Fungsi di panel navigasi.

  4. Pilih Buat fungsi.

  5. Pilih Penulis dari scratch.

  6. Di bagian Informasi dasar, lakukan hal berikut:

    1. Dalam nama Fungsi, masukkanGetStartedLambdaProxyIntegration.

    2. Untuk Runtime, pilih runtime Node.js atau Python terbaru yang didukung.

    3. (Opsional) Di bagian Izin, luaskan Ubah peran eksekusi default. Untuk daftar dropdown peran eksekusi, pilih Buat peran baru dari templat AWS kebijakan.

    4. Dalam nama Peran, masukkanGetStartedLambdaBasicExecutionRole.

    5. Biarkan bidang Policy templates kosong.

    6. Pilih Buat fungsi.

  7. Di bawah Kode fungsi, di editor kode sebaris, salin/tempel kode berikut:

    Node.js
    export const handler = function(event, context, callback) { console.log('Received event:', JSON.stringify(event, null, 2)); var res ={ "statusCode": 200, "headers": { "Content-Type": "*/*" } }; var greeter = 'World'; if (event.greeter && event.greeter!=="") { greeter = event.greeter; } else if (event.body && event.body !== "") { var body = JSON.parse(event.body); if (body.greeter && body.greeter !== "") { greeter = body.greeter; } } else if (event.queryStringParameters && event.queryStringParameters.greeter && event.queryStringParameters.greeter !== "") { greeter = event.queryStringParameters.greeter; } else if (event.multiValueHeaders && event.multiValueHeaders.greeter && event.multiValueHeaders.greeter != "") { greeter = event.multiValueHeaders.greeter.join(" and "); } else if (event.headers && event.headers.greeter && event.headers.greeter != "") { greeter = event.headers.greeter; } res.body = "Hello, " + greeter + "!"; callback(null, res); };
    Python
    import json def lambda_handler(event, context): print(event) greeter = 'World' try: if (event['queryStringParameters']) and (event['queryStringParameters']['greeter']) and ( event['queryStringParameters']['greeter'] is not None): greeter = event['queryStringParameters']['greeter'] except KeyError: print('No greeter') try: if (event['multiValueHeaders']) and (event['multiValueHeaders']['greeter']) and ( event['multiValueHeaders']['greeter'] is not None): greeter = " and ".join(event['multiValueHeaders']['greeter']) except KeyError: print('No greeter') try: if (event['headers']) and (event['headers']['greeter']) and ( event['headers']['greeter'] is not None): greeter = event['headers']['greeter'] except KeyError: print('No greeter') if (event['body']) and (event['body'] is not None): body = json.loads(event['body']) try: if (body['greeter']) and (body['greeter'] is not None): greeter = body['greeter'] except KeyError: print('No greeter') res = { "statusCode": 200, "headers": { "Content-Type": "*/*" }, "body": "Hello, " + greeter + "!" } return res
  8. Pilih Deploy.

Buat “Halo, Dunia!” API

Sekarang buat API untuk “Hello, World!” Lambda berfungsi dengan menggunakan konsol API Gateway.

Untuk membuat “Halo, Dunia!” API
  1. Masuk ke konsol API Gateway di https://console.aws.amazon.com/apigateway.

  2. Jika ini adalah pertama kalinya Anda menggunakan API Gateway, Anda akan melihat halaman yang memperkenalkan Anda ke fitur layanan. Di bawah REST API, pilih Build. Saat munculan Create Example API muncul, pilih OK.

    Jika ini bukan pertama kalinya Anda menggunakan API Gateway, pilih Buat API. Di bawah REST API, pilih Build.

  3. Untuk nama API, masukkanLambdaProxyAPI.

  4. (Opsional) Untuk Deskripsi, masukkan deskripsi.

  5. Tetap tetapkan jenis endpoint API ke Regional.

  6. Pilih Buat API.

Setelah membuat API, Anda membuat sumber daya. Biasanya, sumber daya API diatur dalam pohon sumber daya sesuai dengan logika aplikasi. Untuk contoh ini, Anda membuat sumber daya /helloworld.

Untuk membuat sumber daya
  1. Pilih sumber daya/, lalu pilih Buat sumber daya.

  2. Matikan sumber daya Proxy.

  3. Pertahankan jalur Sumber Daya sebagai/.

  4. Untuk Nama sumber daya, masukkan helloworld.

  5. Tetap nonaktifkan CORS (Cross Origin Resource Sharing).

  6. Pilih Buat sumber daya.

Dalam integrasi proxy, seluruh permintaan dikirim ke fungsi Lambda backend apa adanya, melalui metode catch-all ANY yang mewakili metode HTTP apa pun. Metode HTTP sebenarnya ditentukan oleh klien pada waktu berjalan. ANYMetode ini memungkinkan Anda untuk menggunakan penyiapan metode API tunggal untuk semua metode HTTP yang didukung:DELETE,GET,HEAD,OPTIONS,PATCH,POST, danPUT.

Untuk membuat ANY metode
  1. Pilih sumber daya /helloworld, lalu pilih Create method.

  2. Untuk jenis Metode, pilih APAPUN.

  3. Untuk jenis Integrasi, pilih fungsi Lambda.

  4. Aktifkan integrasi proxy Lambda.

  5. Untuk fungsi Lambda, pilih Wilayah AWS tempat Anda membuat fungsi Lambda Anda, lalu masukkan nama fungsi.

  6. Untuk menggunakan nilai batas waktu default 29 detik, tetap aktifkan batas waktu default. Untuk menetapkan batas waktu kustom, pilih Batas waktu default dan masukkan nilai batas waktu antara 50 dan milidetik. 29000

  7. Pilih metode Buat.

Menerapkan dan menguji API

Untuk men-deploy API Anda
  1. Pilih Deploy API.

  2. Untuk Stage, pilih New stage.

  3. Untuk nama Panggung, masukkantest.

  4. (Opsional) Untuk Deskripsi, masukkan deskripsi.

  5. Pilih Deploy.

  6. Di bawah Detail tahap, pilih ikon salin untuk menyalin URL pemanggilan API Anda.

Gunakan browser dan cURL untuk menguji API dengan integrasi proxy Lambda

Anda dapat menggunakan browser atau cURL untuk menguji API Anda.

Untuk menguji GET permintaan hanya menggunakan parameter string kueri, Anda dapat memasukkan URL untuk helloworld sumber daya API ke dalam bilah alamat browser.

Untuk membuat URL sumber daya API, tambahkan helloworld sumber daya helloworld dan parameter ?greeter=John string kueri ke URL pemanggilan Anda. URL Anda akan terlihat seperti berikut ini.

https://r275xc9bmd.execute-api.us-east-1.amazonaws.com/test/helloworld?greeter=John

Untuk metode lain, Anda harus menggunakan utilitas pengujian REST API yang lebih canggih, seperti POSTMAN atau cURL. Tutorial ini menggunakan cURL. Contoh perintah cURL di bawah ini mengasumsikan bahwa cURL diinstal pada komputer Anda.

Untuk menguji API yang Anda gunakan menggunakan cURL:
  1. Buka jendela terminal.

  2. Salin perintah cURL berikut dan tempel ke jendela terminal, dan ganti URL pemanggilan dengan yang Anda salin di langkah sebelumnya dan tambahkan /helloworld ke akhir URL.

    catatan

    Jika Anda menjalankan perintah di Windows, gunakan sintaks ini sebagai gantinya:

    curl -v -X POST "https://r275xc9bmd.execute-api.us-east-1.amazonaws.com/test/helloworld" -H "content-type: application/json" -d "{ \"greeter\": \"John\" }"
    1. Untuk memanggil API dengan parameter string kueri?greeter=John:

      curl -X GET 'https://r275xc9bmd.execute-api.us-east-1.amazonaws.com/test/helloworld?greeter=John'
    2. Untuk memanggil API dengan parameter headergreeter:John:

      curl -X GET https://r275xc9bmd.execute-api.us-east-1.amazonaws.com/test/helloworld \ -H 'content-type: application/json' \ -H 'greeter: John'
    3. Untuk memanggil API dengan badan{"greeter":"John"}:

      curl -X POST https://r275xc9bmd.execute-api.us-east-1.amazonaws.com/test/helloworld \ -H 'content-type: application/json' \ -d '{ "greeter": "John" }'

    Dalam semua kasus, outputnya adalah respons 200 dengan badan respons berikut:

    Hello, John!