

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

# Pelajari tentang state machine di Step Functions
<a name="concepts-statemachines"></a>

Step Functions didasarkan pada *mesin negara*, yang juga disebut *alur kerja*. Alur kerja terdiri dari serangkaian langkah yang digerakkan oleh peristiwa. 

Anda menentukan alur kerja menggunakan Amazon States Language, juga dikenal sebagai ASL. Anda dapat secara opsional menggunakan Workflow Studio, perancang alur kerja visual, untuk membangun dan mengedit alur kerja Anda.

Setiap langkah dalam alur kerja disebut *status*. Ada dua jenis status: Status aliran dan status Tugas: 

**Status aliran**  
 Status aliran mengontrol aliran eksekusi langkah-langkah. Misalnya, **status Pilihan** menyediakan logika bersyarat; **Status tunggu** menjeda eksekusi alur kerja; **Status peta** menjalankan alur kerja anak untuk setiap item dalam kumpulan data; dan **Status paralel** membuat cabang terpisah di alur kerja Anda. 

**Status tugas**  
Status tugas mewakili unit kerja yang dilakukan AWS layanan lain, seperti memanggil yang lain Layanan AWS atau API. Status tugas juga dikenal sebagai **Tindakan**. Anda dapat memilih ratusan tindakan untuk melakukan pekerjaan di AWS dan layanan eksternal. (Catatan: Anda juga dapat menggunakan pekerja yang berjalan di luar Step Functions untuk melakukan tugas. Untuk info lebih lanjut, lihat[Aktivitas](concepts-activities.md).)

![\[Contoh ilustrasi komponen alur kerja Step Functions.\]](http://docs.aws.amazon.com/id_id/step-functions/latest/dg/images/state-machine-conceptual-jsonata.png)


**Eksekusi dan penanganan kesalahan**

*Saat Anda menjalankan alur kerja, Step Functions membuat instance alur kerja yang disebut eksekusi.* Anda dapat memantau status eksekusi alur kerja Anda. Jika eksekusi mengalami kesalahan, alur kerja mungkin menangkap kesalahan. Bergantung pada kasus penggunaan Anda, Anda dapat mengarahkan ulang eksekusi nanti untuk melanjutkan alur kerja. 

**Melewati data**

Anda secara opsional dapat memberikan **data input** dalam bentuk teks JSON ke alur kerja Anda. Setiap **langkah** dapat meneruskan data ke langkah selanjutnya menggunakan variabel dan output status. Data yang disimpan dalam variabel dapat digunakan oleh langkah-langkah selanjutnya. Output status menjadi masukan untuk langkah berikutnya. Untuk mempelajari selengkapnya tentang meneruskan data, lihat[Melewati data antar negara bagian dengan variabel](workflow-variables.md).

Di akhir alur kerja, mesin status Anda secara opsional dapat menghasilkan output, juga dalam bentuk JSON. 

**Mentransformasi data**

Negara dan mesin negara dapat mengubah data menggunakan **bahasa query**. Bahasa kueri yang disarankan adalah **JSONata**; namun, mesin status yang dibuat sebelum re:Invent 2024 digunakan. **JSONPath** Untuk kompatibilitas mundur, mesin status atau status individual Anda harus memilih JSONata untuk menggunakan bahasa kueri mereka. 

Anda dapat mengenali mesin JSONata status dan status individu dengan `QueryLanguage` bidang yang disetel ke "JSONata”. Mesin negara dan negara bagian yang menggunakan JSONPath, tidak memiliki `QueryLanguage` lapangan. 

Negara yang menggunakan JSONPath akan memiliki bidang status seperti InputPath, Parameter, ResultSelector, ResultPath, dan OutputPath. Dalam definisi mesin JSONPath status, Anda juga akan melihat nama bidang yang diakhiri `.$` dan nilai diawali dengan `$.` dan`$$.`, keduanya mewakili jalur. Di jalur, Anda mungkin melihat berbagai fungsi intrinsik, seperti. `States.MathAdd` Fungsi intrinsik **hanya** digunakan dalam. JSONPath 

JSONata negara menggunakan bidang **Argumen** dan **Output**. Di bidang opsional ini, Anda mungkin melihat JSONata ekspresi yang terlihat seperti berikut:`"{% $type = 'local' %}"`. Dengan JSONata, Anda dapat menggunakan ekspresi, operator, dan fungsi. Untuk mempelajari selengkapnya, lihat [Mengubah data dengan Step JSONata Functions](transforming-data.md). 

**catatan**  
Anda hanya dapat menggunakan satu bahasa kueri per negara. Anda tidak dapat mencampur JSONPath dan JSONata dalam satu langkah. 

## Konsep utama
<a name="key-concepts-get-started"></a>



Berikut ini memberikan ikhtisar istilah kunci Step Functions untuk konteks. 




| Istilah | Deskripsi | 
| --- | --- | 
| Alur kerja | Urutan langkah-langkah yang sering mencerminkan proses bisnis. | 
| Status |  Langkah-langkah individual di mesin negara Anda yang dapat membuat keputusan berdasarkan masukannya, melakukan tindakan dari input tersebut, dan meneruskan output ke status lain. Untuk informasi selengkapnya, lihat [Menemukan status alur kerja untuk digunakan dalam Step Functions](workflow-states.md).  | 
| Workflow Studio |  Desainer alur kerja visual yang membantu Anda membuat prototipe dan membangun alur kerja lebih cepat. Untuk informasi selengkapnya, lihat [Mengembangkan alur kerja di Step Functions Workflow Studio](workflow-studio.md).  | 
| Mesin negara | Alur kerja didefinisikan menggunakan teks JSON yang mewakili status individu atau langkah-langkah dalam alur kerja bersama dengan bidang, seperti`StartAt`,, dan. `TimeoutSeconds` `Version` Untuk informasi selengkapnya, lihat [Menyatakan struktur mesin di Amazon States Language untuk alur kerja Step Functions](statemachine-structure.md). | 
| Amazon States Language |   Bahasa terstruktur berbasis JSON yang digunakan untuk mendefinisikan mesin status Anda. Dengan ASL, Anda menentukan kumpulan [status](workflow-states.md) yang dapat melakukan pekerjaan ([`Task`status](state-task.md)), menentukan status mana yang akan dialihkan ke next ([`Choice`state](state-choice.md)), dan menghentikan eksekusi dengan error ([`Fail`state](state-fail.md)).  Untuk informasi selengkapnya, lihat [Menggunakan Amazon States Language untuk menentukan alur kerja Step Functions](concepts-amazon-states-language.md).  | 
| Konfigurasi input dan output |  Status dalam alur kerja menerima data JSON sebagai input dan biasanya meneruskan data JSON sebagai output ke status berikutnya. Step Functions menyediakan filter untuk mengontrol aliran data antar negara. Untuk informasi selengkapnya, lihat [Memproses input dan output di Step Functions](concepts-input-output-filtering.md).  | 
| Integrasi layanan |  Anda dapat memanggil tindakan API AWS layanan dari alur kerja Anda.  Untuk informasi selengkapnya, lihat [Mengintegrasikan layanan dengan Step Functions](integrate-services.md). | 
| Jenis integrasi layanan |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/step-functions/latest/dg/concepts-statemachines.html)  | 
| Pola integrasi layanan | Saat memanggil Layanan AWS, Anda menggunakan salah satu pola integrasi layanan berikut: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/step-functions/latest/dg/concepts-statemachines.html)  | 
| Eksekusi |  Eksekusi mesin status adalah instans tempat Anda menjalankan alur kerja untuk melakukan tugas.  Untuk informasi selengkapnya, lihat [Memulai eksekusi mesin status di Step Functions](statemachine-starting.md).  | 

## Data Mesin Status
<a name="concepts-state-machine-data"></a>

Data mesin status mengambil bentuk berikut:
+ Input awal ke dalam mesin status
+ Data yang diteruskan di antara status
+ Output dari mesin status

Bagian ini menjelaskan cara data mesin status diformat dan digunakan dalam AWS Step Functions.

**Topics**
+ [Format Data](#concepts-state-machine-data-format)
+ [Input/Output Mesin Status](#concepts-state-machine-data-state-machine-input-output)
+ [Input/output status](#concepts-state-machine-data-state-input-output)

### Format Data
<a name="concepts-state-machine-data-format"></a>

Data mesin negara diwakili oleh teks JSON. Anda dapat memberikan nilai ke mesin status menggunakan tipe data apa pun yang didukung oleh JSON. 

**catatan**  
Angka dalam format teks JSON sesuai dengan semantik. JavaScript Angka-angka ini biasanya sesuai dengan nilai [IEEE-854](https://standards.ieee.org/findstds/standard/854-1987.html) presisi ganda.
Berikut ini adalah teks JSON yang valid:   
String mandiri dan dibatasi kutipan
Objek
Array
Nomor
Nilai Boolean
`null`
Output dari suatu negara menjadi masukan untuk keadaan berikutnya. Namun, Anda dapat membatasi status untuk bekerja pada subset data input dengan menggunakan Input [dan Output Processing](concepts-input-output-filtering.md).

### Input/Output Mesin Status
<a name="concepts-state-machine-data-state-machine-input-output"></a>

Anda dapat memberikan data input awal Anda ke mesin AWS Step Functions negara dengan salah satu dari dua cara. Anda dapat meneruskan data ke `[StartExecution](https://docs.aws.amazon.com/step-functions/latest/apireference/API_StartExecution.html)` tindakan ketika Anda memulai eksekusi. Anda juga dapat meneruskan data ke mesin status dari [konsol Step Functions](https://console.aws.amazon.com/states/home?region=us-east-1#/). Data awal diteruskan ke status `StartAt` mesin status. Jika input tidak tersedia, default-nya adalah obyek kosong (`{}`).

Output dari eksekusi dikembalikan oleh status terakhir (`terminal`). Output ini muncul sebagai teks JSON dalam hasil eksekusi ini. 

Untuk Alur Kerja Standar, Anda dapat mengambil hasil eksekusi dari riwayat eksekusi menggunakan penelepon eksternal, seperti tindakan. `[DescribeExecution](https://docs.aws.amazon.com/step-functions/latest/apireference/API_DescribeExecution.html)` Anda dapat melihat hasil eksekusi di [konsol Step Functions](https://console.aws.amazon.com/states/home?region=us-east-1#/). 

Untuk Alur Kerja Ekspres, jika Anda mengaktifkan logging, Anda dapat mengambil hasil dari CloudWatch Log, atau melihat dan men-debug eksekusi di konsol Step Functions. Untuk informasi selengkapnya, lihat [Menggunakan CloudWatch Log untuk mencatat riwayat eksekusi di Step Functions](cw-logs.md) dan [Melihat detail eksekusi di konsol Step Functions](concepts-view-execution-details.md).

Anda juga harus mempertimbangkan kuota yang terkait dengan mesin status Anda. Untuk informasi selengkapnya, lihat [Kuota layanan Step Functions](service-quotas.md)

### Input/output status
<a name="concepts-state-machine-data-state-input-output"></a>

Input setiap status terdiri dari teks JSON dari status sebelumnya atau, untuk status `StartAt`, input ke dalam eksekusi. Status kontrol aliran tertentu menggemakan input-nya ke output-nya.

Dalam contoh berikut, mesin status menambahkan dua angka bersama-sama.

1. Tentukan AWS Lambda fungsinya.

   ```
   function Add(input) {
     var numbers = JSON.parse(input).numbers;
     var total = numbers.reduce(
       function(previousValue, currentValue, index, array) {
         return previousValue + currentValue; });
     return JSON.stringify({ result: total });
   }
   ```

1. Tentukan mesin status.

   ```
   {
     "Comment": "An example that adds two numbers together.",
     "StartAt": "Add",
     "Version": "1.0",
     "TimeoutSeconds": 10,
     "States":
       {
           "Add": {
             "Type": "Task",
             "Resource": "arn:aws:lambda:region:123456789012:function:Add",
             "End": true
           }
       }
   }
   ```

1. Mulai eksekusi dengan teks JSON berikut.

   ```
   { "numbers": [3, 4] }
   ```

   Status `Add` menerima teks JSON dan meneruskannya ke fungsi Lambda.

   Fungsi Lambda mengembalikan hasil perhitungan ke status tersebut.

   Status mengembalikan nilai berikut dalam output-nya.

   ```
   { "result": 7 }
   ```

   Mengingat `Add` juga merupakan status akhir dalam mesin status, nilai ini dikembalikan sebagai output mesin status.

   Jika status akhir tidak mengembalikan output, mesin status mengembalikan sebuah objek kosong (`{}`).

Untuk informasi selengkapnya, lihat [Memproses input dan output di Step Functions](concepts-input-output-filtering.md).

## Memohon AWS Step Functions dari layanan lain
<a name="concepts-invoke-sfn"></a>

Anda dapat mengonfigurasi beberapa layanan lain untuk memanggil mesin status. Berdasarkan [jenis alur kerja](choosing-workflow-type.md) mesin status, Anda dapat memanggil mesin status secara asinkron atau sinkron. Untuk memanggil mesin status secara sinkron, gunakan panggilan `[StartSyncExecution](https://docs.aws.amazon.com/step-functions/latest/apireference/API_StartSyncExecution.html)` API atau integrasi Amazon API Gateway dengan Alur Kerja Ekspres. Dengan pemanggilan asinkron, Step Functions menjeda eksekusi alur kerja hingga token tugas dikembalikan. Namun, menunggu token tugas memang membuat alur kerja sinkron.

Layanan yang dapat Anda konfigurasikan untuk menjalankan Step Functions meliputi:
+  AWS Lambda, menggunakan panggilan [https://docs.aws.amazon.com/step-functions/latest/apireference/API_StartExecution.html](https://docs.aws.amazon.com/step-functions/latest/apireference/API_StartExecution.html). 
+  [Amazon API Gateway](https://docs.aws.amazon.com/step-functions/latest/dg/tutorial-api-gateway.html) 
+  [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/create-eventbridge-rule.html) 
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/action-reference-StepFunctions.html) 
+  [AWS IoT Aturan Mesin](https://docs.aws.amazon.com/iot/latest/developerguide/iot-rule-actions.html) 
+  [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/connect-stepfunctions.html) 

Pemanggilan Step Functions diatur oleh kuota `StartExecution`. Untuk informasi lebih lanjut, lihat:
+ [Kuota layanan Step Functions](service-quotas.md)

## Transisi dalam mesin negara
<a name="concepts-transitions"></a>

Ketika Anda memulai eksekusi baru dari mesin negara Anda, sistem dimulai dengan status yang direferensikan di bidang tingkat atas`StartAt`. Bidang ini, diberikan sebagai string, harus sama persis, termasuk kasus, nama status dalam alur kerja.

Setelah status berjalan, AWS Step Functions gunakan nilai `Next` bidang untuk menentukan status berikutnya untuk maju ke.

 `Next`bidang juga menentukan nama negara sebagai string. String ini peka huruf besar/kecil dan harus cocok dengan nama status yang ditentukan dalam deskripsi mesin negara dengan tepat

Misalnya, status berikut menyertakan transisi ke `NextState`.

```
"SomeState" : {
  ...,
  "Next" : "NextState"
}
```

Sebagian besar negara hanya mengizinkan satu aturan transisi dengan `Next` bidang tersebut. Namun, status kontrol aliran tertentu, seperti `Choice` status, memungkinkan Anda menentukan beberapa aturan transisi, masing-masing dengan bidangnya sendiri`Next`. [Bahasa Status Amazon](concepts-amazon-states-language.md) menyediakan detail tentang masing-masing tipe status yang dapat Anda tentukan, termasuk informasi tentang cara menentukan transisi.

Status dapat memiliki beberapa transisi masuk dari status lain.

Proses berulang sampai mencapai status terminal (status dengan`"Type": Succeed`,, atau`"End": true`)`"Type": Fail`, atau kesalahan runtime terjadi.

Ketika Anda [redrive](redrive-executions.md)eksekusi, itu dianggap sebagai transisi status. Selain itu, semua status yang dijalankan kembali dalam a juga redrive dianggap sebagai transisi status.

Aturan berikut berlaku untuk status dalam mesin status:
+ Negara dapat terjadi dalam urutan apa pun di dalam blok terlampir. Namun, urutan di mana mereka terdaftar tidak mempengaruhi urutan di mana mereka dijalankan. Perintah itu ditentukan oleh isi status.
+ Dalam mesin negara, hanya ada satu negara yang ditunjuk sebagai `start` negara. `start`Status ditentukan oleh nilai `StartAt` bidang dalam struktur tingkat atas.
+ Bergantung pada logika mesin status Anda — misalnya, jika mesin status Anda memiliki beberapa cabang logika — Anda mungkin memiliki lebih dari satu `end` status.
+ Jika mesin negara Anda hanya terdiri dari satu status, itu bisa menjadi status awal dan akhir.

### Transisi dalam status Peta Terdistribusi
<a name="dist-map-transitions"></a>

Saat Anda menggunakan `Map` status dalam mode Terdistribusi, Anda akan dikenakan biaya satu transisi status untuk setiap eksekusi alur kerja anak yang memulai *status Peta Terdistribusi*. Saat Anda menggunakan `Map` status dalam mode Inline, Anda tidak dikenakan biaya transisi status untuk setiap iterasi status Peta *Sebaris*.

Anda dapat mengoptimalkan biaya dengan menggunakan `Map` status dalam mode Terdistribusi dan menyertakan alur kerja bersarang dalam definisi `Map` status. *Status Peta Terdistribusi* **juga menambah nilai saat Anda memulai eksekusi alur kerja turunan dari tipe Express.** Step Functions menyimpan respons dan status eksekusi alur kerja anak Express, yang mengurangi kebutuhan untuk menyimpan data eksekusi di CloudWatch Log. Anda juga bisa mendapatkan akses ke kontrol aliran yang tersedia dengan *status Peta Terdistribusi*, seperti menentukan ambang kesalahan atau mengelompokkan sekelompok item. Untuk informasi tentang harga Step Functions, lihat [AWS Step Functions harga](https://aws.amazon.com/step-functions/pricing/).

## Baca Konsistensi di Step Functions
<a name="concepts-read-consistency"></a>

Pembaruan mesin status pada AWS Step Functions akhirnya konsisten. Semua panggilan `StartExecution` dalam beberapa detik akan menggunakan ketentuan dan `roleArn` (Nama sumber daya Amazon untuk IAM role) yang diperbarui. Eksekusi yang dimulai segera setelah memanggil `UpdateStateMachine` mungkin menggunakan ketentuan mesin status dan `roleArn` sebelumnya.

Untuk informasi selengkapnya, lihat berikut ini:
+ [https://docs.aws.amazon.com/step-functions/latest/apireference/API_UpdateStateMachine.html](https://docs.aws.amazon.com/step-functions/latest/apireference/API_UpdateStateMachine.html) di *Referensi API AWS Step Functions *