

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

# Tutorial: Membuat REST API pribadi
<a name="private-api-tutorial"></a>

Dalam tutorial ini, Anda membuat REST API pribadi. Klien dapat mengakses API hanya dari dalam VPC Amazon Anda. API diisolasi dari internet publik, yang merupakan persyaratan keamanan umum.

Tutorial ini memakan waktu sekitar 30 menit untuk menyelesaikannya. Pertama, Anda menggunakan CloudFormation template untuk membuat VPC Amazon, titik akhir VPC, AWS Lambda fungsi, dan meluncurkan instans Amazon EC2 yang akan Anda gunakan untuk menguji API Anda. Selanjutnya, Anda menggunakan Konsol Manajemen AWS untuk membuat API pribadi dan melampirkan kebijakan sumber daya yang memungkinkan akses hanya dari titik akhir VPC Anda. Terakhir, Anda menguji API Anda. 

![\[Ikhtisar API pribadi yang Anda buat dalam tutorial ini.\]](http://docs.aws.amazon.com/id_id/apigateway/latest/developerguide/images/private-api-tutorial-diagram.png)


Untuk menyelesaikan tutorial ini, Anda memerlukan AWS akun dan AWS Identity and Access Management pengguna dengan akses konsol. Untuk informasi selengkapnya, lihat [Siapkan untuk menggunakan API Gateway](setting-up.md).

Dalam tutorial ini, Anda menggunakan Konsol Manajemen AWS. Untuk CloudFormation template yang membuat API ini dan semua resource terkait, lihat [template.yaml](samples/private-api-full-template.zip).

**Topics**
+ [Langkah 1: Buat dependensi](#private-api-tutorial-create-dependencies)
+ [Langkah 2: Buat API pribadi](#private-api-tutorial-create-api)
+ [Langkah 3: Buat metode dan integrasi](#private-api-tutorial-create-method)
+ [Langkah 4: Lampirkan kebijakan sumber daya](#private-api-tutorial-attach-resource-policy)
+ [Langkah 5: Menerapkan API Anda](#private-api-tutorial-deploy-api)
+ [Langkah 6: Verifikasi bahwa API Anda tidak dapat diakses publik](#private-api-tutorial-test-private-api)
+ [Langkah 7: Hubungkan ke instans di VPC Anda dan panggil API Anda](#private-api-tutorial-connect-to-instance)
+ [Langkah 8: Membersihkan](#private-api-tutorial-cleanup)
+ [Langkah selanjutnya: Otomatisasi dengan CloudFormation](#private-api-tutorial-next-steps)

## Langkah 1: Buat dependensi
<a name="private-api-tutorial-create-dependencies"></a>

Unduh dan unzip [CloudFormation template ini](samples/private-api-starter-template.zip). Anda menggunakan template untuk membuat semua dependensi untuk API pribadi Anda, termasuk VPC Amazon, titik akhir VPC, dan fungsi Lambda yang berfungsi sebagai backend API Anda. Anda membuat API pribadi nanti.

**Untuk membuat CloudFormation tumpukan**

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

1. Pilih **Buat tumpukan** kemudian pilih **Dengan sumber daya baru (standar)**.

1. Untuk **Tentukan templat**, pilih **Unggah file templat**.

1. Pilih template yang Anda unduh.

1. Pilih **Berikutnya**. 

1. Untuk **nama Stack**, **private-api-tutorial** masukkan lalu pilih **Berikutnya**.

1. Untuk **opsi Konfigurasi tumpukan**, pilih **Berikutnya**.

1. Untuk **Kemampuan**, akui bahwa CloudFormation dapat membuat sumber daya IAM di akun Anda.

1. Pilih **Berikutnya**, lalu pilih **Kirim**.

CloudFormation menyediakan dependensi untuk API Anda, yang dapat memakan waktu beberapa menit. **Ketika status CloudFormation tumpukan Anda adalah **CREATE\$1COMPLETE**, pilih Output.** Perhatikan ID titik akhir VPC Anda. Anda membutuhkannya untuk langkah-langkah selanjutnya dalam tutorial ini. 

## Langkah 2: Buat API pribadi
<a name="private-api-tutorial-create-api"></a>

Anda membuat API pribadi untuk mengizinkan hanya klien dalam VPC Anda untuk mengaksesnya.

**Untuk membuat API pribadi**

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

1. Pilih **Create API**, lalu untuk **REST API**, pilih **Build**.

1. Untuk **nama API**, masukkan**private-api-tutorial**.

1. Untuk **jenis endpoint API**, pilih **Private**.

1. **Untuk **titik akhir VPC IDs, masukkan ID titik akhir** VPC dari Output tumpukan Anda.** CloudFormation 

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

1. Pilih **Buat API**.

## Langkah 3: Buat metode dan integrasi
<a name="private-api-tutorial-create-method"></a>

Anda membuat `GET` metode dan integrasi Lambda untuk menangani `GET` permintaan ke API Anda. Saat klien memanggil API Anda, API Gateway mengirimkan permintaan ke fungsi Lambda yang Anda buat di Langkah 1, lalu mengembalikan respons ke klien.

**Untuk membuat metode dan integrasi**

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

1. Pilih API Anda.

1. Pilih **metode Buat**.

1. Untuk **jenis Metode** pilih`GET`.

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

1. Aktifkan **integrasi proxy Lambda**. Dengan integrasi proxy Lambda, API Gateway mengirimkan peristiwa ke Lambda dengan struktur yang ditentukan, dan mengubah respons dari fungsi Lambda Anda menjadi respons HTTP.

1. Untuk **fungsi Lambda**, pilih fungsi yang Anda buat dengan CloudFormation template di Langkah 1. Nama fungsi dimulai dengan**private-api-tutorial**.

1. Pilih **metode Buat**.

## Langkah 4: Lampirkan kebijakan sumber daya
<a name="private-api-tutorial-attach-resource-policy"></a>

Anda melampirkan [kebijakan sumber daya](apigateway-resource-policies.md) ke API Anda yang memungkinkan klien menjalankan API hanya melalui titik akhir VPC Anda. Untuk lebih membatasi akses ke API Anda, Anda juga dapat mengonfigurasi kebijakan titik akhir [VPC untuk titik akhir](apigateway-vpc-endpoint-policies.md) VPC Anda, tetapi itu tidak diperlukan untuk tutorial ini.

**Untuk melampirkan kebijakan sumber daya**

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

1. Pilih API Anda.

1. Pilih **Kebijakan sumber daya**, lalu pilih **Buat kebijakan**.

1. Masukkan kebijakan berikut. Ganti *vpceID* dengan ID titik akhir VPC Anda dari **Output** tumpukan Anda. CloudFormation 

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Deny",
               "Principal": "*",
               "Action": "execute-api:Invoke",
               "Resource": "execute-api:/*",
               "Condition": {
                   "StringNotEquals": {
                       "aws:sourceVpce": "vpce-abcd1234"
                   }
               }
           },
           {
               "Effect": "Allow",
               "Principal": "*",
               "Action": "execute-api:Invoke",
               "Resource": "execute-api:/*"
           }
       ]
   }
   ```

------

1. Pilih **Simpan perubahan**.

## Langkah 5: Menerapkan API Anda
<a name="private-api-tutorial-deploy-api"></a>

Selanjutnya, Anda menerapkan API Anda untuk membuatnya tersedia bagi klien di Amazon VPC Anda.

**Untuk menerapkan API**

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

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

Sekarang Anda siap untuk menguji API Anda.

## Langkah 6: Verifikasi bahwa API Anda tidak dapat diakses publik
<a name="private-api-tutorial-test-private-api"></a>

Gunakan `curl` untuk memverifikasi bahwa Anda tidak dapat menjalankan API dari luar VPC Amazon Anda.

**Untuk menguji API Anda**

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

1. Pilih API Anda.

1. Di panel navigasi utama, pilih **Tahapan**, lalu pilih tahap **pengujian**.

1. Di bawah **Detail tahap**, pilih ikon salin untuk menyalin URL pemanggilan API Anda. URL terlihat seperti`https://abcdef123.execute-api.us-west-2.amazonaws.com/test`. Titik akhir VPC yang Anda buat di Langkah 1 memiliki DNS pribadi yang diaktifkan, sehingga Anda dapat menggunakan URL yang disediakan untuk menjalankan API Anda.

1. Gunakan curl untuk mencoba menjalankan API Anda dari luar VPC Anda.

   ```
   curl https://abcdef123.execute-api.us-west-2.amazonaws.com/test
   ```

   Curl menunjukkan bahwa titik akhir API Anda tidak dapat diselesaikan. Jika Anda mendapatkan respons yang berbeda, kembali ke Langkah 2, dan pastikan Anda memilih **Private** untuk jenis endpoint API Anda.

   ```
   curl: (6) Could not resolve host: abcdef123.execute-api.us-west-2.amazonaws.com/test
   ```

Selanjutnya, Anda terhubung ke instans Amazon EC2 di VPC Anda untuk menjalankan API Anda.

## Langkah 7: Hubungkan ke instans di VPC Anda dan panggil API Anda
<a name="private-api-tutorial-connect-to-instance"></a>

Selanjutnya, Anda menguji API Anda dari dalam VPC Amazon Anda. Untuk mengakses API pribadi, sambungkan ke instans Amazon EC2 di VPC, lalu gunakan curl untuk menjalankan API. Anda menggunakan Systems Manager Session Manager untuk menyambung ke instans Anda di browser.

**Untuk menguji API Anda**

1. Buka konsol Amazon EC2 di. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)

1. Pilih **Instans**.

1. Pilih contoh bernama **private-api-tutorial**yang Anda buat dengan CloudFormation template di Langkah 1.

1. Pilih **Connect** dan kemudian pilih **Session Manager**.

1. Pilih **Connect** untuk meluncurkan sesi berbasis browser ke instans Anda.

1. Di sesi Session Manager Anda, gunakan curl untuk menjalankan API Anda. Anda dapat menjalankan API karena Anda menggunakan instance di VPC Amazon Anda.

   ```
   curl https://abcdef123.execute-api.us-west-2.amazonaws.com/test
   ```

   Verifikasi bahwa Anda mendapatkan respon`Hello from Lambda!`.

![\[Anda menggunakan Session Manager untuk memanggil API Anda dari dalam VPC Amazon Anda.\]](http://docs.aws.amazon.com/id_id/apigateway/latest/developerguide/images/private-api-tutorial-invoke.png)


Anda berhasil membuat API yang hanya dapat diakses dari dalam VPC Amazon Anda dan kemudian memverifikasi bahwa itu berfungsi.

## Langkah 8: Membersihkan
<a name="private-api-tutorial-cleanup"></a>

Untuk mencegah biaya yang tidak perlu, hapus sumber daya yang Anda buat sebagai bagian dari tutorial ini. Langkah-langkah berikut menghapus REST API dan CloudFormation tumpukan Anda.

**Untuk menghapus REST API**

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

1. Pada **APIs**halaman, pilih API. Pilih **tindakan API**, pilih **Hapus API**, lalu konfirmasikan pilihan Anda.

**Untuk menghapus CloudFormation tumpukan**

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

1. Pilih CloudFormation tumpukan Anda.

1. Pilih **Hapus** dan kemudian konfirmasikan pilihan Anda.

## Langkah selanjutnya: Otomatisasi dengan CloudFormation
<a name="private-api-tutorial-next-steps"></a>

Anda dapat mengotomatiskan pembuatan dan pembersihan semua AWS sumber daya yang terlibat dalam tutorial ini. Untuk contoh CloudFormation template lengkap, lihat [template.yaml](samples/private-api-full-template.zip).