全部产品
Search
文档中心

CloudFlow:Mode terdistribusi

更新时间:Jun 29, 2025

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

  • Menggunakan $Item untuk merujuk input asli.

  • Membuat item secara terpisah.

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

Penting

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

Processor

Prosesor Map. Tabel berikut menjelaskan bidang dalam Processor.

Bidang

Tipe

Diperlukan

Deskripsi

Contoh

States

array

Ya

Array status yang terkandung dalam alur.

Processor:
   StartAt: Pass1
   States:
     - Type: Pass
       Name: Pass1
       End: true

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.csv yang disimpan di Bucket OSS bernama example-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: true

    Cuplikan berikut menunjukkan isi file example-object.csv:

    ColA,ColB,ColC
    col_a_1,col_b_1,col_c_1

    Cuplikan 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

    Penting

    File 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.json yang disimpan di Bucket OSS bernama example-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: true

    Cuplikan 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 bernama example-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: true

    Cuplikan berikut menunjukkan bahwa objek example-prefix/object_1 disimpan di bucket example-bucket:

    example-bucket
       ├── example-prefix/object_1

    Cuplikan 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.json yang disimpan di Bucket OSS bernama example-bucket. Jalur ke file inventaris adalah inventory/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: true

    Cuplikan 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: true

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

Penting
  • 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: true

Cuplikan 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: true

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

Catatan

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: true

Cuplikan 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: true

Cuplikan 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: true

Cuplikan 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"
        }
    ]
}