ItemReader (Peta) - AWS Step Functions

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

ItemReader (Peta)

ItemReaderBidang adalah JSON objek, yang menentukan dataset dan lokasinya. Status Peta Terdistribusi menggunakan kumpulan data ini sebagai inputnya. Contoh berikut menunjukkan sintaks ItemReader bidang jika kumpulan data Anda adalah CSV file yang disimpan di bucket Amazon S3.

"ItemReader": { "ReaderConfig": { "InputType": "CSV", "CSVHeaderLocation": "FIRST_ROW" }, "Resource": "arn:aws:states:::s3:getObject", "Parameters": { "Bucket": "amzn-s3-demo-bucket", "Key": "csvDataset/ratings.csv" } }
Tip

Di Workflow Studio, Anda menentukan kumpulan data dan lokasinya di bidang Sumber item.

Isi ItemReader lapangan

Bergantung pada kumpulan data Anda, isi ItemReader bidang bervariasi. Misalnya, jika kumpulan data Anda adalah JSON larik yang diteruskan dari langkah sebelumnya dalam alur kerja, ItemReader bidang tersebut dihilangkan. Jika kumpulan data Anda adalah sumber data Amazon S3, bidang ini berisi sub-bidang berikut.

ReaderConfig

Sebuah JSON objek yang menentukan rincian berikut:

  • InputType

    Menentukan jenis sumber data Amazon S3, CSV seperti file, objek, fileJSON, atau daftar inventaris Amazon S3. Di Workflow Studio, Anda dapat memilih jenis input dari daftar dropdown sumber item Amazon S3 di bawah bidang Sumber item.

  • CSVHeaderLocation

    catatan

    Anda harus menentukan bidang ini hanya jika Anda menggunakan CSV file sebagai kumpulan data.

    Menerima salah satu nilai berikut untuk menentukan lokasi header kolom:

    penting

    Saat ini, Step Functions mendukung CSV header hingga 10 KB.

    • FIRST_ROW— Gunakan opsi ini jika baris pertama file adalah header.

    • GIVEN— Gunakan opsi ini untuk menentukan header dalam definisi mesin negara. Misalnya, jika CSV file Anda berisi data berikut.

      1,307,3.5,1256677221 1,481,3.5,1256677456 1,1091,1.5,1256677471 ...

      Berikan JSON array berikut sebagai CSV header.

      "ItemReader": { "ReaderConfig": { "InputType": "CSV", "CSVHeaderLocation": "GIVEN", "CSVHeaders": [ "userId", "movieId", "rating", "timestamp" ] } }
    Tip

    Di Workflow Studio, Anda dapat menemukan opsi ini di bawah Konfigurasi tambahan di bidang Sumber item.

  • MaxItems

    Membatasi jumlah item data yang diteruskan ke Map negara bagian. Misalnya, misalkan Anda menyediakan CSV file yang berisi 1000 baris dan tentukan batas 100. Kemudian, penerjemah hanya melewati 100 baris ke Map negara bagian. MapStatus memproses item dalam urutan berurutan, dimulai setelah baris header.

    Secara default, Map status mengulangi semua item dalam kumpulan data yang ditentukan.

    catatan

    Saat ini, Anda dapat menentukan batas hingga 100.000.000. Status Peta Terdistribusi berhenti membaca item di luar batas ini.

    Tip

    Di Workflow Studio, Anda dapat menemukan opsi ini di bawah Konfigurasi tambahan di bidang Sumber item.

    Atau, Anda dapat menentukan jalur referensi ke pasangan kunci-nilai yang ada di masukan status Peta Terdistribusi Anda. Jalur ini harus menyelesaikan ke bilangan bulat positif. Anda menentukan jalur referensi di MaxItemsPath sub-bidang.

    penting

    Anda dapat menentukan salah satu MaxItems atau MaxItemsPath sub-bidang, tetapi tidak keduanya.

Resource

APITindakan Amazon S3 yang harus dijalankan oleh Step Functions tergantung pada kumpulan data yang ditentukan.

Parameters

JSONObjek yang menentukan nama bucket Amazon S3 dan kunci objek tempat kumpulan data disimpan.

penting

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

Contoh dataset

Anda dapat menentukan salah satu opsi berikut sebagai kumpulan data Anda:

penting

Step Functions memerlukan izin yang sesuai untuk mengakses kumpulan data Amazon S3 yang Anda gunakan. Untuk informasi tentang IAM kebijakan untuk kumpulan data, lihat. IAMkebijakan untuk kumpulan data

Status Peta Terdistribusi dapat menerima JSON input yang diteruskan dari langkah sebelumnya dalam alur kerja. Masukan ini harus berupa array, atau harus berisi array dalam node tertentu. Untuk memilih node yang berisi array, Anda dapat menggunakan ItemsPath (Peta) bidang.

Untuk memproses item individual dalam array, status Peta Terdistribusi memulai eksekusi alur kerja anak untuk setiap item array. Tab berikut menunjukkan contoh input yang diteruskan ke Map status dan input yang sesuai ke eksekusi alur kerja anak.

catatan

Step Functions menghilangkan ItemReader bidang ketika dataset Anda adalah JSON array dari langkah sebelumnya.

Input passed to the Map state

Pertimbangkan JSON array berikut dari tiga item.

"facts": [ { "verdict": "true", "statement_date": "6/11/2008", "statement_source": "speech" }, { "verdict": "false", "statement_date": "6/7/2022", "statement_source": "television" }, { "verdict": "mostly-true", "statement_date": "5/18/2016", "statement_source": "news" } ]
Input passed to a child workflow execution

Status Peta Terdistribusi memulai tiga eksekusi alur kerja anak. Setiap eksekusi menerima item array sebagai input. Contoh berikut menunjukkan input yang diterima oleh eksekusi alur kerja anak.

{ "verdict": "true", "statement_date": "6/11/2008", "statement_source": "speech" }

Status Peta Terdistribusi dapat mengulang objek yang disimpan dalam bucket Amazon S3. Ketika eksekusi alur kerja mencapai Map status, Step Functions memanggil API tindakan ListObjectsV2, yang mengembalikan array metadata objek Amazon S3. Dalam array ini, setiap item berisi data, seperti ETagdan Key, untuk data yang disimpan dalam bucket.

Untuk memproses item individual dalam array, status Peta Terdistribusi memulai eksekusi alur kerja anak. Misalnya, ember Amazon S3 Anda berisi 100 gambar. Kemudian, array kembali setelah menjalankan ListObjectsV2 API tindakan berisi 100 item. Status Peta Terdistribusi kemudian memulai 100 eksekusi alur kerja anak untuk memproses setiap item array.

catatan
  • Saat ini, Step Functions juga menyertakan item untuk setiap folder yang Anda buat di bucket Amazon S3 tertentu menggunakan konsol Amazon S3. Ini menghasilkan eksekusi alur kerja anak tambahan yang dimulai oleh status Peta Terdistribusi. Untuk menghindari membuat eksekusi alur kerja anak tambahan untuk folder, kami sarankan Anda menggunakan AWS CLI untuk membuat folder. Untuk informasi selengkapnya, lihat Perintah Amazon S3 tingkat tinggi di AWS Command Line Interface Panduan Pengguna.

  • Step Functions memerlukan izin yang sesuai untuk mengakses kumpulan data Amazon S3 yang Anda gunakan. Untuk informasi tentang IAM kebijakan untuk kumpulan data, lihat. IAMkebijakan untuk kumpulan data

Tab berikut menunjukkan contoh sintaks ItemReader bidang dan masukan yang diteruskan ke eksekusi alur kerja anak untuk kumpulan data ini.

ItemReader syntax

Dalam contoh ini, Anda telah mengatur data Anda, yang mencakup gambar, JSON file, dan objek, dalam awalan yang dinamai processData dalam bucket Amazon S3 bernama. amzn-s3-demo-bucket

"ItemReader": { "Resource": "arn:aws:states:::s3:listObjectsV2", "Parameters": { "Bucket": "amzn-s3-demo-bucket", "Prefix": "processData" } }
Input passed to a child workflow execution

Status Peta Terdistribusi memulai eksekusi alur kerja anak sebanyak jumlah item yang ada di bucket Amazon S3. Contoh berikut menunjukkan input yang diterima oleh eksekusi alur kerja anak.

{ "Etag": "\"05704fbdccb224cb01c59005bebbad28\"", "Key": "processData/images/n02085620_1073.jpg", "LastModified": 1668699881, "Size": 34910, "StorageClass": "STANDARD" }

Status Peta Terdistribusi dapat menerima JSON file yang disimpan di bucket Amazon S3 sebagai kumpulan data. JSONFile harus berisi array.

Ketika eksekusi alur kerja mencapai Map status, Step Functions memanggil GetObjectAPItindakan untuk mengambil file yang ditentukan. JSON MapStatus kemudian mengulangi setiap item dalam array dan memulai eksekusi alur kerja anak untuk setiap item. Misalnya, jika JSON file Anda berisi 1000 item array, Map status akan memulai 1000 eksekusi alur kerja anak.

catatan
  • Input eksekusi yang digunakan untuk memulai eksekusi alur kerja anak tidak dapat melebihi 256 KB. Namun, Step Functions mendukung membaca item hingga 8 MB dari JSON file CSV atau jika Anda kemudian menerapkan ItemSelector bidang opsional untuk mengurangi ukuran item.

  • Saat ini, Step Functions mendukung 10 GB sebagai ukuran maksimum file individual dalam laporan inventaris Amazon S3. Namun, Step Functions dapat memproses lebih dari 10 GB jika setiap file individu di bawah 10 GB.

  • Step Functions memerlukan izin yang sesuai untuk mengakses kumpulan data Amazon S3 yang Anda gunakan. Untuk informasi tentang IAM kebijakan untuk kumpulan data, lihat. IAMkebijakan untuk kumpulan data

Tab berikut menunjukkan contoh sintaks ItemReader bidang dan masukan yang diteruskan ke eksekusi alur kerja anak untuk kumpulan data ini.

Untuk contoh ini, bayangkan Anda memiliki JSON file bernamafactcheck.json. Anda telah menyimpan file ini dalam awalan bernama jsonDataset dalam bucket Amazon S3. Berikut ini adalah contoh dari JSON dataset.

[ { "verdict": "true", "statement_date": "6/11/2008", "statement_source": "speech" }, { "verdict": "false", "statement_date": "6/7/2022", "statement_source": "television" }, { "verdict": "mostly-true", "statement_date": "5/18/2016", "statement_source": "news" }, ... ]
ItemReader syntax
"ItemReader": { "Resource": "arn:aws:states:::s3:getObject", "ReaderConfig": { "InputType": "JSON" }, "Parameters": { "Bucket": "amzn-s3-demo-bucket", "Key": "jsonDataset/factcheck.json" } }
Input to a child workflow execution

Status Peta Terdistribusi memulai eksekusi alur kerja anak sebanyak jumlah item array yang ada dalam file. JSON Contoh berikut menunjukkan input yang diterima oleh eksekusi alur kerja anak.

{ "verdict": "true", "statement_date": "6/11/2008", "statement_source": "speech" }

Status Peta Terdistribusi dapat menerima CSV file yang disimpan di bucket Amazon S3 sebagai kumpulan data. Jika Anda menggunakan CSV file sebagai dataset Anda, Anda perlu menentukan header CSV kolom. Untuk informasi tentang cara menentukan CSV header, lihatIsi ItemReader lapangan.

Step Functions CSV mem-parsing file berdasarkan aturan berikut:

  • Koma (,) adalah pembatas yang memisahkan bidang.

  • Baris baru adalah pembatas yang memisahkan catatan.

  • Bidang diperlakukan sebagai string. Untuk konversi tipe data, gunakan fungsi States.StringToJson intrinsik di. ItemSelector (Peta)

  • Tanda kutip ganda (” “) tidak diperlukan untuk melampirkan string. Namun, string yang diapit oleh tanda kutip ganda dapat berisi koma dan baris baru tanpa bertindak sebagai pembatas rekaman.

  • Anda dapat mempertahankan tanda kutip ganda dengan mengulanginya.

  • Jika jumlah bidang dalam satu baris kurang dari jumlah bidang di header, Step Functions menyediakan string kosong untuk nilai yang hilang.

  • Jika jumlah bidang dalam satu baris lebih dari jumlah bidang di header, Step Functions melewatkan bidang tambahan.

Untuk informasi selengkapnya tentang cara Step Functions mem-parsing CSV file, lihatExample of parsing an input CSV file.

Ketika eksekusi alur kerja mencapai Map status, Step Functions memanggil GetObjectAPItindakan untuk mengambil file yang ditentukan. CSV MapStatus kemudian mengulangi setiap baris dalam CSV file dan memulai eksekusi alur kerja anak untuk memproses item di setiap baris. Misalnya, Anda menyediakan CSV file yang berisi 100 baris sebagai input. Kemudian, penerjemah meneruskan setiap baris ke Map negara bagian. MapStatus memproses item dalam urutan serial, dimulai setelah baris header.

catatan
  • Input eksekusi yang digunakan untuk memulai eksekusi alur kerja anak tidak dapat melebihi 256 KB. Namun, Step Functions mendukung membaca item hingga 8 MB dari JSON file CSV atau jika Anda kemudian menerapkan ItemSelector bidang opsional untuk mengurangi ukuran item.

  • Saat ini, Step Functions mendukung 10 GB sebagai ukuran maksimum file individual dalam laporan inventaris Amazon S3. Namun, Step Functions dapat memproses lebih dari 10 GB jika setiap file individu di bawah 10 GB.

  • Step Functions memerlukan izin yang sesuai untuk mengakses kumpulan data Amazon S3 yang Anda gunakan. Untuk informasi tentang IAM kebijakan untuk kumpulan data, lihat. IAMkebijakan untuk kumpulan data

Tab berikut menunjukkan contoh sintaks ItemReader bidang dan masukan yang diteruskan ke eksekusi alur kerja anak untuk kumpulan data ini.

ItemReader syntax

Misalnya, katakan bahwa Anda memiliki CSV file bernamaratings.csv. Kemudian, Anda telah menyimpan file ini dalam awalan yang dinamai csvDataset dalam bucket Amazon S3.

{ "ItemReader": { "ReaderConfig": { "InputType": "CSV", "CSVHeaderLocation": "FIRST_ROW" }, "Resource": "arn:aws:states:::s3:getObject", "Parameters": { "Bucket": "amzn-s3-demo-bucket", "Key": "csvDataset/ratings.csv" } } }
Input to a child workflow execution

Status Peta Terdistribusi memulai eksekusi alur kerja anak sebanyak jumlah baris yang ada dalam CSV file, tidak termasuk baris header, jika dalam file. Contoh berikut menunjukkan input yang diterima oleh eksekusi alur kerja anak.

{ "rating": "3.5", "movieId": "307", "userId": "1", "timestamp": "1256677221" }

Status Peta Terdistribusi dapat menerima file manifes inventaris Amazon S3 yang disimpan di bucket Amazon S3 sebagai kumpulan data.

Saat eksekusi alur kerja mencapai Map status, Step Functions akan memanggil GetObjectAPItindakan untuk mengambil file manifes inventaris Amazon S3 yang ditentukan. MapStatus kemudian mengulangi objek dalam inventaris untuk mengembalikan array metadata objek inventaris Amazon S3.

catatan
  • Saat ini, Step Functions mendukung 10 GB sebagai ukuran maksimum file individual dalam laporan inventaris Amazon S3. Namun, Step Functions dapat memproses lebih dari 10 GB jika setiap file individu di bawah 10 GB.

  • Step Functions memerlukan izin yang sesuai untuk mengakses kumpulan data Amazon S3 yang Anda gunakan. Untuk informasi tentang IAM kebijakan untuk kumpulan data, lihat. IAMkebijakan untuk kumpulan data

Berikut ini adalah contoh file inventaris dalam CSV format. File ini menyertakan objek bernama csvDataset danimageDataset, yang disimpan dalam bucket Amazon S3 yang diberi nama. amzn-s3-demo-source-bucket

"amzn-s3-demo-source-bucket","csvDataset/","0","2022-11-16T00:27:19.000Z" "amzn-s3-demo-source-bucket","csvDataset/titles.csv","3399671","2022-11-16T00:29:32.000Z" "amzn-s3-demo-source-bucket","imageDataset/","0","2022-11-15T20:00:44.000Z" "amzn-s3-demo-source-bucket","imageDataset/n02085620_10074.jpg","27034","2022-11-15T20:02:16.000Z" ...
penting

Saat ini, Step Functions tidak mendukung laporan inventaris Amazon S3 yang ditentukan pengguna sebagai kumpulan data. Anda juga harus memastikan bahwa format output laporan inventaris Amazon S3 Anda adalah. CSV Untuk informasi selengkapnya tentang inventaris Amazon S3 dan cara mengaturnya, lihat Inventaris Amazon S3 di Panduan Pengguna Amazon S3.

Contoh berikut dari file manifes inventaris menunjukkan CSV header untuk metadata objek inventaris.

{ "sourceBucket" : "amzn-s3-demo-source-bucket", "destinationBucket" : "arn:aws:s3:::amzn-s3-demo-inventory", "version" : "2016-11-30", "creationTimestamp" : "1668560400000", "fileFormat" : "CSV", "fileSchema" : "Bucket, Key, Size, LastModifiedDate", "files" : [ { "key" : "amzn-s3-demo-bucket/destination-prefix/data/20e55de8-9c21-45d4-99b9-46c732000228.csv.gz", "size" : 7300, "MD5checksum" : "a7ff4a1d4164c3cd55851055ec8f6b20" } ] }

Tab berikut menunjukkan contoh sintaks ItemReader bidang dan masukan yang diteruskan ke eksekusi alur kerja anak untuk kumpulan data ini.

ItemReader syntax
{ "ItemReader": { "ReaderConfig": { "InputType": "MANIFEST" }, "Resource": "arn:aws:states:::s3:getObject", "Parameters": { "Bucket": "amzn-s3-demo-destination-bucket", "Key": "destination-prefix/amzn-s3-demo-bucket/config-ID/YYYY-MM-DDTHH-MMZ/manifest.json" } } }
Input to a child workflow execution
{ "LastModifiedDate": "2022-11-16T00:29:32.000Z", "Bucket": "amzn-s3-demo-source-bucket", "Size": "3399671", "Key": "csvDataset/titles.csv" }

Bergantung pada bidang yang Anda pilih saat mengonfigurasi laporan inventaris Amazon S3, konten file manifest.json Anda mungkin berbeda dari contoh yang ditampilkan.

IAMkebijakan untuk kumpulan data

Saat Anda membuat alur kerja dengan konsol Step Functions, Step Functions dapat secara otomatis menghasilkan IAM kebijakan berdasarkan sumber daya dalam definisi alur kerja Anda. Kebijakan ini mencakup hak istimewa paling sedikit yang diperlukan untuk memungkinkan peran mesin status menjalankan StartExecution API tindakan untuk status Peta Terdistribusi. Kebijakan ini juga mencakup hak istimewa paling sedikit Step Functions yang diperlukan untuk diakses AWS sumber daya, seperti bucket Amazon S3 dan objek dan fungsi Lambda. Kami sangat menyarankan agar Anda hanya menyertakan izin yang diperlukan dalam IAM kebijakan Anda. Misalnya, jika alur kerja Anda menyertakan Map status dalam mode Terdistribusi, cakupkan kebijakan Anda ke bucket Amazon S3 tertentu dan folder yang berisi kumpulan data Anda.

penting

Jika Anda menentukan bucket dan objek Amazon S3, atau awalan, dengan jalur referensi ke pasangan nilai kunci yang ada di input status Peta Terdistribusi, pastikan Anda memperbarui kebijakan untuk alur kerja Anda. IAM Cakupan kebijakan hingga ke bucket dan nama objek yang diselesaikan jalur saat runtime.

Contoh IAM kebijakan berikut memberikan hak istimewa paling sedikit yang diperlukan untuk mengakses kumpulan data Amazon S3 Anda menggunakan ListObjects V2 dan tindakan. GetObjectAPI

contoh IAMkebijakan untuk objek Amazon S3 sebagai kumpulan data

Contoh berikut menunjukkan IAM kebijakan yang memberikan hak istimewa paling sedikit untuk mengakses objek yang terorganisir processImages di dalam bucket Amazon S3 bernama. amzn-s3-demo-bucket

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket" ], "Condition": { "StringLike": { "s3:prefix": [ "processImages" ] } } } ] }
contoh IAMkebijakan untuk CSV file sebagai kumpulan data

Contoh berikut menunjukkan IAM kebijakan yang memberikan hak istimewa paling sedikit untuk mengakses CSV file bernama. ratings.csv

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/csvDataset/ratings.csv" ] } ] }
contoh IAMkebijakan untuk inventaris Amazon S3 sebagai kumpulan data

Contoh berikut menunjukkan IAM kebijakan yang memberikan hak istimewa paling sedikit untuk mengakses laporan inventaris Amazon S3.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::destination-prefix/amzn-s3-demo-bucket/config-ID/YYYY-MM-DDTHH-MMZ/manifest.json", "arn:aws:s3:::destination-prefix/amzn-s3-demo-bucket/config-ID/data/*" ] } ] }