Pelajari tentang state machine di Step Functions - AWS Step Functions

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

Step Functions didasarkan pada mesin dan tugas negara. Dalam Step Functions, state machine disebut alur kerja, yang merupakan serangkaian langkah yang digerakkan oleh peristiwa. Setiap langkah dalam alur kerja disebut status. Misalnya, status Tugas mewakili unit kerja yang dilakukan AWS layanan lain, seperti memanggil yang lain AWS layanan atauAPI. Contoh menjalankan alur kerja yang melakukan tugas disebut eksekusi di Step Functions.

Contoh ilustrasi diagram alur kerja Step Functions.

Konsep utama

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

Mesin negara

Alur kerja yang didefinisikan menggunakan JSON teks yang mewakili masing-masing status atau langkah dalam alur kerja bersama dengan bidang, seperti StartAtTimeoutSeconds, dan. Version

Untuk informasi selengkapnya, lihat Menyatakan struktur mesin di Amazon States Language untuk alur kerja Step Functions.

Amazon States Language

Bahasa JSON berbasis dan terstruktur yang digunakan untuk mendefinisikan mesin negara Anda. DenganASL, Anda menentukan kumpulan status yang dapat melakukan pekerjaan (Taskstatus), menentukan status mana yang akan dialihkan ke next (Choicestate), dan menghentikan eksekusi dengan error (Failstate).

Untuk informasi selengkapnya, lihat Menggunakan Amazon States Language untuk menentukan alur kerja Step Functions.

Konfigurasi input dan output

Status dalam alur kerja menerima JSON data sebagai input dan biasanya meneruskan JSON data 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.

Integrasi layanan

Anda dapat memanggil API tindakan AWS layanan dari alur kerja Anda.

Untuk informasi selengkapnya, lihat Mengintegrasikan layanan lain dengan Step Functions.

Jenis integrasi layanan
  • AWS SDKintegrasi — Cara standar untuk memanggil lebih dari dua ratus AWS layanan lebih dari sembilan ribu API tindakan langsung dari mesin negara Anda.

  • Integrasi yang dioptimalkan - Integrasi khusus yang merampingkan panggilan dan pertukaran data dengan layanan tertentu. Misalnya, Lambda Invoke akan secara otomatis mengubah Payload bidang respons dari JSON string yang lolos menjadi objek. JSON

Pola integrasi layanan

Saat memanggil AWS layanan, Anda menggunakan salah satu pola integrasi layanan berikut:

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.

Data Mesin Status

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.

Format Data

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

catatan
  • Angka dalam format JSON teks sesuai dengan JavaScript semantik. Angka-angka ini biasanya sesuai dengan presisi ganda IEEE-854 nilai.

  • Berikut ini adalah JSON teks 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.

Input/Output Mesin Status

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 tindakan ketika Anda memulai eksekusi. Anda juga dapat meneruskan data ke mesin status dari konsol Step Functions. 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 JSON teks dalam hasil eksekusi.

Untuk Alur Kerja Standar, Anda dapat mengambil hasil eksekusi dari riwayat eksekusi menggunakan penelepon eksternal, seperti tindakan. DescribeExecution Anda dapat melihat hasil eksekusi di konsol Step Functions.

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, silakan lihat Menggunakan CloudWatch Log untuk mencatat riwayat eksekusi di Step Functions dan Melihat dan men-debug eksekusi di konsol Step Functions.

Anda juga harus mempertimbangkan kuota yang terkait dengan mesin status Anda. Untuk informasi selengkapnya, silakan lihat Kuota layanan Step Functions

Input/output status

Masukan setiap negara terdiri dari JSON teks dari status sebelumnya atau, untuk StartAt status, 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 }); }
  2. 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:us-east-1:123456789012:function:Add", "End": true } } }
  3. Mulai eksekusi dengan JSON teks berikut.

    { "numbers": [3, 4] }

    AddNegara menerima JSON teks 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.

Memohon AWS Step Functions dari layanan lain

Anda dapat mengonfigurasi beberapa layanan lain untuk memanggil mesin status. Berdasarkan jenis alur kerja mesin status, Anda dapat memanggil mesin status secara asinkron atau sinkron. Untuk memanggil mesin status secara sinkron, gunakan StartSyncExecution API panggilan 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:

Pemanggilan Step Functions diatur oleh kuota StartExecution. Untuk informasi selengkapnya, lihat:

Transisi dalam mesin negara

Ketika Anda memulai eksekusi baru dari mesin negara Anda, sistem dimulai dengan status yang direferensikan di bidang tingkat atasStartAt. 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.

Nextbidang 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 sendiriNext. Bahasa Status Amazon 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 redriveeksekusi, 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. startStatus 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

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.

Baca Konsistensi di Step Functions

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

Untuk informasi selengkapnya, lihat berikut ini: