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

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 API integrasi API Gateway yang ringan dan fleksibel yang memungkinkan Anda mengintegrasikan API metode — atau keseluruhan 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

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

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

  • Buat dan uji “Halo, Dunia!” APIdengan 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 Anda membuatAPI.

  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. Untuk Arsitektur, pertahankan pengaturan default.

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

    5. Dalam nama Peran, masukkanGetStartedLambdaBasicExecutionRole.

    6. Biarkan bidang Policy templates kosong.

    7. 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 melihat halaman yang memperkenalkan Anda ke fitur layanan. Di bawah RESTAPI, pilih Build. Ketika API popup Create Example muncul, pilih OK.

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

  3. Untuk APInama, masukkanLambdaProxyAPI.

  4. (Opsional) Untuk Deskripsi, masukkan deskripsi.

  5. Pertahankan jenis API titik akhir disetel ke Regional.

  6. Pilih Buat API.

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

Untuk membuat sumber daya
  1. Pilih Buat sumber daya.

  2. Matikan sumber daya Proxy.

  3. Pertahankan jalur Sumber Daya sebagai/.

  4. Untuk Nama sumber daya, masukkan helloworld.

  5. Keep CORS(Cross Origin Resource Sharing) dimatikan.

  6. Pilih Buat sumber daya.

Dalam integrasi proxy, seluruh permintaan dikirim ke fungsi Lambda backend apa adanya, melalui metode ANY catch-all yang mewakili metode apa pun. HTTP HTTPMetode aktual ditentukan oleh klien pada waktu berjalan. ANYMetode ini memungkinkan Anda untuk menggunakan pengaturan API metode tunggal untuk semua HTTP metode 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 ANY.

  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.

Menyebarkan dan menguji API

Untuk menyebarkan API
  1. Pilih DeployAPI.

  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 API panggilan Anda. URL

Gunakan browser dan c URL untuk menguji integrasi proxy API dengan Lambda

Anda dapat menggunakan browser atau c URL untuk menguji AndaAPI.

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

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

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

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

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

  2. Salin URL perintah c berikut dan tempel ke jendela terminal, dan ganti pemanggilan URL dengan yang Anda salin pada 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 dari?greeter=John:

      curl -X GET 'https://r275xc9bmd.execute-api.us-east-1.amazonaws.com/test/helloworld?greeter=John'
    2. Untuk memanggil API dengan parameter header darigreeter: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 tubuh{"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!