

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

# Membuat Step Functions API menggunakan API Gateway
<a name="tutorial-api-gateway"></a>

Anda dapat menggunakan Amazon API Gateway untuk mengaitkan metode Anda AWS Step Functions APIs dengan metode di API Gateway API. Saat permintaan HTTPS dikirim ke metode API, API Gateway akan memanggil tindakan API Step Functions Anda.

Tutorial ini menunjukkan cara membuat API yang menggunakan satu sumber daya dan metode `POST` untuk berkomunikasi dengan tindakan API `[StartExecution](https://docs.aws.amazon.com/step-functions/latest/apireference/API_StartExecution.html)`. Anda akan menggunakan konsol AWS Identity and Access Management (IAM) untuk membuat peran untuk API Gateway. Kemudian, Anda akan menggunakan konsol API Gateway untuk membuat API Gateway API, membuat sumber daya dan metode, serta memetakan metode ke tindakan API `StartExecution`. Akhirnya, Anda akan men-deploy dan menguji API Anda.

**catatan**  
Meskipun Amazon API Gateway dapat memulai eksekusi Step Functions dengan memanggil `StartExecution`, Anda harus memanggil `[DescribeExecution](https://docs.aws.amazon.com/step-functions/latest/apireference/API_DescribeExecution.html)` untuk mendapatkan hasilnya.

## Langkah 1: Buat IAM role untuk API Gateway
<a name="api-gateway-step-1"></a>

Sebelum Anda membuat API Gateway API, Anda harus memberikan izin API Gateway untuk memanggil tindakan API Step Functions.<a name="api-gateway-procedure-create-iam-role"></a>

**Untuk menyiapkan izin API Gateway**

1. Masuk ke [konsol IAM](https://console.aws.amazon.com/iam/home) dan pilih **Peran**, **Buat peran**.

1. Pada halaman **Pilih entitas tepercaya**, lakukan hal berikut:

   1. Untuk **jenis entitas Tepercaya**, pertahankan pilihan default **Layanan AWS**.

   1. Untuk **kasus Penggunaan**, pilih **API Gateway** dari daftar tarik-turun.

1. Pilih **API Gateway**, lalu pilih **Berikutnya**.

1. Pada halaman **Tambahkan izin**, pilih **Berikutnya**.

1. (Opsional) Pada halaman **Nama, tinjau, dan buat**, masukkan detail, seperti nama peran. Misalnya, masukkan **APIGatewayToStepFunctions**.

1. Pilih **Buat peran**.

   IAM role muncul dalam daftar peran.

1. Pilih nama peran Anda dan perhatikan **ARN Peran**, seperti yang ditunjukkan dalam contoh berikut.

   ```
   arn:aws:iam::123456789012:role/APIGatewayToStepFunctions
   ```<a name="api-gateway-attach-policy-to-role"></a>

**Untuk melampirkan kebijakan ke IAM role**

1. Pada halaman **Peran**, cari peran Anda (`APIGatewayToStepFunctions`), kemudian pilih peran tersebut.

1. Pada tab **Izin**, pilih **Tambahkan izin**, lalu pilih **Lampirkan** kebijakan.

1. Pada halaman **Lampirkan Kebijakan**, cari`AWSStepFunctionsFullAccess`, pilih kebijakan, lalu pilih **Tambahkan izin**.

## Langkah 2: Buat API Gateway API Anda
<a name="api-gateway-step-2"></a>

Setelah Anda membuat IAM role, Anda dapat membuat API kustom di API Gateway Anda.

**Untuk membuat API**

1. Buka [konsol Amazon API Gateway](https://console.aws.amazon.com/apigateway/), lalu pilih **Buat API**.

1. Pada halaman **Pilih jenis API**, di panel **REST API**, pilih **Build**.

1. Pada halaman **Create REST API**, pilih **New API**, lalu masukkan ***StartExecutionAPI*** untuk **nama API**.

1. Pertahankan **jenis endpoint API** sebagai **Regional**, lalu pilih **Create API**.<a name="api-gateway-create-resource"></a>

**Untuk membuat sumber daya**

1. Pada halaman **Sumber daya*****StartExecutionAPI***, pilih **Buat sumber daya**.

1. Pada halaman **Create Resource**, masukkan **execution** **nama Resource**, lalu pilih **Create resource**.<a name="api-gateway-create-method"></a>

**Untuk membuat metode POST**

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

1. Untuk **jenis Metode**, pilih`POST`.

1. Untuk **jenis Integrasi**, pilih **AWSlayanan**.

1. Untuk **Wilayah AWS**, pilih Wilayah dari daftar.

1. Untuk **Layanan AWS**, pilih **Step Functions** dari daftar.

1. Biarkan **AWSsubdomain** kosong.

1. Untuk **metode HTTP**, pilih **POST** dari daftar.
**catatan**  
Semua tindakan API Step Functions menggunakan metode `POST` HTTP.

1. Untuk **jenis tindakan**, pilih **Gunakan nama tindakan**.

1. Untuk **nama Action**, masukkan**StartExecution**.

1. Untuk **peran Eksekusi**, masukkan [peran ARN dari peran IAM yang Anda buat sebelumnya](#api-gateway-procedure-create-iam-role), seperti yang ditunjukkan pada contoh berikut.

   ```
   arn:aws:iam::123456789012:role/APIGatewayToStepFunctions
   ```

1. **Simpan opsi default untuk **cache Credential** dan **batas waktu default**, lalu pilih Simpan.**

Pemetaan visual antara API Gateway dan Step Functions ditampilkan pada halaman **eksekusi /execution - POST - Method**.

## Langkah 3: Uji dan Deploy API Gateway API
<a name="api-gateway-step-3"></a>

Setelah Anda selesai membuat API, uji dan deploy API. <a name="api-gateway-test-api"></a>

**Untuk menguji komunikasi antara API Gateway dan Step Functions**

1. Pada halaman **/execution - POST - Method Execution**, pilih tab **Test**. Anda mungkin perlu memilih tombol panah kanan untuk menampilkan tab.

1. **Pada tab **/execution - POST - Method Test**, salin parameter permintaan berikut ke bagian **badan Permintaan** menggunakan ARN dari mesin status yang ada ([atau buat mesin status baru yang menggunakan fungsi Lambda](tutorial-creating-lambda-state-machine.md)), lalu pilih Uji.**

   ```
   {
      "input": "{}",
      "name": "MyExecution",
      "stateMachineArn": "arn:aws:states:region:123456789012:stateMachine:HelloWorld"
   }
   ```

   Untuk informasi selengkapnya, lihat [Sintaksis Permintaan](https://docs.aws.amazon.com/step-functions/latest/apireference/API_StartExecution.html#API_StartExecution_RequestSyntax) `StartExecution` dalam *Referensi API AWS Step Functions*.
**catatan**  
Jika Anda tidak ingin menyertakan ARN mesin status Anda di badan panggilan API Gateway Anda, Anda dapat mengonfigurasi templat pemetaan di tab **Permintaan integrasi**, seperti yang ditunjukkan pada contoh berikut.  

   ```
   {
       "input": "$util.escapeJavaScript($input.json('$'))",
       "stateMachineArn": "$util.escapeJavaScript($stageVariables.arn)"
   }
   ```
Dengan pendekatan ini, Anda dapat menentukan ARNs mesin negara yang berbeda berdasarkan tahap pengembangan Anda (misalnya,`dev`,`test`, dan`prod`). Untuk informasi selengkapnya tentang menentukan variabel tahap dalam template pemetaan, lihat [https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html#stagevariables-template-reference](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html#stagevariables-template-reference)di Panduan *Pengembang API Gateway*.

1. **Eksekusi dimulai dan ARN eksekusi dan tanggal zamannya ditampilkan di bawah badan Response.**

   ```
   {
      "executionArn": "arn:aws:states:region:123456789012:execution:HelloWorld:MyExecution",
      "startDate": 1486768956.878
   }
   ```
**catatan**  
Anda dapat melihat eksekusi dengan memilih mesin status Anda di [konsol AWS Step Functions](https://console.aws.amazon.com/states/).

**Untuk men-deploy API Anda**

1. Pada halaman **Resources*****StartExecutionAPI***, pilih **Deploy API**.

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

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

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

1. Pilih **Deploy**.

**Untuk menguji deployment Anda**

1. Pada halaman **Tahapan*****StartExecutionAPI***, perluas **alpha**,**/**, **/execution**, **POST**, dan kemudian pilih metode **POST**.

1. Di bawah **Metode penggantian**, pilih ikon salin untuk menyalin URL pemanggilan API Anda. URL lengkap akan terlihat seperti contoh berikut.

   ```
   https://a1b2c3d4e5.execute-api.region.amazonaws.com/alpha/execution
   ```

1. Dari baris perintah, jalankan perintah `curl` menggunakan ARN dari mesin status Anda, kemudian minta URL dari deployment Anda, seperti yang ditunjukkan dalam contoh berikut.

   ```
   curl -X POST -d '{"input": "{}","name": "MyExecution","stateMachineArn": "arn:aws:states:region:123456789012:stateMachine:HelloWorld"}' https://a1b2c3d4e5.execute-api.region.amazonaws.com/alpha/execution
   ```

   ARN eksekusi dan tanggal jangka waktunya dikembalikan, seperti berikut ini.

   ```
   {"executionArn":"arn:aws:states:region:123456789012:execution:HelloWorld:MyExecution","startDate":1.486772644911E9}
   ```
**catatan**  
**Jika Anda mendapatkan kesalahan “Token Otentikasi Hilang”, pastikan URL pemanggilan diakhiri dengan /execution.**