

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

# Menyalin data CSV skala besar menggunakan Peta Terdistribusi di Step Functions
<a name="tutorial-map-distributed"></a>

Tutorial ini membantu Anda mulai menggunakan `Map` status dalam mode Terdistribusi. `Map`Status 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. `Map`Status menjalankan setiap iterasi sebagai eksekusi alur kerja anak, yang memungkinkan konkurensi tinggi. Untuk informasi selengkapnya tentang mode Terdistribusi, lihat [Status peta dalam mode Terdistribusi](state-map-distributed.md).

Dalam tutorial ini, Anda menggunakan *status Peta Terdistribusi* untuk mengulangi file CSV di bucket Amazon S3. Anda kemudian mengembalikan isinya, bersama dengan ARN eksekusi alur kerja anak, di bucket Amazon S3 lainnya. Anda mulai dengan membuat prototipe alur kerja di Workflow Studio. Selanjutnya, Anda mengatur [mode pemrosesan `Map` status](state-map.md#concepts-map-process-modes) ke Distributed, tentukan file CSV sebagai kumpulan data, dan berikan lokasinya ke status. `Map` **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
<a name="use-dist-map-prereqs"></a>
+ Unggah file CSV ke bucket Amazon S3. Anda harus menentukan baris header dalam file CSV Anda. Untuk informasi tentang batas ukuran yang dikenakan pada file CSV dan cara menentukan baris header, lihat[File CSV dalam ember Amazon S3](input-output-itemreader.md#itemsource-example-csv-data).
+ Buat bucket Amazon S3 lain dan folder di dalam bucket itu untuk mengekspor hasil `Map` status ke.

**Persyaratan untuk akun dan wilayah**  
Bucket Amazon S3 Anda harus sama Akun AWS dan Wilayah AWS sebagai mesin negara bagian Anda.  
*Perhatikan bahwa meskipun mesin status Anda mungkin dapat mengakses file dalam bucket di berbagai Akun AWS yang sama Wilayah AWS, Step Functions hanya mendukung daftar objek di bucket Amazon S3 yang Akun AWS sama dan sama dengan mesin status.* Wilayah AWS 

## Langkah 1: Buat prototipe alur kerja
<a name="use-dist-map-create-workflow"></a>

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 tindakan API 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](https://console.aws.amazon.com/states/home), pilih **State Machines** dari menu, lalu pilih **Create state machine**.

1. Pilih **Buat dari kosong**.

1. Beri nama mesin status Anda, lalu pilih **Lanjutkan** untuk mengedit mesin status Anda di Workflow Studio.

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

1. Di tab **Konfigurasi**, untuk **nama Negara**, masukkan**Process data**.

1. Dari tab **Tindakan**, seret tindakan **AWS Lambda Invoke** API dan letakkan di dalam status **data Proses**.

1. Ubah nama status **AWS Lambda Invoke** menjadi. **Process CSV data**

## Langkah 2: Konfigurasikan bidang yang diperlukan untuk status Peta
<a name="use-dist-map-config-fields"></a>

Pada langkah ini, Anda mengonfigurasi bidang wajib berikut dari *status Peta Terdistribusi*:
+ [ItemReader](input-output-itemreader.md)— Menentukan dataset dan lokasi dari mana `Map` negara dapat membaca input.
+ [ItemProcessor](state-map-distributed.md#distitemprocessor)- 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](input-output-resultwriter.md)— 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 dan Wilayah AWS sebagai mesin status 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**.

   1. Untuk **Sumber item**, pilih **Amazon S3**, lalu pilih **file CSV di S3** dari daftar tarik-turun sumber item **S3**.

   1. Lakukan hal berikut untuk menentukan lokasi Amazon S3 file CSV Anda:

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

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

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

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

   1. Untuk **jenis eksekusi Child**, pilih **Express**.

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

1. Lakukan hal-hal berikut:

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

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

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

## Langkah 3: Konfigurasikan opsi tambahan
<a name="use-dist-map-config-misc-fields"></a>

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

1. Lakukan hal-hal berikut:

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

   1. Masukkan input JSON berikut:

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

      Untuk informasi tentang cara membuat input kustom, lihat`ItemSelector (Peta)`.

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

1. 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](#use-dist-map-config-resource)

## Langkah 4: Konfigurasikan fungsi Lambda
<a name="use-dist-map-config-resource"></a>

**penting**  
Pastikan fungsi Lambda Anda Wilayah AWS sama dengan mesin status Anda.

1. Buka [konsol Lambda](https://console.aws.amazon.com/lambda/home) dan pilih **Create** Function.

1. Pilih halaman **Buat fungsi**, pilih **Penulis dari scratch**.

1. Di bagian **Informasi dasar**, konfigurasikan fungsi Lambda Anda:

   1. Untuk **Nama fungsi**, masukkan **distributedMapLambda**.

   1. Untuk **Runtime**, pilih **Node.js**.

   1. Simpan semua pilihan default dan pilih **Create function**.

   1. Setelah Anda membuat fungsi Lambda, salin Nama Sumber Daya Amazon (ARN) fungsi yang ditampilkan di sudut kanan atas halaman. Anda harus menyediakan ini dalam prototipe alur kerja Anda. Berikut ini adalah contoh ARN:

      ```
      arn:aws:lambda:us-east-2:123456789012:function:distributedMapLambda
      ```

1. 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
       }
   };
   ```

1. Pilih **Deploy**. Setelah fungsi Anda di-deploy, pilih **Test** untuk melihat output dari fungsi Lambda Anda.

## Langkah 5: Perbarui prototipe alur kerja
<a name="use-dist-map-update-workflow"></a>

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

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

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

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

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

## Langkah 6: Tinjau definisi Bahasa Amazon States yang dibuat secara otomatis dan simpan alur kerjanya
<a name="use-dist-map-review-asl"></a>

Saat Anda menyeret dan melepas status dari tab **Action** dan **Flow** ke kanvas, Workflow Studio secara otomatis menyusun definisi [Amazon States Language](concepts-amazon-states-language.md) dari alur kerja Anda secara real-time. Anda dapat mengedit definisi ini sesuai kebutuhan.

1. (Opsional) Pilih **Definisi** pada [Panel Inspector](workflow-studio.md#workflow-studio-components-formdefinition) panel dan lihat definisi mesin status.
**Tip**  
Anda juga dapat melihat definisi ASL di [Editor kode](workflow-studio.md#wfs-interface-code-editor) Workflow Studio. Di editor kode, Anda juga dapat mengedit definisi ASL dari 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:account-id: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"
         }
       }
     }
   }
   ```

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

1. (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**.

1. 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 role yang Step Functions buat, Step Functions tidak dapat membuatnya kembali nanti. Demikian pula, jika Anda mengubah peran (misalnya, dengan menghapus Step Functions dari principal dalam kebijakan IAM), Step Functions tidak dapat memulihkan pengaturan aslinya nanti. 

## Langkah 7: Jalankan mesin negara
<a name="use-dist-map-sm-run"></a>

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

1. Pada **DistributedMapDemo**halaman, pilih **Mulai eksekusi**.

1. Dalam kotak dialog **Mulai eksekusi**, lakukan hal berikut:

   1. (Opsional) Masukkan nama eksekusi khusus untuk mengganti default yang dihasilkan.
**Nama dan pencatatan non-ASCII**  
Step Functions menerima nama untuk mesin negara, eksekusi, aktivitas, dan label yang berisi karakter non-ASCII. Karena karakter seperti itu akan CloudWatch mencegah Amazon mencatat data, sebaiknya gunakan hanya karakter ASCII sehingga Anda dapat melacak metrik Step Functions.

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

   1. Pilih **Mulai Eksekusi**.

   1. Konsol Step Functions mengarahkan Anda ke halaman yang berjudul dengan ID eksekusi Anda, yang dikenal sebagai halaman *Detail Eksekusi*. Anda dapat meninjau hasil eksekusi saat alur kerja berlangsung dan setelah selesai.

      Untuk meninjau hasil eksekusi, pilih status individual pada **tampilan Grafik**, lalu pilih tab individual di [Detail langkah](concepts-view-execution-details.md#exec-details-intf-step-details) 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*, lihat[Ikhtisar detail eksekusi](concepts-view-execution-details.md#exec-details-interface-overview).

   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, lihat[Melihat Peta Berjalan](concepts-examine-map-run.md).