Menyalin CSV data skala besar menggunakan Peta Terdistribusi 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.

Menyalin CSV data skala besar menggunakan Peta Terdistribusi di Step Functions

Tutorial ini membantu Anda mulai menggunakan Map status dalam mode Terdistribusi. MapStatus yang disetel ke Distributed dikenal sebagai status Peta Terdistribusi. Anda menggunakan status Peta Terdistribusi dalam alur kerja Anda untuk mengulangi sumber data Amazon S3 skala besar. MapStatus menjalankan setiap iterasi sebagai eksekusi alur kerja anak, yang memungkinkan konkurensi tinggi. Untuk informasi selengkapnya tentang mode Terdistribusi, lihat Status peta dalam mode Terdistribusi.

Dalam tutorial ini, Anda menggunakan status Peta Terdistribusi untuk mengulangi CSV file di bucket Amazon S3. Anda kemudian mengembalikan isinya, bersama dengan eksekusi alur kerja anak, di bucket Amazon S3 lainnya. ARN Anda mulai dengan membuat prototipe alur kerja di Workflow Studio. Selanjutnya, Anda mengatur mode pemrosesan Map status ke Didistribusikan, tentukan CSV file sebagai kumpulan data, dan berikan lokasinya ke Map status. Anda juga menentukan jenis alur kerja untuk eksekusi alur kerja anak yang status Peta Terdistribusi dimulai sebagai Express.

Selain pengaturan ini, Anda juga menentukan konfigurasi lain, seperti jumlah maksimum eksekusi alur kerja anak bersamaan dan lokasi untuk mengekspor Map hasilnya, untuk contoh alur kerja yang digunakan dalam tutorial ini.

Prasyarat

  • Unggah CSV file ke bucket Amazon S3. Anda harus menentukan baris header dalam CSV file Anda. Untuk informasi tentang batas ukuran yang dikenakan pada CSV file dan cara menentukan baris header, lihatCSVberkas dalam ember Amazon S3.

  • Buat bucket Amazon S3 lain dan folder di dalam bucket itu untuk mengekspor hasil Map status ke.

penting

Pastikan bucket Amazon S3 Anda berada di bawah yang sama Akun AWS and Wilayah AWS sebagai mesin negara Anda.

Langkah 1: Buat prototipe alur kerja

Pada langkah ini, Anda membuat prototipe untuk alur kerja Anda menggunakan Workflow Studio. Workflow Studio adalah desainer alur kerja visual yang tersedia di konsol Step Functions. Anda memilih status dan API tindakan yang diperlukan dari tab Flow dan Actions masing-masing. Anda akan menggunakan fitur drag and drop Workflow Studio untuk membuat prototipe alur kerja.

  1. Buka Konsol Step Functions dan pilih Buat mesin status.

  2. Dalam kotak dialog Pilih templat, pilih Kosong.

  3. Pilih Pilih untuk membuka Workflow Studio diMode desain.

  4. Dari tab Flow, seret status Peta dan jatuhkan ke status kosong berlabel Seret status pertama di sini.

  5. Di tab Konfigurasi, untuk nama Negara, masukkanProcess data.

  6. Dari tab Tindakan, seret AWS Lambda Memanggil API tindakan dan menjatuhkannya di dalam status data Proses.

  7. Ganti nama AWS Lambda Memanggil status keProcess CSV data.

Langkah 2: Konfigurasikan bidang yang diperlukan untuk status Peta

Pada langkah ini, Anda mengonfigurasi bidang wajib berikut dari status Peta Terdistribusi:

  • ItemReader— Menentukan dataset dan lokasi dari mana Map negara dapat membaca input.

  • ItemProcessor- Menentukan nilai-nilai berikut:

    • ProcessorConfig— Mengatur Mode dan ExecutionType ke DISTRIBUTED dan EXPRESS masing-masing. Ini menetapkan mode pemrosesan Map status dan jenis alur kerja untuk eksekusi alur kerja anak yang memulai status Peta Terdistribusi.

    • StartAt— Status pertama dalam alur kerja Peta.

    • States— Mendefinisikan alur kerja Peta, yang merupakan serangkaian langkah untuk diulang dalam setiap eksekusi alur kerja anak.

  • ResultWriter— Menentukan lokasi Amazon S3 tempat Step Functions menulis hasil status Peta Terdistribusi.

    penting

    Pastikan bucket Amazon S3 yang Anda gunakan untuk mengekspor hasil Map Run berada di bawah yang sama Akun AWS and Wilayah AWS sebagai mesin negara Anda. Jika tidak, eksekusi mesin status Anda akan gagal dengan States.ResultWriterFailed kesalahan tersebut.

Untuk mengkonfigurasi bidang yang diperlukan:
  1. Pilih status data Proses dan, di tab Konfigurasi, lakukan hal berikut:

    1. Untuk mode Pemrosesan, pilih Didistribusikan.

    2. Untuk Sumber item, pilih Amazon S3, lalu pilih CSVfile di S3 dari daftar tarik-turun sumber item S3.

    3. Lakukan hal berikut untuk menentukan lokasi Amazon S3 file AndaCSV:

      1. Untuk objek S3, pilih Masukkan bucket dan kunci dari daftar dropdown.

      2. Untuk Bucket, masukkan nama bucket Amazon S3, yang berisi file. CSV Misalnya, amzn-s3-demo-source-bucket.

      3. Untuk Kunci, masukkan nama objek Amazon S3 tempat Anda menyimpan file. CSV Anda juga harus menentukan nama CSV file di bidang ini. Misalnya, csvDataset/ratings.csv.

    4. Untuk CSV file, Anda juga harus menentukan lokasi header kolom. Untuk melakukan ini, pilih Konfigurasi tambahan, dan kemudian untuk lokasi CSV header pertahankan pilihan default Baris pertama jika baris pertama CSV file Anda adalah header. Jika tidak, pilih Diberikan untuk menentukan header dalam definisi mesin negara. Untuk informasi selengkapnya, lihat ReaderConfig.

    5. Untuk jenis eksekusi Child, pilih Express.

  2. Di lokasi Ekspor, untuk mengekspor hasil Map Run ke lokasi Amazon S3 tertentu, pilih Ekspor output status Peta ke Amazon S3.

  3. Lakukan hal-hal berikut:

    1. Untuk bucket S3, pilih Masukkan nama bucket dan awalan dari daftar dropdown.

    2. Untuk Bucket, masukkan nama bucket Amazon S3 tempat Anda ingin mengekspor hasilnya. Misalnya, mapOutputs.

    3. Untuk Awalan, masukkan nama folder tempat Anda ingin menyimpan hasilnya. Misalnya, resultData.

Langkah 3: Konfigurasikan opsi tambahan

Selain pengaturan yang diperlukan untuk status Peta Terdistribusi, Anda juga dapat menentukan opsi lain. Ini dapat mencakup jumlah maksimum eksekusi alur kerja anak bersamaan dan lokasi untuk mengekspor hasil Map status.

  1. Pilih status data Proses. Kemudian, di Sumber item, pilih Konfigurasi tambahan.

  2. Lakukan hal-hal berikut:

    1. Pilih Ubah item dengan ItemSelector untuk menentukan JSON input khusus untuk setiap eksekusi alur kerja anak.

    2. Masukkan JSON masukan berikut:

      { "index.$": "$$.Map.Item.Index", "value.$": "$$.Map.Item.Value" }

      Untuk informasi tentang cara membuat input kustom, lihatItemSelector (Peta).

  3. Dalam pengaturan Runtime, untuk batas Konkurensi, tentukan jumlah eksekusi alur kerja turunan bersamaan yang dapat dimulai oleh status Peta Terdistribusi. Misalnya, masukkan 100.

  4. Buka jendela atau tab baru di browser Anda dan selesaikan konfigurasi fungsi Lambda yang akan Anda gunakan dalam alur kerja ini, seperti yang dijelaskan di. Langkah 4: Konfigurasikan fungsi Lambda

Langkah 4: Konfigurasikan fungsi Lambda

penting

Pastikan fungsi Lambda Anda berada di bawah yang sama Wilayah AWS sebagai mesin negara Anda.

  1. Buka konsol Lambda dan pilih Create Function.

  2. Pilih halaman Buat fungsi, pilih Penulis dari scratch.

  3. Di bagian Informasi dasar, konfigurasikan fungsi Lambda Anda:

    1. Untuk Nama fungsi, masukkan distributedMapLambda.

    2. Untuk Runtime, pilih Node.js.

    3. Simpan semua pilihan default dan pilih Create function.

    4. Setelah Anda membuat fungsi Lambda, salin Amazon Resource Name (ARN) fungsi yang ditampilkan di sudut kanan atas halaman. Anda harus menyediakan ini dalam prototipe alur kerja Anda. Berikut ini adalah contohARN:

      arn:aws:lambda:us-east-2:123456789012:function:distributedMapLambda
  4. Salin kode berikut untuk fungsi Lambda dan tempel ke bagian Sumber kode halaman. distributedMapLambda

    exports.handler = async function(event, context) { console.log("Received Input:\n", event); return { 'statusCode' : 200, 'inputReceived' : event //returns the input that it received } };
  5. Pilih Deploy. Setelah fungsi Anda di-deploy, pilih Test untuk melihat output dari fungsi Lambda Anda.

Langkah 5: Perbarui prototipe alur kerja

Di konsol Step Functions, Anda akan memperbarui alur kerja Anda untuk menambahkan fungsi Lambda. ARN

  1. Kembali ke tab atau jendela tempat Anda membuat prototipe alur kerja.

  2. Pilih langkah Proses CSV data, dan di tab Konfigurasi, lakukan hal berikut:

    1. Untuk jenis Integrasi, pilih Dioptimalkan.

    2. Untuk nama Fungsi, mulailah memasukkan nama fungsi Lambda Anda. Pilih fungsi dari daftar dropdown yang muncul, atau pilih Masukkan nama fungsi dan berikan fungsi Lambda. ARN

Langkah 6: Tinjau definisi Bahasa Amazon States yang dibuat secara otomatis dan simpan alur kerjanya

Saat Anda menyeret dan melepas status dari tab Action dan Flow ke kanvas, Workflow Studio secara otomatis menyusun definisi Amazon States Language dari alur kerja Anda secara real-time. Anda dapat mengedit definisi ini sesuai kebutuhan.

  1. (Opsional) Pilih Definisi pada Panel Inspector panel dan lihat definisi mesin status.

    Tip

    Anda juga dapat melihat ASL definisi di Editor kode Workflow Studio. Di editor kode, Anda juga dapat mengedit ASL definisi alur kerja Anda.

    Kode contoh berikut menunjukkan definisi Bahasa Negara Amazon yang dibuat secara otomatis untuk alur kerja Anda.

    { "Comment": "Using Map state in Distributed mode", "StartAt": "Process data", "States": { "Process data": { "Type": "Map", "MaxConcurrency": 100, "ItemReader": { "ReaderConfig": { "InputType": "CSV", "CSVHeaderLocation": "FIRST_ROW" }, "Resource": "arn:aws:states:::s3:getObject", "Parameters": { "Bucket": "amzn-s3-demo-source-bucket", "Key": "csvDataset/ratings.csv" } }, "ItemProcessor": { "ProcessorConfig": { "Mode": "DISTRIBUTED", "ExecutionType": "EXPRESS" }, "StartAt": "Process CSV data", "States": { "Process CSV data": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "OutputPath": "$.Payload", "Parameters": { "Payload.$": "$", "FunctionName": "arn:aws:lambda:us-east-2:123456789012:function:distributedMapLambda" }, "End": true } } }, "Label": "Processdata", "End": true, "ResultWriter": { "Resource": "arn:aws:states:::s3:putObject", "Parameters": { "Bucket": "mapOutputs", "Prefix": "resultData" } }, "ItemSelector": { "index.$": "$$.Map.Item.Index", "value.$": "$$.Map.Item.Value" } } } }
  2. Tentukan nama untuk mesin negara Anda. Untuk melakukan ini, pilih ikon edit di sebelah nama mesin status default MyStateMachine. Kemudian, dalam konfigurasi mesin Negara, tentukan nama di kotak Nama mesin Negara.

    Untuk tutorial ini, masukkan nama DistributedMapDemo.

  3. (Opsional) Dalam konfigurasi mesin State, tentukan pengaturan alur kerja lainnya, seperti jenis mesin status dan peran pelaksanaannya.

    Untuk tutorial ini, simpan semua pilihan default dalam konfigurasi mesin State.

  4. Dalam kotak dialog Konfirmasi pembuatan peran, pilih Konfirmasi untuk melanjutkan.

    Anda juga dapat memilih Lihat pengaturan peran untuk kembali ke konfigurasi mesin Status.

    catatan

    Jika Anda menghapus IAM peran yang dibuat Step Functions, Step Functions tidak dapat membuatnya kembali nanti. Demikian pula, jika Anda mengubah peran (misalnya, dengan menghapus Step Functions dari prinsipal dalam IAM kebijakan), Step Functions tidak dapat memulihkan pengaturan aslinya nanti.

Langkah 7: Jalankan mesin negara

Eksekusi adalah instance dari mesin status tempat Anda menjalankan alur kerja untuk melakukan tugas.

  1. Pada DistributedMapDemohalaman, pilih Mulai eksekusi.

  2. Dalam kotak dialog Mulai eksekusi, lakukan hal berikut:

    1. (Opsional) Masukkan nama eksekusi khusus untuk mengganti default yang dihasilkan.

      Non- ASCII nama dan logging

      Step Functions menerima nama untuk mesin negara, eksekusi, aktivitas, dan label yang berisi ASCII non-karakter. Karena karakter seperti itu tidak akan berfungsi dengan Amazon CloudWatch, kami sarankan hanya menggunakan ASCII karakter sehingga Anda dapat melacak metrik. CloudWatch

    2. (Opsional) Dalam kotak Input, masukkan nilai input dalam JSON format untuk menjalankan alur kerja Anda.

    3. Pilih Mulai Eksekusi.

    4. Konsol Step Functions mengarahkan Anda ke halaman yang berjudul dengan ID eksekusi Anda. Halaman ini dikenal sebagai halaman Detail Eksekusi. Di halaman ini, Anda dapat meninjau hasil eksekusi saat eksekusi berlangsung atau setelah selesai.

      Untuk meninjau hasil eksekusi, pilih status individual pada tampilan Grafik, lalu pilih tab individual di Detail langkah panel untuk melihat detail setiap status termasuk input, output, dan definisi masing-masing. Untuk detail tentang informasi eksekusi yang dapat Anda lihat di halaman Rincian Eksekusi, lihatIkhtisar detail eksekusi.

    Misalnya, pilih Map status, lalu pilih Map Run untuk membuka halaman Map Run Details. Di halaman ini, Anda dapat melihat semua detail eksekusi status Peta Terdistribusi dan eksekusi alur kerja anak yang dimulai. Untuk informasi tentang halaman ini, lihatMelihat Peta Berjalan.