

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
<a name="api-gateway-create-api-as-simple-proxy-for-lambda"></a>

[Integrasi proxy Lambda adalah jenis integrasi](set-up-lambda-proxy-integrations.md) 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](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html). 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\$1” Lambda berfungsi sebagai backend untuk API.
+ Buat dan uji “Halo, Dunia\$1” API dengan integrasi proxy Lambda.

**Topics**
+ [Buat “Halo, Dunia\$1” Fungsi Lambda](#api-gateway-proxy-integration-create-lambda-backend)
+ [Buat “Halo, Dunia\$1” API](#api-gateway-create-api-as-simple-proxy-for-lambda-build)
+ [Menerapkan dan menguji API](#api-gateway-create-api-as-simple-proxy-for-lambda-test)

## Buat “Halo, Dunia\$1” Fungsi Lambda
<a name="api-gateway-proxy-integration-create-lambda-backend"></a>

**Untuk membuat “Halo, Dunia\$1” Fungsi Lambda di konsol Lambda**

1. [Masuk ke konsol Lambda di https://console.aws.amazon.com /lambda.](https://console.aws.amazon.com/lambda)

1. Pada bilah AWS navigasi, pilih file [Wilayah AWS](https://docs.aws.amazon.com/general/latest/gr/apigateway.html).
**catatan**  
Perhatikan wilayah tempat Anda membuat fungsi Lambda. Anda akan membutuhkannya saat membuat API.

1. Pilih **Fungsi** di panel navigasi.

1. Pilih **Buat fungsi**.

1. Pilih **Penulis dari scratch**.

1. Di bagian **Informasi dasar**, lakukan hal berikut:

   1. Dalam **nama Fungsi**, masukkan**GetStartedLambdaProxyIntegration**.

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

   1. Untuk **Arsitektur**, pertahankan pengaturan default.

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

   1. Dalam **nama Peran**, masukkan**GetStartedLambdaBasicExecutionRole**.

   1. Biarkan bidang **Policy templates** kosong.

   1. Pilih **Buat fungsi**.

1. Di bawah **Kode fungsi**, dalam editor kode inline, kode copy/paste berikut:

------
#### [ Node.js ]

   ```
   export const handler = async(event, context) => {
       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 + "!";
       return 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
   ```

------

1. Pilih **Deploy**.

## Buat “Halo, Dunia\$1” API
<a name="api-gateway-create-api-as-simple-proxy-for-lambda-build"></a>

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

**Untuk membuat “Halo, Dunia\$1” API**

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

1. 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**.

1.  Untuk **nama API**, masukkan**LambdaProxyAPI**.

1. (Opsional) Untuk **Deskripsi**, masukkan deskripsi.

1. Tetap tetapkan **jenis endpoint API** ke **Regional**.

1. Untuk **jenis alamat IP**, pilih **IPv4**.

1. 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 **Buat sumber daya**.

1. Matikan **sumber daya Proxy**. 

1. Pertahankan **jalur Sumber Daya** sebagai`/`.

1. Untuk **Nama sumber daya**, masukkan **helloworld**.

1. Tetap nonaktifkan **CORS (Cross Origin Resource Sharing)**.

1. 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. `ANY`Metode ini memungkinkan Anda untuk menggunakan penyiapan metode API tunggal untuk semua metode HTTP yang didukung:`DELETE`,`GET`,`HEAD`,`OPTIONS`,`PATCH`,`POST`, dan`PUT`.

**Untuk membuat `ANY` metode**

1. **Pilih sumber daya **/helloworld**, lalu pilih Create method.**

1. Untuk **jenis Metode**, pilih **APAPUN**.

1. Untuk **jenis Integrasi**, pilih fungsi **Lambda**.

1. Aktifkan **integrasi proxy Lambda**.

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

1. 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`

1. Pilih **metode Buat**.

## Menerapkan dan menguji API
<a name="api-gateway-create-api-as-simple-proxy-for-lambda-test"></a>

**Untuk men-deploy API Anda**

1. Pilih **Deploy API**.

1. Untuk **Stage**, pilih **New stage**.

1. Untuk **nama Panggung**, masukkan**test**.

1. (Opsional) Untuk **Deskripsi**, masukkan deskripsi.

1. Pilih **Deploy**.

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

### Gunakan browser dan cURL untuk menguji API dengan integrasi proxy Lambda
<a name="api-gateway-create-api-as-simple-proxy-for-lambda-test-curl"></a>

Anda dapat menggunakan browser atau [cURL](https://curl.se/) 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](https://www.postman.com/) atau [cURL](https://curl.se/). 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.

1. 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'
      ```

   1. Untuk memanggil API dengan parameter header`greeter:John`:

      ```
      curl -X GET https://r275xc9bmd.execute-api.us-east-1.amazonaws.com/test/helloworld \
        -H 'content-type: application/json' \
        -H 'greeter: John'
      ```

   1. 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!
   ```