Menggunakan status Peta dalam mode Terdistribusi untuk mengatur beban kerja paralel skala besar - AWS Step Functions

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

Menggunakan status Peta dalam mode Terdistribusi untuk mengatur beban kerja paralel skala besar

Dengan Step Functions, Anda dapat mengatur beban kerja paralel skala besar untuk melakukan tugas, seperti pemrosesan data semi-terstruktur berdasarkan permintaan. Beban kerja paralel ini memungkinkan Anda memproses sumber data skala besar yang disimpan di Amazon S3 secara bersamaan. Misalnya, Anda dapat memproses satu file JSON atau CSV yang berisi sejumlah besar data. Atau Anda dapat memproses satu set besar objek Amazon S3.

Untuk menyiapkan beban kerja paralel skala besar dalam alur kerja Anda, sertakan Map status dalam mode Terdistribusi. Status Peta memproses item dalam kumpulan data secara bersamaan. MapStatus yang disetel ke Distributed dikenal sebagai status Peta Terdistribusi. Dalam mode Terdistribusi, Map status memungkinkan pemrosesan konkurensi tinggi. Dalam mode Terdistribusi, Map status memproses item dalam kumpulan data dalam iterasi yang disebut eksekusi alur kerja anak. Anda dapat menentukan jumlah eksekusi alur kerja anak yang dapat berjalan secara paralel. Setiap eksekusi alur kerja anak memiliki riwayat eksekusi terpisah sendiri dari alur kerja induk. Jika Anda tidak menentukan, Step Functions menjalankan 10.000 eksekusi alur kerja anak paralel secara paralel.

Ilustrasi berikut menjelaskan bagaimana Anda dapat mengatur beban kerja paralel skala besar dalam alur kerja Anda.

Diagram untuk mengilustrasikan konsep orkestrasi beban kerja paralel skala besar.

Istilah kunci

Mode terdistribusi

Mode pemrosesan status Peta. Dalam mode ini, setiap iterasi Map status berjalan sebagai eksekusi alur kerja anak yang memungkinkan konkurensi tinggi. Setiap eksekusi alur kerja anak memiliki riwayat eksekusi sendiri, yang terpisah dari riwayat eksekusi alur kerja induk. Mode ini mendukung input pembacaan dari sumber data Amazon S3 skala besar.

Status Peta Terdistribusi

Status Peta diatur ke mode pemrosesan Terdistribusi.

Alur kerja peta

Serangkaian langkah yang dijalankan oleh suatu Map negara.

Alur kerja orang tua

Alur kerja yang berisi satu atau lebih status Peta Terdistribusi.

Eksekusi alur kerja anak

Iterasi dari status Peta Terdistribusi. Eksekusi alur kerja anak memiliki riwayat eksekusi sendiri, yang terpisah dari riwayat eksekusi alur kerja induk.

Peta Jalankan

Saat Anda menjalankan Map status dalam mode Distributed, Step Functions akan membuat resource Map Run. Map Run mengacu pada sekumpulan eksekusi alur kerja anak yang memulai status Peta Terdistribusi, dan pengaturan runtime yang mengontrol eksekusi ini. Step Functions menetapkan Amazon Resource Name (ARN) ke Map Run Anda. Anda dapat memeriksa Map Run di konsol Step Functions. Anda juga dapat menjalankan tindakan DescribeMapRun API. Map Run juga memancarkan metrik ke. CloudWatch

Untuk informasi selengkapnya, lihat Memeriksa Map Run.

Contoh definisi status Peta Terdistribusi

Gunakan Map status dalam mode Terdistribusi saat Anda perlu mengatur beban kerja paralel skala besar yang memenuhi kombinasi kondisi berikut:

  • Ukuran dataset Anda melebihi 256 KB.

  • Riwayat peristiwa eksekusi alur kerja melebihi 25.000 entri.

  • Anda memerlukan konkurensi lebih dari 40 iterasi paralel.

Contoh definisi status Peta Terdistribusi berikut menentukan kumpulan data sebagai file CSV yang disimpan dalam bucket Amazon S3. Ini juga menentukan fungsi Lambda yang memproses data di setiap baris file CSV. Karena contoh ini menggunakan file CSV, itu juga menentukan lokasi header kolom CSV. Untuk melihat definisi mesin status lengkap dari contoh ini, lihat tutorial Menyalin data CSV skala besar menggunakan Peta Terdistribusi.

{ "Map": { "Type": "Map", "ItemReader": { "ReaderConfig": { "InputType": "CSV", "CSVHeaderLocation": "FIRST_ROW" }, "Resource": "arn:aws:states:::s3:getObject", "Parameters": { "Bucket": "Database", "Key": "csv-dataset/ratings.csv" } }, "ItemProcessor": { "ProcessorConfig": { "Mode": "DISTRIBUTED", "ExecutionType": "EXPRESS" }, "StartAt": "LambdaTask", "States": { "LambdaTask": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "OutputPath": "$.Payload", "Parameters": { "Payload.$": "$", "FunctionName": "arn:aws:lambda:us-east-2:123456789012:function:processCSVData" }, "End": true } } }, "Label": "Map", "End": true, "ResultWriter": { "Resource": "arn:aws:states:::s3:putObject", "Parameters": { "Bucket": "myOutputBucket", "Prefix": "csvProcessJobs" } } } }

Izin untuk menjalankan Peta Terdistribusi

Bila Anda menyertakan status Peta Terdistribusi dalam alur kerja Anda, Step Functions memerlukan izin yang sesuai untuk memungkinkan peran mesin status menjalankan tindakan StartExecution API untuk status Peta Terdistribusi.

Contoh kebijakan IAM berikut memberikan hak istimewa paling sedikit yang diperlukan untuk peran mesin status Anda untuk menjalankan status Peta Terdistribusi.

catatan

Pastikan Anda mengganti stateMachineName dengan nama mesin status tempat Anda menggunakan status Peta Terdistribusi. Misalnya, arn:aws:states:us-east-2:123456789012:stateMachine:mystateMachine.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "states:StartExecution" ], "Resource": [ "arn:aws:states:region:accountID:stateMachine:stateMachineName" ] }, { "Effect": "Allow", "Action": [ "states:DescribeExecution", "states:StopExecution" ], "Resource": "arn:aws:states:region:accountID:execution:stateMachineName:*" } ] }

Selain itu, Anda perlu memastikan bahwa Anda memiliki hak istimewa paling sedikit yang diperlukan untuk mengakses AWS sumber daya yang digunakan dalam status Peta Terdistribusi, seperti bucket Amazon S3. Untuk informasi, lihat Kebijakan IAM untuk menggunakan status Peta Terdistribusi.

Bidang status Peta Terdistribusi

Untuk menggunakan status Peta Terdistribusi dalam alur kerja Anda, tentukan satu atau beberapa bidang ini. Anda menentukan bidang ini selain bidang status umum.

Type (Wajib)

Menetapkan jenis negara, sepertiMap.

ItemProcessor (Wajib)

Berisi objek JSON berikut yang menentukan mode pemrosesan Map status dan definisi.

  • ProcessorConfig— Sebuah objek JSON yang menentukan konfigurasi untuk negara. Map Objek ini berisi sub-bidang berikut:

    • Mode— Setel DISTRIBUTED untuk menggunakan Map status dalam mode Terdistribusi.

      catatan

      Saat ini, jika Anda menggunakan Map status di dalam alur kerja Express, Anda tidak dapat mengatur Mode keDISTRIBUTED. Namun, jika Anda menggunakan Map status di dalam alur kerja Standar, Anda dapat mengatur Mode keDISTRIBUTED.

    • ExecutionType- Menentukan jenis eksekusi untuk alur kerja Peta sebagai STANDARD atau EXPRESS. Anda harus memberikan bidang ini jika Anda menentukan DISTRIBUTED untuk Mode sub-bidang. Untuk informasi selengkapnya tentang jenis alur kerja, lihatAlur Kerja Standar vs Ekspres.

  • StartAt- Menentukan string yang menunjukkan keadaan pertama dalam alur kerja. String ini peka huruf besar/kecil dan harus cocok dengan nama salah satu objek state. Status ini berjalan pertama kali untuk setiap item dalam kumpulan data. Setiap input eksekusi yang Anda berikan ke Map status diteruskan ke StartAt status terlebih dahulu.

  • States— Objek JSON yang berisi kumpulan status yang dibatasi koma. Dalam objek ini, Anda mendefinisikanMap workflow.

ItemReader

Menentukan dataset dan lokasinya. MapNegara menerima data inputnya dari kumpulan data yang ditentukan.

Dalam mode Terdistribusi, Anda dapat menggunakan payload JSON yang diteruskan dari status sebelumnya atau sumber data Amazon S3 skala besar sebagai kumpulan data. Untuk informasi selengkapnya, lihat ItemReader.

ItemsPath (Opsional)

Menentukan jalur referensi menggunakan JsonPathsintaks untuk memilih node JSON yang berisi array item di dalam input negara.

Dalam mode Terdistribusi, Anda menentukan bidang ini hanya ketika Anda menggunakan array JSON dari langkah sebelumnya sebagai input status Anda. Untuk informasi selengkapnya, lihat ItemsPath.

ItemSelector (Opsional)

Mengganti nilai item kumpulan data individu sebelum diteruskan ke setiap Map iterasi status.

Di bidang ini, Anda menentukan input JSON valid yang berisi kumpulan pasangan kunci-nilai. Pasangan ini dapat berupa nilai statis yang Anda tentukan dalam definisi mesin status Anda, nilai yang dipilih dari input status menggunakan jalur, atau nilai yang diakses dari objek konteks. Untuk informasi selengkapnya, lihat ItemSelector.

ItemBatcher (Opsional)

Menentukan untuk memproses item dataset dalam batch. Setiap eksekusi alur kerja anak kemudian menerima batch item ini sebagai input. Untuk informasi selengkapnya, lihat ItemBatcher.

MaxConcurrency (Opsional)

Menentukan jumlah eksekusi alur kerja anak yang dapat berjalan secara paralel. Penerjemah hanya mengizinkan hingga jumlah eksekusi alur kerja anak paralel yang ditentukan. Jika Anda tidak menentukan nilai konkurensi atau menyetelnya ke nol, Step Functions tidak membatasi secara bersamaan dan menjalankan 10.000 eksekusi alur kerja anak paralel.

catatan

Meskipun Anda dapat menentukan batas konkurensi yang lebih tinggi untuk eksekusi alur kerja anak paralel, sebaiknya Anda tidak melebihi kapasitas AWS layanan hilir, seperti. AWS Lambda

MaxConcurrencyPath (Opsional)

Jika Anda ingin memberikan nilai konkurensi maksimum secara dinamis dari input status menggunakan jalur referensi, gunakan. MaxConcurrencyPath Ketika diselesaikan, jalur referensi harus memilih bidang yang nilainya adalah bilangan bulat non-negatif.

catatan

Suatu Map negara tidak dapat mencakup keduanya MaxConcurrency danMaxConcurrencyPath.

ToleratedFailurePercentage (Opsional)

Mendefinisikan persentase item gagal untuk ditoleransi dalam Map Run. Map Run secara otomatis gagal jika melebihi persentase ini. Step Functions menghitung persentase item yang gagal sebagai hasil dari jumlah total item yang gagal atau habis waktu dibagi dengan jumlah item. Anda harus menentukan nilai antara nol dan 100. Untuk informasi selengkapnya, lihat Ambang kegagalan yang ditoleransi untuk status Peta Terdistribusi.

ToleratedFailurePercentagePath (Opsional)

Jika Anda ingin memberikan nilai persentase kegagalan yang ditoleransi secara dinamis dari input status menggunakan jalur referensi, gunakan. ToleratedFailurePercentagePath Ketika diselesaikan, jalur referensi harus memilih bidang yang nilainya antara nol dan 100.

ToleratedFailureCount (Opsional)

Mendefinisikan jumlah item gagal untuk ditoleransi dalam Map Run. Map Run secara otomatis gagal jika melebihi angka ini. Untuk informasi selengkapnya, lihat Ambang kegagalan yang ditoleransi untuk status Peta Terdistribusi.

ToleratedFailureCountPath (Opsional)

Jika Anda ingin memberikan nilai hitungan kegagalan yang ditoleransi secara dinamis dari input status menggunakan jalur referensi, gunakan. ToleratedFailureCountPath Ketika diselesaikan, jalur referensi harus memilih bidang yang nilainya adalah bilangan bulat non-negatif.

Label (Opsional)

String yang secara unik mengidentifikasi keadaan. Map Untuk setiap Map Run, Step Functions menambahkan label ke Map Run ARN. Berikut ini adalah contoh dari Map Run ARN dengan label kustom bernama: demoLabel

arn:aws:states:us-east-1:123456789012:mapRun:demoWorkflow/demoLabel:3c39a231-69bb-3d89-8607-9e124eddbb0b

Jika Anda tidak menentukan label, Step Functions secara otomatis menghasilkan label unik.

catatan

Label tidak boleh melebihi 40 karakter, harus unik dalam definisi mesin status, dan tidak dapat berisi salah satu karakter berikut:

  • Karakter spasi

  • Karakter wildcard (? *)

  • Karakter tanda kurung (< > { } [ ])

  • Karakter khusus (: ; , \ | ^ ~ $ # % & ` ")

  • Karakter kontrol (\\u0000 - \\u001f atau \\u007f - \\u009f).

Step Functions memungkinkan Anda membuat nama untuk mesin status, eksekusi, aktivitas, dan label yang berisi karakter non-ASCII. Nama-nama non-ASCII ini tidak berfungsi dengan Amazon. CloudWatch Untuk memastikan bahwa Anda dapat melacak CloudWatch metrik, pilih nama yang hanya menggunakan karakter ASCII.

ResultWriter (Opsional)

Menentukan lokasi Amazon S3 tempat Step Functions menulis semua hasil eksekusi alur kerja anak.

Step Functions menggabungkan semua data eksekusi alur kerja anak, seperti input dan output eksekusi, ARN, dan status eksekusi. Kemudian mengekspor eksekusi dengan status yang sama ke file masing-masing di lokasi Amazon S3 yang ditentukan. Untuk informasi selengkapnya, lihat ResultWriter.

Jika Anda tidak mengekspor hasil Map status, ia mengembalikan array dari semua hasil eksekusi alur kerja anak. Sebagai contoh:

[1, 2, 3, 4, 5]
ResultPath (Opsional)

Menentukan di mana dalam input untuk menempatkan output dari iterasi. Input kemudian disaring seperti yang ditentukan oleh OutputPathbidang jika ada, sebelum diteruskan sebagai output negara. Untuk informasi selengkapnya, lihat Pemrosesan Input dan Output.

ResultSelector (Opsional)

Lewati kumpulan pasangan kunci-nilai, di mana nilainya statis atau dipilih dari hasilnya. Untuk informasi selengkapnya, lihat ResultSelector.

Tip

Jika status Paralel atau Peta yang Anda gunakan di mesin status Anda mengembalikan array array, Anda dapat mengubahnya menjadi array datar dengan ResultSelector bidang. Untuk informasi selengkapnya, lihat Meratakan array array.

Retry (Opsional)

Array objek, yang disebut Retriers, yang mendefinisikan kebijakan coba lagi. Eksekusi menggunakan kebijakan coba lagi jika status mengalami error runtime. Untuk informasi selengkapnya, lihat Nyatakan contoh mesin menggunakan Coba Ulang dan menggunakan Catch.

catatan

Jika Anda mendefinisikan Retrier untuk status Peta Terdistribusi, kebijakan coba lagi berlaku untuk semua eksekusi alur kerja anak yang dimulai status. Map Misalnya, bayangkan Map negara Anda memulai tiga eksekusi alur kerja anak, yang satu gagal. Ketika kegagalan terjadi, eksekusi menggunakan Retry bidang, jika ditentukan, untuk Map negara. Kebijakan coba lagi berlaku untuk semua eksekusi alur kerja anak dan bukan hanya eksekusi yang gagal. Jika satu atau beberapa eksekusi alur kerja anak gagal, Map Run gagal.

Saat Anda mencoba lagi Map status, itu membuat Map Run baru.

Catch (Opsional)

Array objek, disebut Catch yang menentukan status fallback. Step Functions menggunakan Catchers yang didefinisikan Catch jika status mengalami kesalahan runtime. Ketika terjadi kesalahan, eksekusi pertama menggunakan retrier apa pun yang ditentukan dalamRetry. Jika kebijakan coba ulang tidak ditentukan atau habis, eksekusi menggunakan Catchers, jika ditentukan. Untuk informasi selengkapnya, lihat Status Fallback.

Langkah selanjutnya

Untuk terus mempelajari lebih lanjut tentang status Peta Terdistribusi, lihat sumber daya berikut: