Mode terdistribusi adalah mode di mana status Map dijalankan dalam lingkungan terdistribusi. Mode ini meningkatkan efisiensi dan kapasitas pemrosesan data, cocok untuk pemrosesan data besar dan komputasi paralel.
Konsep
Mode terdistribusi: Mode ini memproses data Object Storage Service (OSS) dalam status Map. Dalam mode ini, sejumlah besar data dapat diproses secara bersamaan, dengan objek dalam Bucket OSS digunakan sebagai data sumber.
Eksekusi sub-workflow: Menjalankan status Map dalam mode terdistribusi setara dengan menjalankan sub-workflow. Definisi sub-workflow mencakup transisi status dari Prosesor Map, dengan input setiap sub-workflow berupa item dari status Map. Sub-workflow MapRun dapat dijalankan dalam mode standar atau mode ekspres. Untuk informasi lebih lanjut, lihat Mode standar dan mode ekspres.
Kebijakan toleransi kesalahan: Jika eksekusi sub-workflow gagal, status Map akan berakhir dengan kegagalan. Untuk status Map yang berisi beberapa item, Anda dapat mengonfigurasi kebijakan toleransi kesalahan agar status Map tetap berjalan meskipun ada kegagalan dalam sub-workflow.
Tabel berikut menjelaskan bidang yang terlibat dalam mode terdistribusi.
Bidang | Tipe | Diperlukan | Deskripsi | Contoh |
Nama | string | Ya | Nama dari status. | my-state-name |
Deskripsi | string | Tidak | Deskripsi dari status. | jelaskan di sini |
Tipe | string | Ya | Tipe dari status. | Map |
InputConstructor | map[string]any | Tidak | Konstruktor input. | Lihat Masukan dan keluaran. |
ItemsPath | string | Ya | Ekspresi yang digunakan untuk mengekstrak array dalam input. | Lihat bagian ItemsPath dari topik ini. |
ItemBatcher | ItemBatcher | Tidak | Menggabungkan beberapa item menjadi satu batch, yang digunakan sebagai input eksekusi sub-workflow. | Lihat bagian ItemBatcher dari topik ini. |
ItemReader | ItemReader | Tidak | Membaca data dari Bucket OSS. | Lihat bagian ItemReader dari topik ini. |
ItemConstructor | ItemConstructor | Tidak |
| Lihat bagian ItemConstructor dari topik ini. |
ResultWriter | ResultWriter | Tidak | Menulis hasil eksekusi sub-workflow ke Bucket OSS yang ditentukan. | Lihat bagian ResultWriter dari topik ini. |
MaxConcuccency | int | Tidak | Menentukan jumlah maksimum eksekusi sub-workflow secara bersamaan. | 40 |
MaxItems | MaxItems | Tidak | Menentukan jumlah maksimum item yang dapat dieksekusi oleh mesin status Map. | Lihat bagian MaxItems dari topik ini. |
ToleratedFailurePercentage | ToleratedFailurePercentage | Tidak | Menentukan persentase kegagalan yang dapat ditoleransi dalam suatu operasi. | Lihat bagian ToleratedFailurePercentage dari topik ini. |
ToleratedFailureCount | ToleratedFailureCount | Tidak | Menentukan jumlah kegagalan yang dapat ditoleransi dalam suatu operasi. | Lihat bagian ToleratedFailureCount dari topik ini. |
Processor | Processor | Ya | Prosesor Map. | Lihat bagian Processor dari topik ini. |
ProcessorConfig | ProcessorConfig | Ya | Konfigurasi prosesor. | Lihat bagian ProcessorConfig dari topik ini. |
OutputConstructor | map[string]any | Tidak | Konstruktor output. | Lihat bagian OutputConstructor dari topik "Masukan dan keluaran". |
Next | string | Tidak | Status berikutnya yang dieksekusi setelah status saat ini selesai. Jika nilai bidang End adalah true, biarkan bidang ini kosong. | my-next-state |
End | bool | Tidak | Menentukan apakah status tersebut merupakan status akhir dari ruang lingkup saat ini. | true |
Retry | Retry | Tidak | Menentukan kebijakan pengulangan kesalahan. | Lihat Penanganan kesalahan. |
Catch | Catch | Tidak | Menentukan kebijakan penangkapan kesalahan. | Lihat Penanganan kesalahan. |
Batasan penggunaan
Batas kuota
Tabel berikut menjelaskan batasan kuota dalam mode terdistribusi. Jika kuota default tidak memenuhi kebutuhan bisnis Anda, Anda dapat mengirim tiket untuk meminta kuota yang lebih besar.
Nama kuota | Deskripsi | Nilai default |
MaxOpenMapRun | Jumlah maksimum status Map terdistribusi yang dapat dieksekusi secara bersamaan dalam satu akun di setiap wilayah. | 10 |
MaxConcurrency | Jumlah maksimum status Map yang dapat dieksekusi secara bersamaan dalam satu tugas MapRun. | 300 |
MaxItems | Jumlah maksimum item yang dapat dibaca dalam satu tugas MapRun. | 10000 |
Batas peran
Untuk menjalankan status Map dalam mode terdistribusi, Anda memerlukan izin tertentu. Untuk informasi lebih lanjut tentang cara membuat kebijakan peran, lihat Buat kebijakan.
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"oss:HeadObject",
"oss:GetObjectMeta",
"oss:GetObject",
"oss:PutObject",
"oss:ListObjectsV2",
"oss:ListObjects",
"oss:InitiateMultipartUpload",
"oss:UploadPart",
"oss:CompleteMultipartUpload",
"oss:AbortMultipartUpload",
"oss:ListMultipartUploads",
"oss:ListParts"
],
"Resource": "*"
}
]
}Bidang utama dalam mode terdistribusi
Jika ItemConstructor, ItemsPath, dan ItemBatcher dikonfigurasi, mereka dieksekusi dalam urutan ItemsPath, ItemConstructor, dan ItemBatcher.
ItemsPath
ItemsPath adalah ekspresi untuk mengekstrak array dari input. Jika JSON array dikembalikan setelah ekspresi ItemsPath dieksekusi, status Map dapat dijalankan. Setiap objek dalam array dilewatkan ke ItemProcessor untuk diproses. Anda dapat menggunakan variabel $Context dan $Input untuk mengekstrak array, seperti yang ditunjukkan dalam contoh berikut:
$Input.FieldAProcessor
Prosesor Map. Tabel berikut menjelaskan bidang dalam Processor.
Bidang | Tipe | Diperlukan | Deskripsi | Contoh |
States | array | Ya | Array status yang terkandung dalam alur. | |
StartAt | string | Ya | Status dari mana alur mulai dieksekusi. | tugas awal saya |
ProcessorConfig
Konfigurasi prosesor. Tabel berikut menjelaskan bidang dalam ProcessorConfig.
Bidang | Tipe | Diperlukan | Deskripsi | Contoh |
ExecutionMode | string | Ya | Mode eksekusi. | Express |
ItemReader
Mode terdistribusi mendukung ukuran input yang lebih besar yang dibaca dari Bucket OSS. Tabel berikut menjelaskan bidang dalam ItemReader.
Bidang | Tipe | Diperlukan | Deskripsi | Contoh |
SourceType | string | Ya | Tipe sumber data. Nilai valid: OSS_CSV, OSS_JSON_LIST, OSS_OBJECTS, dan OSS_INVENTORY_FILES. | OSS_CSV |
SourceParameters | string | Tidak | Parameter sumber data. | Lihat bagian SourceParameters dari topik ini. |
ReaderConfig | ReaderConfig | Tidak | Konfigurasi pembaca. | Lihat bagian ReaderConfig dari topik ini. |
SourceParameters
Parameter sumber data. Tabel berikut menjelaskan bidang dalam SourceParameters.
Bidang | Tipe | Diperlukan | Deskripsi | Contoh |
Bucket | string | Tidak | Nama bucket tempat objek berada. | example-bucket |
ObjectName | string | Tidak | Nama objek. | object_name_1 |
Prefix | string | Tidak | Awalan yang harus terkandung dalam nama bucket yang ingin Anda kembalikan. Jika Anda membiarkan bidang ini kosong, sistem akan mengembalikan semua bucket yang memenuhi kondisi. Bidang ini kosong secara default. | example-prefix |
ReaderConfig
Konfigurasi pembaca. Tabel berikut menjelaskan bidang dalam ReaderConfig.
Bidang | Tipe | Diperlukan | Deskripsi | Contoh |
CSVHeaders | []string | Tidak | Judul kolom atau nama bidang yang terkandung dalam baris pertama file CSV. | ColA,ColB,ColC |
Untuk membaca data dari Bucket OSS, gunakan salah satu metode berikut:
Membaca data dari file CSV yang disimpan di Bucket OSS
Anda dapat membaca data dari file CSV menggunakan status Map. Misalnya, Anda memiliki file CSV bernama
example-object.csvyang disimpan di Bucket OSS bernamaexample-bucket. Anda dapat merujuk pada cuplikan contoh berikut untuk membaca data dari file CSV:Type: StateMachine Name: MyWorkflow SpecVersion: v1 StartAt: Map States: - Type: Map Name: Map ProcessorConfig: ExecutionMode: Express Processor: StartAt: Pass States: - Type: Pass Name: Pass End: true ItemReader: SourceType: OSS_CSV SourceParameters: Bucket: example-bucket ObjectName: example-object.csv End: trueCuplikan berikut menunjukkan isi file
example-object.csv:ColA,ColB,ColC col_a_1,col_b_1,col_c_1Cuplikan berikut menunjukkan contoh masukan eksekusi sub-workflow.
{ "ColA": "col_a_1", "ColB": "col_b_1", "ColC": "col_c_1", }Membaca data dari file JSON yang disimpan di Bucket OSS
PentingFile JSON yang disimpan di Bucket OSS berisi array JSON.
Anda dapat membaca array JSON dari Bucket OSS yang ditentukan. Misalnya, Anda memiliki file JSON bernama
example-object.jsonyang disimpan di Bucket OSS bernamaexample-bucket. Anda dapat merujuk pada cuplikan contoh berikut untuk membaca array JSON dari Bucket OSS:Type: StateMachine Name: MyWorkflow SpecVersion: v1 StartAt: Map States: - Type: Map Name: Map ProcessorConfig: ExecutionMode: Express Processor: StartAt: Pass States: - Type: Pass Name: Pass End: true ItemReader: SourceType: OSS_JSON_LIST SourceParameters: Bucket: example-bucket ObjectName: example-object.json End: trueCuplikan berikut menunjukkan isi file
example-object.json:[ { "key_1": "value_1" } ]Cuplikan berikut menunjukkan contoh masukan eksekusi sub-workflow.
{ "key_1": "value_1", }Membaca objek yang disimpan di Bucket OSS
Anda dapat membaca objek dari Bucket OSS yang ditentukan. Misalnya, Anda memiliki daftar objek yang namanya diawali dengan
example-prefix. Objek tersebut disimpan di Bucket OSS bernamaexample-bucket. Cuplikan berikut memberikan definisi contoh mesin status.Type: StateMachine Name: MyWorkflow SpecVersion: v1 StartAt: Map States: - Type: Map Name: Map ProcessorConfig: ExecutionMode: Express Processor: StartAt: Pass States: - Type: Pass Name: Pass End: true ItemReader: SourceType: OSS_OBJECTS SourceParameters: Bucket: example-bucket Prefix: example-prefix End: trueCuplikan berikut menunjukkan bahwa objek
example-prefix/object_1disimpan di bucketexample-bucket:example-bucket ├── example-prefix/object_1Cuplikan berikut menunjukkan contoh masukan eksekusi sub-workflow.
{ "XMLName": { "Space": "", "Local": "Contents" }, "Key": "example-prefix/object_1", "Type": "Normal", "Size": 268435, "ETag": "\"50B06D6680D86F04138HSN612EF5DEC6\"", "Owner": { "XMLName": { "Space": "", "Local": "" }, "ID": "", "DisplayName": "" }, "LastModified": "2024-01-01T01:01:01Z", "StorageClass": "Standard", "RestoreInfo": "" }Membaca inventaris dari Bucket OSS
Anda dapat membaca data dari Bucket OSS atau objek yang ditentukan menggunakan status Map. Misalnya, Anda memiliki file inventaris bernama
manifest.jsonyang disimpan di Bucket OSS bernamaexample-bucket. Jalur ke file inventaris adalahinventory/2024-01-01T01-01Z/manifest.json. Cuplikan berikut memberikan definisi contoh mesin status.Type: StateMachine Name: MyWorkflow SpecVersion: v1 StartAt: Map States: - Type: Map Name: Map ProcessorConfig: ExecutionMode: Express Processor: StartAt: Pass States: - Type: Pass Name: Pass End: true ItemReader: SourceType: OSS_INVENTORY_FILES SourceParameters: Bucket: example-bucket ObjectName: inventory/2024-01-01T01-01Z/manifest.json ItemConstructor: Key.$: $Item.Key End: trueCuplikan berikut menunjukkan isi file inventaris:
"example-bucket","object_name_1" "example-bucket","object_name_2"Cuplikan berikut menunjukkan contoh masukan eksekusi sub-workflow pertama.
{ "Bucket": "example-bucket", "Key": "object_name_1" }
ItemBatcher
ItemBatcher menggabungkan beberapa item menjadi satu batch, yang digunakan sebagai input eksekusi sub-workflow. Tabel berikut menjelaskan bidang dalam ItemBatcher.
Bidang | Tipe | Diperlukan | Deskripsi | Contoh |
MaxItemsPerBatch | int | Tidak | Jumlah maksimum item yang dapat diproses dalam satu batch. | Lihat bagian MaxItemsPerBatch dari topik ini. |
MaxInputBytesPerBatch | int | Tidak | Jumlah maksimum byte data yang dapat diproses dalam satu batch. | Lihat bagian MaxInputBytesPerBatch dari topik ini. |
BatchInput | map[string]any | Tidak | Kumpulan data yang digunakan sebagai input satu batch. | Lihat bagian BatchInput dari topik ini. |
MaxItemsPerBatch
MaxItemsPerBatch menentukan jumlah maksimum item yang dapat diproses dalam satu batch. Cuplikan berikut memberikan contoh cara menggunakan MaxItemsPerBatch.
Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: Map
States:
- Type: Map
Name: Map
ProcessorConfig:
ExecutionMode: Express
ItemsPath: $Input.Items
Processor:
StartAt: Pass
States:
- Type: Pass
Name: Pass
End: true
ItemBatcher:
MaxItemsPerBatch: 2
End: trueCuplikan berikut menunjukkan input yang dieksekusi oleh mesin status:
{
"Items": [
{"key_1":"value_1"},
{"key_2":"value_2"},
{"key_3":"value_3"},
{"key_4":"value_4"},
{"key_5":"value_5"}
]
}Cuplikan berikut menunjukkan contoh masukan eksekusi sub-workflow.
# execution-1
# Contoh masukan eksekusi sub-workflow pertama
{
"Items": [
{"key_1":"value_1"},
{"key_2":"value_2"}
]
}
# execution-2
# Contoh masukan eksekusi sub-workflow kedua
{
"Items": [
{"key_1":"value_3"},
{"key_2":"value_4"}
]
}
# execution-3
# Contoh masukan eksekusi sub-workflow ketiga
{
"Items": [
{"key_1":"value_5"},
]
}MaxInputBytesPerBatch
MaxInputBytesPerBatch menentukan jumlah maksimum byte data yang dapat diproses dalam satu batch. Cuplikan berikut memberikan contoh cara menggunakan MaxInputBytesPerBatch.
ItemBatcher menambahkan kunci dan input tambahan saat memproses batch. Oleh karena itu, ukuran total batch mencakup ukuran kunci dan input tambahan.
Satuan MaxInputBytesPerBatch adalah byte.
Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: Map
States:
- Type: Map
Name: Map
ProcessorConfig:
ExecutionMode: Express
ItemsPath: $Input.Items
Processor:
StartAt: Pass
States:
- Type: Pass
Name: Pass
End: true
ItemBatcher:
MaxInputBytesPerBatch: 50
End: true
Cuplikan berikut menunjukkan input yang dieksekusi oleh mesin status:
{
"Items":[
{"Key":1},
{"key":2},
{"Key":3},
{"Key":4},
{"Key":5}
]
}Cuplikan berikut menunjukkan contoh masukan eksekusi sub-workflow.
# execution-1
# Contoh masukan eksekusi sub-workflow pertama
{
"Items":[
{"Key":1},
{"key":2}
]
}
# execution-2
# Contoh masukan eksekusi sub-workflow kedua
{
"Items":[
{"Key":3},
{"key":4}
]
}
# execution-3
# Contoh masukan eksekusi sub-workflow ketiga
{
"Items":[
{"Key":5}
]
}BatchInput
BatchInput menyediakan kumpulan data yang digunakan sebagai input satu batch. BatchInput mendukung input tambahan selain item. Cuplikan berikut memberikan contoh cara menggunakan BatchInput.
Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: Map
States:
- Type: Map
Name: Map
ProcessorConfig:
ExecutionMode: Express
ItemsPath: $Input.Items
Processor:
StartAt: Pass
States:
- Type: Pass
Name: Pass
End: true
ItemBatcher:
MaxInputBytesPerBatch: 70
BatchInput:
InputKey.$: $Input.Key
End: trueCuplikan berikut menunjukkan input yang dieksekusi oleh mesin status:
{
"Key":"value",
"Items":[
{"Key":1},
{"key":2},
{"Key":3},
{"Key":4},
{"Key":5}
]
}Cuplikan berikut menunjukkan contoh masukan eksekusi sub-workflow.
# execution-1
# Contoh input dari eksekusi sub-workflow pertama
{
"BatchInput":{
"InputKey":"value"
},
"Items":[
{"Key":1},
{"key":2}
]
}
# execution-2
# Contoh input dari eksekusi sub-workflow kedua
{
"BatchInput":{
"InputKey":"value"
},
"Items":[
{"Key":3},
{"key":4}
]
}
# execution-3
# Contoh input dari eksekusi sub-workflow ketiga
{
"BatchInput":{
"InputKey":"value"
},
"Items":[
{"Key":5}
]
}ItemConstructor
ItemConstructor membangun item dan memungkinkan Anda menggunakan $Item untuk merujuk input asli. Cuplikan berikut memberikan contoh cara menggunakan ItemConstructor.
Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: Map
States:
- Type: Map
Name: Map
ProcessorConfig:
ExecutionMode: Express
ItemsPath: $Input.Items
Processor:
StartAt: Pass
States:
- Type: Pass
Name: Pass
End: true
ItemBatcher:
MaxInputBytesPerBatch: 200
BatchInput:
InputKey.$: $Input.Key
ItemConstructor:
ConstructedKey.$: $Item.Key
InputKey.$: $Input.Key
End: trueCuplikan berikut menunjukkan input yang dieksekusi oleh mesin status:
{
"Key":"value",
"Items":[
{"Key":1},
{"Key":2},
{"Key":3},
{"Key":4},
{"Key":5}
]
}Cuplikan berikut menunjukkan contoh masukan eksekusi sub-workflow.
# execution-1
# Contoh masukan eksekusi sub-workflow pertama
{
"BatchInput": {
"InputKey": "value"
},
"Items": [
{
"InputKey": "value",
"ConstructedKey": 1
},
{
"InputKey": "value",
"ConstructedKey": 2
},
{
"InputKey": "value",
"ConstructedKey": 3
}
]
}
# execution-2
# Contoh masukan eksekusi sub-workflow kedua
{
"BatchInput": {
"InputKey": "value"
},
"Items": [
{
"InputKey": "value",
"ConstructedKey": 4
},
{
"InputKey": "value",
"ConstructedKey": 5
}
]
}ResultWriter
ResultWriter menulis informasi tentang eksekusi sub-workflow ke Bucket OSS yang ditentukan. Tabel berikut menjelaskan bidang dalam ResultWriter.
Bidang | Tipe | Diperlukan | Deskripsi | Contoh |
Parameters | string | Ya | Parameter permintaan. | Lihat bagian Parameters dari topik ini. |
Parameters
Parameter permintaan. Tabel berikut menjelaskan bidang dalam Parameters.
Bidang | Tipe | Diperlukan | Deskripsi | Contoh |
Bucket | string | Ya | Nama bucket tempat objek berada. | example-bucket |
Prefix | string | Ya | Awalan yang harus terkandung dalam nama bucket yang ingin Anda kembalikan. Jika Anda membiarkan bidang ini kosong, sistem akan mengembalikan semua bucket yang memenuhi kondisi. Bidang ini kosong secara default. | example-prefix |
Cuplikan berikut memberikan contoh cara menggunakan ResultWriter.
Masukan dan keluaran status alur kerja tidak boleh melebihi ukuran yang ditentukan. Untuk status Map yang berisi beberapa item, keluaran mungkin melebihi batas. Dalam hal ini, kami sarankan Anda mengonfigurasi ResultWriter untuk menyimpan keluaran status Map di Bucket OSS.
Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: Map
States:
- Type: Map
Name: Map
ProcessorConfig:
ExecutionMode: Express
ItemsPath: $Input.Items
ItemConstructor:
Key.$: $Item.Key
FailedValue.$: $Input.FailedValue
ToleratedFailurePercentage: 30
Processor:
StartAt: Choice
States:
- Type: Choice
Name: Choice
Branches:
- Condition: $Input.Key > $Input.FailedValue
Next: Fail
Default: Succeed
- Type: Succeed
Name: Succeed
End: true
- Type: Fail
Name: Fail
Code: MockError
End: true
ResultWriter:
Parameters:
Bucket: example-bucket
Prefix: example-prefix/
End: trueCuplikan berikut menunjukkan input yang dieksekusi oleh mesin status:
{
"FailedValue": 4,
"Items": [
{
"Key": 1
},
{
"Key": 2
},
{
"Key": 3
},
{
"Key": 4
},
{
"Key": 5
}
]
}Cuplikan berikut memberikan isi tiga file JSON.
# Cuplikan berikut memberikan isi file manifest.json yang jalur penyimpanannya adalah example-prefix/map-run-name/manifest.json.
{
"DestinationBucket": "example-bucket",
"MapRunName": "map-run-name",
"ResultFiles": {
"FAILED": [
{
"ObjectName": "example-prefix/map-run-name/FAILED_0.json",
"Size": 262
}
],
"SUCCEED": [
{
"ObjectName": "example-prefix/map-run-name/SUCCEED_0.json",
"Size": 1057
}
]
}
}
# Cuplikan berikut memberikan isi file FAILED_0.json yang jalur penyimpanannya adalah example-prefix/map-run-name/FAILED_0.json.
[
{
"ExecutionName": "execution-name-5",
"FlowName": "example",
"Input": "{\"FailedValue\":4,\"Key\":5}",
"Output": "{\"ErrorCode\":\"MockError\"}",
"Status": "Failed",
"StartedTime": "rfc3339-format-time-string",
"StoppedTime": "rfc3339-format-time-string"
}
]
# Cuplikan berikut memberikan isi file SUCCEED_0.json yang jalur penyimpanannya adalah example-prefix/map-run-name/SUCCEED_0.json.
[
{
"ExecutionName": "execution-name-1",
"FlowName": "example",
"Input": "{\"FailedValue\":4,\"Key\":1}",
"Output": "{\"FailedValue\":4,\"Key\":1}",
"Status": "Succeeded",
"StartedTime": "rfc3339-format-time-string",
"StoppedTime": "rfc3339-format-time-string"
},
{
"ExecutionName": "execution-name-2",
"FlowName": "example",
"Input": "{\"FailedValue\":4,\"Key\":2}",
"Output": "{\"FailedValue\":4,\"Key\":2}",
"Status": "Succeeded",
"StartedTime": "rfc3339-format-time-string",
"StoppedTime": "rfc3339-format-time-string"
},
{
"ExecutionName": "execution-name-3",
"FlowName": "example",
"Input": "{\"FailedValue\":4,\"Key\":3}",
"Output": "{\"FailedValue\":4,\"Key\":3}",
"Status": "Succeeded",
"StartedTime": "rfc3339-format-time-string",
"StoppedTime": "rfc3339-format-time-string"
},
{
"ExecutionName": "execution-name-4",
"FlowName": "example",
"Input": "{\"FailedValue\":4,\"Key\":4}",
"Output": "{\"FailedValue\":4,\"Key\":4}",
"Status": "Succeeded",
"StartedTime": "rfc3339-format-time-string",
"StoppedTime": "rfc3339-format-time-string"
}
]MaxItems
MaxItems menentukan jumlah maksimum item yang dapat dieksekusi oleh mesin status Map. Misalnya, sebuah Bucket OSS berisi 10.000 objek. Jika Anda mengatur MaxItems menjadi 1.000, mesin status Map hanya memuat 1.000 objek dari Bucket OSS.
MaxConcurrency
MaxConcurrency menentukan jumlah eksekusi sub-workflow secara bersamaan. Misalnya, jika mesin status Map dikonfigurasi untuk mengeksekusi 10.000 item dan Anda mengatur MaxConcurrency menjadi 100, mesin status Map secara bersamaan mengeksekusi 100 sub-workflow.
ToleratedFailurePercentage
ToleratedFailurePercentage menentukan persentase kegagalan yang dapat ditoleransi dalam suatu operasi. Misalnya, Anda memiliki 10.000 item dan mengatur ToleratedFailurePercentage menjadi 10. Dalam hal ini, mesin status Map dapat mentolerir maksimal 1.000 kegagalan eksekusi item.
ToleratedFailureCount
ToleratedFailureCount menentukan jumlah kegagalan yang dapat ditoleransi dalam suatu operasi. Misalnya, Anda memiliki 10.000 item dan mengatur ToleratedFailureCount menjadi 10. Dalam hal ini, mesin status Map dapat mentolerir maksimal 10 kegagalan eksekusi item.
Contoh
Alur kerja berikut mendefinisikan status Map dalam mode terdistribusi, yang membaca input dari status hulu dan mengekstrak item iterasi menggunakan $Input.Items. Setiap status Map dieksekusi sebagai sub-workflow dalam mode Ekspres.
Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: Map
States:
- Type: Map
Name: Map
ProcessorConfig:
ExecutionMode: Express
ItemsPath: $Input.Items
Processor:
StartAt: Pass
States:
- Type: Pass
Name: Pass
End: true
End: trueCuplikan berikut menunjukkan input yang dieksekusi oleh mesin status:
{
"Items": [
{"key_1":"value_1"},
{"key_2":"value_2"},
{"key_3":"value_3"}
]
}Dalam contoh ini, mesin status Map menghasilkan tiga eksekusi sub-workflow. Cuplikan berikut menunjukkan definisi eksekusi sub-workflow:
Type: StateMachine
Name: Map
SpecVersion: v1
StartAt: Pass
States:
- Type: Pass
Name: Pass
End: trueCuplikan berikut menunjukkan contoh masukan eksekusi sub-workflow.
# execution-1
# Contoh masukan eksekusi sub-workflow yang sesuai dengan status Map pertama
{"key_1":"value_1"}
# execution-2
# Contoh masukan eksekusi sub-workflow yang sesuai dengan status Map kedua
{"key_2":"value_2"}
# execution-3
# Contoh masukan eksekusi sub-workflow yang sesuai dengan status Map ketiga
{"key_3":"value_3"}Setelah Anda menjalankan cuplikan sebelumnya, keluaran mesin status Map adalah array JSON. Setiap objek dalam array adalah keluaran dari status Map.
{
"Items": [
{
"key_1": "value_1"
},
{
"key_2": "value_2"
},
{
"key_3": "value_3"
}
]
}