All Products
Search
Document Center

Object Storage Service:Proses miliaran objek menggunakan Batch Operations

Last Updated:Aug 21, 2026

Fitur Batch Operations memungkinkan Anda memproses hingga 10 miliar objek dalam satu pekerjaan, termasuk operasi seperti manajemen tag, modifikasi ACL, dan pemulihan data—tanpa perlu menulis kode.

Lingkup

Fitur Batch Operations tersedia sepenuhnya di wilayah Singapura dan Jerman (Frankfurt). Untuk menggunakan fitur ini di wilayah Tiongkok (Hangzhou), Tiongkok (Shanghai), Tiongkok (Shenzhen), Tiongkok (Guangzhou), Tiongkok (Qingdao), Tiongkok (Beijing), Tiongkok (Zhangjiakou), Tiongkok (Hohhot), Tiongkok (Ulanqab), Tiongkok (Chengdu), Tiongkok (Hong Kong), atau Indonesia (Jakarta), hubungi Technical Support untuk mengajukan akses.

Ikhtisar operasi

  1. Buat peran RAM: Berikan izin kepada layanan OSS untuk membaca file manifest, menjalankan operasi batch, dan menghasilkan laporan.

  2. Siapkan manifest input: Tentukan objek yang akan diproses menggunakan daftar bucket (manifest.json), awalan, atau file manifest CSV (manifest.csv).

  3. Buat pekerjaan: Konfigurasikan operasi spesifik—seperti pemberian tag, pengaturan izin, atau pemulihan objek—lalu kirimkan pekerjaan tersebut.

  4. Kelola dan rawat pekerjaan: Pantau status pekerjaan, konfirmasi pekerjaan tertunda, lihat laporan eksekusi, serta sesuaikan prioritas atau batalkan pekerjaan sesuai kebutuhan.

Langkah 1: Buat peran RAM

  1. Buka Konsol RAM untuk membuat peran. Pilih Alibaba Cloud Service sebagai jenis entitas tepercaya dan Object Storage Service sebagai layanan tepercaya.

  2. Buat dan lampirkan kebijakan kustom ke peran tersebut. Berikut adalah konten kebijakannya. Ganti your-bucket dengan nama bucket aktual Anda.

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "oss:GetBucketInfo",
            "oss:ListObjects",
            "oss:GetObject",
            "oss:GetObjectTagging",
            "oss:PutObjectTagging",
            "oss:DeleteObjectTagging",
            "oss:PutObjectAcl",
            "oss:RestoreObject",
            "oss:PutObject"
          ],
          "Resource": [
            "acs:oss:*:*:your-bucket",
            "acs:oss:*:*:your-bucket/*"
          ]
        }
      ]
    }

    Deskripsi Izin

    • Izin Wajib

      • oss:GetBucketInfo: Mengambil informasi bucket.

    • Izin Terkait Manifest Input

      • oss:ListObjects: Diperlukan untuk menghasilkan daftar objek berdasarkan awalan.

      • oss:GetObject: Diperlukan untuk mengakses file daftar bucket atau file manifest CSV.

    • Izin Terkait Operasi Batch

      • oss:GetObjectTagging: Diperlukan untuk membaca tag yang ada dalam penggantian tag batch.

      • oss:PutObjectTagging: Diperlukan untuk menambahkan atau mengganti tag secara batch.

      • oss:DeleteObjectTagging: Diperlukan untuk menghapus tag secara batch.

      • oss:PutObjectAcl: Diperlukan untuk memodifikasi izin secara batch.

      • oss:RestoreObject: Diperlukan untuk memulihkan objek terarsip secara batch.

    • Izin untuk Output Laporan

      • oss:PutObject: Diperlukan untuk mengunggah laporan operasi batch.

  3. Catat ARN peran tersebut, misalnya acs:ram::<your-account-uid>:role/BatchRole. Anda akan menggunakannya pada langkah-langkah berikutnya.

Langkah 2: Siapkan manifest input

Operasi batch mengharuskan Anda menentukan objek yang akan diproses. Pilih salah satu dari tiga metode berikut sesuai dengan skenario Anda:

  • File daftar bucket: Cocok untuk operasi batch berskala besar yang dijalankan secara rutin.

  • Awalan: Memproses semua objek dalam folder tertentu.

  • File manifest CSV: File CSV yang mencantumkan objek yang akan diproses.

File daftar bucket

Gunakan file manifest yang dihasilkan secara otomatis oleh Daftar Bucket.

<Manifest>
    <Location>
        <ETag>495B279A99C2BA72A66CA1E23B5FEA13</ETag>
        <Bucket>my-bucket</Bucket>
        <Object>inventory-reports/my-bucket/daily-inventory/2025-10-29T12-49Z/manifest.json</Object>
    </Location>
    <Spec>
        <Format>OSS_InventoryReport_CSV_20250611</Format>
    </Spec>
</Manifest>

Deskripsi konfigurasi

  • ETag: Nilai ETag dari file manifest.json.

  • Format: OSS_InventoryReport_CSV_20250611

Awalan

Menghasilkan daftar objek berdasarkan awalan yang ditentukan.

<KeyPrefixManifestGenerator>
    <SourceBucket>my-bucket</SourceBucket>
    <Prefix>documents/2024/</Prefix>
</KeyPrefixManifestGenerator>

File manifest CSV

Mencantumkan objek tertentu menggunakan file CSV. File manifest CSV harus diunggah ke OSS dan berada di wilayah yang sama dengan pekerjaan batch.

<Manifest>
    <Location>
        <Bucket>my-bucket</Bucket>
        <Object>manifest.csv</Object>
        <ETag>1466CA50719515AAE6F92101D83B6A20</ETag>
    </Location>
    <Spec>
        <Format>OSS_BatchOperations_CSV_20250611</Format>
        <Fields>Bucket,Key</Fields>
    </Spec>
</Manifest>

Deskripsi konfigurasi

  • ETag: Nilai ETag dari manifest.csv.

  • Fields: Kolom dalam file CSV.

    • Pengendalian versi tidak diaktifkan: Bucket,Key

    • Pengendalian versi diaktifkan: Bucket,Key,VersionId

  • Format: OSS_BatchOperations_CSV_20250611

Persyaratan format file CSV

  • Pengodean file: UTF-8.

  • Pemisah kolom: Koma (,).

  • Encoding Object Key: Di-encode dalam bentuk URL (misalnya, documents%2Freport1.pdf).

  • Komentar: File CSV tidak boleh berisi baris komentar.

Contoh file CSV

  • Pengendalian versi tidak diaktifkan

    my-bucket,documents%2Freport1.pdf
    my-bucket,documents%2Freport2.pdf
    my-bucket,images%2Fphoto1.jpg
  • Pengendalian versi diaktifkan

    my-bucket,important%2Fdata.json,3/L4kqtJlcpXroDTDmJ+rmSpXd3dIbrHY+MTRCxf3vjVBH40Nr8X8gdRQBpUMLUo
    my-bucket,config%2Fsettings.xml,null

Langkah 3: Buat pekerjaan

Ganti tag secara batch

Operasi penggantian menghapus semua tag yang ada pada objek. Setiap objek dapat memiliki hingga 10 tag, dengan panjang total semua kunci dan nilai tag tidak boleh melebihi 1 KB. Kunci tag bersifat case-sensitive dan harus unik.

Peringatan

Jika aturan siklus hidup bergantung pada operasi ini, tinjau laporan pekerjaan akhir. Status akhir pekerjaan dapat berupa Running, Complete, Failed, Paused, atau Cancelled. Beberapa objek mungkin berhasil diproses sementara yang lain gagal. Periksa laporan untuk memastikan jumlah tugas yang berhasil dan gagal sesuai ekspektasi Anda.

ossutil 2.0

ossutil api invoke-operation --op-name create-job --method POST --parameters batchJob --body file:///path/to/config.xml --endpoint oss-cn-hangzhou.aliyuncs.com

File daftar bucket

<CreateJobRequest>
    <ConfirmationRequired>true</ConfirmationRequired>
    <Operation>
        <PutObjectTagging>
            <TagSet>
                <Tag><Key>Environment</Key><Value>Production</Value></Tag>
                <Tag><Key>Team</Key><Value>DataOps</Value></Tag>
            </TagSet>
        </PutObjectTagging>
    </Operation>
    <Report>
        <Bucket>my-bucket</Bucket>
        <Enabled>true</Enabled>
        <Prefix>batch-reports/</Prefix>
        <ReportScope>AllTasks</ReportScope>
    </Report>
    <ClientRequestToken>put-tag-inventory-job-001</ClientRequestToken>
    <Manifest>
        <Location>
            <ETag>495B279A99C2BA72A66CA1E23B5FEA13</ETag>
            <Bucket>my-bucket</Bucket>
            <Object>inventory-reports/my-bucket/daily-inventory/2025-10-29T12-49Z/manifest.json</Object>
        </Location>
        <Spec>
            <Format>OSS_InventoryReport_CSV_20250611</Format>
        </Spec>
    </Manifest>
    <Description>Ganti tag secara batch menggunakan manifest Inventory</Description>
    <Priority>10</Priority>
    <RoleArn>acs:ram::<your-account-uid>:role/BatchRole</RoleArn>
</CreateJobRequest>

Awalan

<CreateJobRequest>
    <ConfirmationRequired>true</ConfirmationRequired>
    <Operation>
        <PutObjectTagging>
            <TagSet>
                <Tag><Key>Environment</Key><Value>Production</Value></Tag>
                <Tag><Key>Team</Key><Value>DataOps</Value></Tag>
            </TagSet>
        </PutObjectTagging>
    </Operation>
    <Report>
        <Bucket>my-bucket</Bucket>
        <Enabled>true</Enabled>
        <Prefix>batch-reports/</Prefix>
        <ReportScope>AllTasks</ReportScope>
    </Report>
    <ClientRequestToken>put-tag-job-001</ClientRequestToken>
    <KeyPrefixManifestGenerator>
        <SourceBucket>my-bucket</SourceBucket>
        <Prefix>documents/2024/</Prefix>
    </KeyPrefixManifestGenerator>
    <Description>Ganti tag secara batch untuk dokumen</Description>
    <Priority>10</Priority>
    <RoleArn>acs:ram::<your-account-uid>:role/BatchRole</RoleArn>
</CreateJobRequest>

File manifest CSV

<CreateJobRequest>
    <ConfirmationRequired>true</ConfirmationRequired>
    <Operation>
        <PutObjectTagging>
            <TagSet>
                <Tag><Key>Environment</Key><Value>Production</Value></Tag>
                <Tag><Key>Team</Key><Value>DataOps</Value></Tag>
            </TagSet>
        </PutObjectTagging>
    </Operation>
    <Report>
        <Bucket>my-bucket</Bucket>
        <Enabled>true</Enabled>
        <Prefix>batch-reports/</Prefix>
        <ReportScope>AllTasks</ReportScope>
    </Report>
    <ClientRequestToken>put-tag-job-001</ClientRequestToken>
    <Manifest>
        <Location>
            <ETag>1466CA50719515AAE6F92101D83B6A20</ETag>
            <Bucket>my-bucket</Bucket>
            <Object>manifest.csv</Object>
        </Location>
        <Spec>
            <Fields>Bucket,Key</Fields>
            <Format>OSS_BatchOperations_CSV_20250611</Format>
        </Spec>
    </Manifest>
    <Description>Ganti tag secara batch untuk objek tertentu</Description>
    <Priority>10</Priority>
    <RoleArn>acs:ram::<your-account-uid>:role/BatchRole</RoleArn>
</CreateJobRequest>

Contoh respons

<?xml version="1.0" encoding="UTF-8"?>
<CreateJobResult>
  <JobId>ODRiZWQ5Njc5ZTE0NDE5NTlmNjJmZDlkMTk2ODI2NDU=</JobId>
</CreateJobResult>

Setelah pekerjaan dibuat, statusnya menjadi Suspended. Anda dapat melihat status pekerjaan untuk memastikan konfigurasi sudah benar, lalu secara manual mengonfirmasi pekerjaan yang tertunda.

API

Panggil API CreateJob untuk membuat pekerjaan batch. Dalam konfigurasi XML, tentukan jenis operasi <PutObjectTagging> pada node <Operation>. Definisikan set tag baru dalam <TagSet> untuk sepenuhnya menggantikan tag yang ada pada objek.

Tambahkan tag secara batch

Operasi penambahan tag batch menambahkan tag baru ke tag yang sudah ada pada objek, sehingga mempertahankan semua tag asli. Operasi ini berguna untuk menambahkan tag tambahan. Jika kunci tag baru sama dengan kunci tag yang sudah ada, nilai tag baru akan menggantikan nilai yang lama. Karena operasi ini bukan operasi atomik, terdapat risiko kehilangan tag dalam skenario konkurensi tinggi. Hindari menjalankan operasi ini secara bersamaan dengan operasi tag lain untuk memastikan konsistensi data.

Peringatan

Jika aturan siklus hidup bergantung pada operasi ini, tinjau laporan pekerjaan akhir. Status akhir pekerjaan dapat berupa Running, Complete, Failed, Paused, atau Cancelled. Beberapa objek mungkin berhasil diproses sementara yang lain gagal. Periksa laporan untuk memastikan jumlah tugas yang berhasil dan gagal sesuai ekspektasi Anda.

ossutil 2.0

ossutil api invoke-operation --op-name create-job --method POST --parameters batchJob --body file:///path/to/config.xml --endpoint oss-cn-hangzhou.aliyuncs.com

File daftar bucket

<CreateJobRequest>
    <ConfirmationRequired>true</ConfirmationRequired>
    <Operation>
        <AddObjectTagging>
            <TagSet>
                <Tag><Key>Department</Key><Value>Engineering</Value></Tag>
                <Tag><Key>Project</Key><Value>BatchOps</Value></Tag>
            </TagSet>
        </AddObjectTagging>
    </Operation>
    <Report>
        <Bucket>my-bucket</Bucket>
        <Enabled>true</Enabled>
        <Prefix>batch-reports/</Prefix>
        <ReportScope>AllTasks</ReportScope>
    </Report>
    <ClientRequestToken>add-tag-inventory-job-001</ClientRequestToken>
    <Manifest>
        <Location>
            <ETag>495B279A99C2BA72A66CA1E23B5FEA13</ETag>
            <Bucket>my-bucket</Bucket>
            <Object>inventory-reports/my-bucket/daily-inventory/2025-10-29T12-49Z/manifest.json</Object>
        </Location>
        <Spec>
            <Format>OSS_InventoryReport_CSV_20250611</Format>
        </Spec>
    </Manifest>
    <Description>Tambahkan tag secara batch menggunakan manifest Inventory</Description>
    <Priority>10</Priority>
    <RoleArn>acs:ram::<your-account-uid>:role/BatchRole</RoleArn>
</CreateJobRequest>

Awalan

<CreateJobRequest>
    <ConfirmationRequired>true</ConfirmationRequired>
    <Operation>
        <AddObjectTagging>
            <TagSet>
                <Tag><Key>Department</Key><Value>Engineering</Value></Tag>
                <Tag><Key>Project</Key><Value>BatchOps</Value></Tag>
            </TagSet>
        </AddObjectTagging>
    </Operation>
    <Report>
        <Bucket>my-bucket</Bucket>
        <Enabled>true</Enabled>
        <Prefix>batch-reports/</Prefix>
        <ReportScope>AllTasks</ReportScope>
    </Report>
    <ClientRequestToken>add-tag-job-001</ClientRequestToken>
    <KeyPrefixManifestGenerator>
        <SourceBucket>my-bucket</SourceBucket>
        <Prefix>documents/2024/</Prefix>
    </KeyPrefixManifestGenerator>
    <Description>Tambahkan tag secara batch ke dokumen</Description>
    <Priority>10</Priority>
    <RoleArn>acs:ram::<your-account-uid>:role/BatchRole</RoleArn>
</CreateJobRequest>

File manifest CSV

<CreateJobRequest>
    <ConfirmationRequired>true</ConfirmationRequired>
    <Operation>
        <AddObjectTagging>
            <TagSet>
                <Tag><Key>Department</Key><Value>Engineering</Value></Tag>
                <Tag><Key>Project</Key><Value>BatchOps</Value></Tag>
            </TagSet>
        </AddObjectTagging>
    </Operation>
    <Report>
        <Bucket>my-bucket</Bucket>
        <Enabled>true</Enabled>
        <Prefix>batch-reports/</Prefix>
        <ReportScope>AllTasks</ReportScope>
    </Report>
    <ClientRequestToken>add-tag-job-001</ClientRequestToken>
    <Manifest>
        <Location>
            <ETag>1466CA50719515AAE6F92101D83B6A20</ETag>
            <Bucket>my-bucket</Bucket>
            <Object>manifest.csv</Object>
        </Location>
        <Spec>
            <Fields>Bucket,Key</Fields>
            <Format>OSS_BatchOperations_CSV_20250611</Format>
        </Spec>
    </Manifest>
    <Description>Tambahkan tag secara batch ke objek tertentu</Description>
    <Priority>10</Priority>
    <RoleArn>acs:ram::<your-account-uid>:role/BatchRole</RoleArn>
</CreateJobRequest>

Contoh respons

<?xml version="1.0" encoding="UTF-8"?>
<CreateJobResult>
  <JobId>Nzg5ZjE3ZTU5OGMxNDZjZDk0YjJiODMzZDZiZjA0ZmU=</JobId>
</CreateJobResult>

Setelah pekerjaan dibuat, statusnya menjadi Suspended. Anda dapat melihat status pekerjaan untuk memastikan konfigurasi sudah benar, lalu secara manual mengonfirmasi pekerjaan yang tertunda.

API

Panggil API CreateJob untuk membuat pekerjaan batch. Dalam konfigurasi XML, tentukan jenis operasi <AddObjectTagging> pada node <Operation>. Definisikan tag baru dalam <TagSet>. Sistem akan menambahkan tag baru sekaligus mempertahankan tag yang sudah ada.

Hapus tag secara batch

Operasi penghapusan tag batch menghapus semua tag dari objek yang ditentukan. Setelah operasi ini, objek tidak akan memiliki tag lagi. Operasi ini berguna untuk membersihkan tag.

Peringatan
  • Operasi ini tidak dapat dikembalikan. Setelah dieksekusi, tag yang dihapus tidak dapat dipulihkan. Uji operasi ini di lingkungan staging sebelum menjalankannya di lingkungan produksi untuk memastikan tidak memengaruhi logika bisnis Anda.

  • Jika aturan siklus hidup bergantung pada operasi ini, tinjau laporan pekerjaan akhir. Status akhir pekerjaan dapat berupa Running, Complete, Failed, Paused, atau Cancelled. Beberapa objek mungkin berhasil diproses sementara yang lain gagal. Periksa laporan untuk memastikan jumlah tugas yang berhasil dan gagal sesuai ekspektasi Anda.

ossutil 2.0

ossutil api invoke-operation --op-name create-job --method POST --parameters batchJob --body file:///path/to/config.xml --endpoint oss-cn-hangzhou.aliyuncs.com

File daftar bucket

<CreateJobRequest>
    <ConfirmationRequired>true</ConfirmationRequired>
    <Operation>
        <DeleteObjectTagging />
    </Operation>
    <Report>
        <Bucket>my-bucket</Bucket>
        <Enabled>true</Enabled>
        <Prefix>batch-reports/</Prefix>
        <ReportScope>AllTasks</ReportScope>
    </Report>
    <ClientRequestToken>delete-tag-inventory-job-001</ClientRequestToken>
    <Manifest>
        <Location>
            <ETag>495B279A99C2BA72A66CA1E23B5FEA13</ETag>
            <Bucket>my-bucket</Bucket>
            <Object>inventory-reports/my-bucket/daily-inventory/2025-10-29T12-49Z/manifest.json</Object>
        </Location>
        <Spec>
            <Format>OSS_InventoryReport_CSV_20250611</Format>
        </Spec>
    </Manifest>
    <Description>Hapus tag secara batch menggunakan manifest Inventory</Description>
    <Priority>10</Priority>
    <RoleArn>acs:ram::<your-account-uid>:role/BatchRole</RoleArn>
</CreateJobRequest>

Awalan

<CreateJobRequest>
    <ConfirmationRequired>true</ConfirmationRequired>
    <Operation>
        <DeleteObjectTagging />
    </Operation>
    <Report>
        <Bucket>my-bucket</Bucket>
        <Enabled>true</Enabled>
        <Prefix>batch-reports/</Prefix>
        <ReportScope>AllTasks</ReportScope>
    </Report>
    <ClientRequestToken>delete-tag-job-001</ClientRequestToken>
    <KeyPrefixManifestGenerator>
        <SourceBucket>my-bucket</SourceBucket>
        <Prefix>documents/2024/</Prefix>
    </KeyPrefixManifestGenerator>
    <Description>Hapus tag secara batch untuk dokumen</Description>
    <Priority>10</Priority>
    <RoleArn>acs:ram::<your-account-uid>:role/BatchRole</RoleArn>
</CreateJobRequest>

File manifest CSV

<CreateJobRequest>
    <ConfirmationRequired>true</ConfirmationRequired>
    <Operation>
        <DeleteObjectTagging />
    </Operation>
    <Report>
        <Bucket>my-bucket</Bucket>
        <Enabled>true</Enabled>
        <Prefix>batch-reports/</Prefix>
        <ReportScope>AllTasks</ReportScope>
    </Report>
    <ClientRequestToken>delete-tag-job-001</ClientRequestToken>
    <Manifest>
        <Location>
            <ETag>1466CA50719515AAE6F92101D83B6A20</ETag>
            <Bucket>my-bucket</Bucket>
            <Object>manifest.csv</Object>
        </Location>
        <Spec>
            <Fields>Bucket,Key</Fields>
            <Format>OSS_BatchOperations_CSV_20250611</Format>
        </Spec>
    </Manifest>
    <Description>Hapus tag secara batch untuk objek tertentu</Description>
    <Priority>10</Priority>
    <RoleArn>acs:ram::<your-account-uid>:role/BatchRole</RoleArn>
</CreateJobRequest>

Contoh respons

<?xml version="1.0" encoding="UTF-8"?>
<CreateJobResult>
  <JobId>NTVlYmQ4ZmQyOTM0NDJmY2E2NmNjYTUwNjU1ZGRkMGM=</JobId>
</CreateJobResult>

Setelah pekerjaan dibuat, statusnya menjadi Suspended. Anda dapat melihat status pekerjaan untuk memastikan konfigurasi sudah benar, lalu secara manual mengonfirmasi pekerjaan yang tertunda.

API

Panggil API CreateJob untuk membuat pekerjaan batch. Dalam konfigurasi XML, tentukan jenis operasi <DeleteObjectTagging/> (tanpa parameter tambahan) pada node <Operation>. Sistem akan menghapus semua tag dari objek yang ditentukan.

Modifikasi izin secara batch

Modifikasi izin batch mendukung empat jenis daftar kontrol akses (ACL): private (hanya pemilik yang dapat membaca dan menulis), public-read (siapa saja dapat membaca, tetapi hanya pemilik yang dapat menulis), public-read-write (siapa saja dapat membaca dan menulis), dan default (mewarisi izin bucket). Perubahan izin berlaku segera dan langsung memengaruhi akses objek. Pilih jenis izin yang sesuai dengan kebutuhan bisnis Anda.

ossutil 2.0

ossutil api invoke-operation --op-name create-job --method POST --parameters batchJob --body file:///path/to/config.xml --endpoint oss-cn-hangzhou.aliyuncs.com

File daftar bucket

<CreateJobRequest>
    <ConfirmationRequired>true</ConfirmationRequired>
    <Operation>
        <PutObjectAcl>
            <ObjectAcl>private</ObjectAcl>
        </PutObjectAcl>
    </Operation>
    <Report>
        <Bucket>my-bucket</Bucket>
        <Enabled>true</Enabled>
        <Prefix>batch-reports/</Prefix>
        <ReportScope>AllTasks</ReportScope>
    </Report>
    <ClientRequestToken>acl-inventory-job-001</ClientRequestToken>
    <Manifest>
        <Location>
            <ETag>495B279A99C2BA72A66CA1E23B5FEA13</ETag>
            <Bucket>my-bucket</Bucket>
            <Object>inventory-reports/my-bucket/daily-inventory/2025-10-29T12-49Z/manifest.json</Object>
        </Location>
        <Spec>
            <Format>OSS_InventoryReport_CSV_20250611</Format>
        </Spec>
    </Manifest>
    <Description>Ubah ACL secara batch menggunakan manifest Inventory</Description>
    <Priority>10</Priority>
    <RoleArn>acs:ram::<your-account-uid>:role/BatchRole</RoleArn>
</CreateJobRequest>

Awalan

<CreateJobRequest>
    <ConfirmationRequired>true</ConfirmationRequired>
    <Operation>
        <PutObjectAcl>
            <ObjectAcl>private</ObjectAcl>
        </PutObjectAcl>
    </Operation>
    <Report>
        <Bucket>my-bucket</Bucket>
        <Enabled>true</Enabled>
        <Prefix>batch-reports/</Prefix>
        <ReportScope>AllTasks</ReportScope>
    </Report>
    <ClientRequestToken>acl-job-001</ClientRequestToken>
    <KeyPrefixManifestGenerator>
        <SourceBucket>my-bucket</SourceBucket>
        <Prefix>documents/2024/</Prefix>
    </KeyPrefixManifestGenerator>
    <Description>Ubah ACL secara batch ke private untuk dokumen</Description>
    <Priority>10</Priority>
    <RoleArn>acs:ram::<your-account-uid>:role/BatchRole</RoleArn>
</CreateJobRequest>

File manifest CSV

<CreateJobRequest>
    <ConfirmationRequired>true</ConfirmationRequired>
    <Operation>
        <PutObjectAcl>
            <ObjectAcl>private</ObjectAcl>
        </PutObjectAcl>
    </Operation>
    <Report>
        <Bucket>my-bucket</Bucket>
        <Enabled>true</Enabled>
        <Prefix>batch-reports/</Prefix>
        <ReportScope>AllTasks</ReportScope>
    </Report>
    <ClientRequestToken>acl-job-001</ClientRequestToken>
    <Manifest>
        <Location>
            <ETag>1466CA50719515AAE6F92101D83B6A20</ETag>
            <Bucket>my-bucket</Bucket>
            <Object>manifest.csv</Object>
        </Location>
        <Spec>
            <Fields>Bucket,Key</Fields>
            <Format>OSS_BatchOperations_CSV_20250611</Format>
        </Spec>
    </Manifest>
    <Description>Ubah ACL secara batch ke private untuk objek tertentu</Description>
    <Priority>10</Priority>
    <RoleArn>acs:ram::<your-account-uid>:role/BatchRole</RoleArn>
</CreateJobRequest>

Contoh respons

<?xml version="1.0" encoding="UTF-8"?>
<CreateJobResult>
  <JobId>YWNsR29iMTIzNDU2Nzg5MA==</JobId>
</CreateJobResult>

Setelah pekerjaan dibuat, statusnya menjadi Suspended. Lihat status pekerjaan untuk memastikan konfigurasi sudah benar, lalu secara manual mengonfirmasi pekerjaan yang tertunda.

API

Panggil API CreateJob untuk membuat pekerjaan batch. Dalam konfigurasi XML, tentukan jenis operasi <PutObjectAcl> pada node <Operation>, lalu atur izin target (private/public-read/public-read-write/default) menggunakan parameter <ObjectAcl>.

Pemulihan data secara batch

Operasi pemulihan batch mendukung objek dalam kelas penyimpanan Archive, ColdArchive, dan DeepColdArchive. Pemulihan objek Archive biasanya selesai dalam waktu satu jam, dan objek yang dipulihkan tetap dapat diakses selama 1 hingga 7 hari. Kelas penyimpanan ColdArchive mendukung mode Standard (2–5 jam) dan mode Bulk (5–12 jam). Kelas penyimpanan DeepColdArchive hanya mendukung mode Standard, yang memerlukan waktu hingga 48 jam untuk diselesaikan. Anda dapat mengatur durasi akses objek yang dipulihkan antara 1 hingga 365 hari.

Penting

Jika kelas penyimpanan objek tidak sesuai dengan mode pemulihan atau durasi akses yang ditentukan, operasi untuk objek tersebut akan gagal.

ossutil 2.0

ossutil api invoke-operation --op-name create-job --method POST --parameters batchJob --body file:///path/to/config.xml --endpoint oss-cn-hangzhou.aliyuncs.com

File daftar bucket

<CreateJobRequest>
    <ConfirmationRequired>true</ConfirmationRequired>
    <Operation>
        <RestoreObject>
            <Days>7</Days>
            <Tier>Standard</Tier>
        </RestoreObject>
    </Operation>
    <Report>
        <Bucket>my-bucket</Bucket>
        <Enabled>true</Enabled>
        <Prefix>batch-reports/</Prefix>
        <ReportScope>AllTasks</ReportScope>
    </Report>
    <ClientRequestToken>restore-inventory-job-001</ClientRequestToken>
    <Manifest>
        <Location>
            <ETag>495B279A99C2BA72A66CA1E23B5FEA13</ETag>
            <Bucket>my-bucket</Bucket>
            <Object>inventory-reports/my-bucket/daily-inventory/2025-10-29T12-49Z/manifest.json</Object>
        </Location>
        <Spec>
            <Format>OSS_InventoryReport_CSV_20250611</Format>
        </Spec>
    </Manifest>
    <Description>Pemulihan batch menggunakan manifest Inventory selama 7 hari</Description>
    <Priority>10</Priority>
    <RoleArn>acs:ram::<your-account-uid>:role/BatchRole</RoleArn>
</CreateJobRequest>

Awalan

<CreateJobRequest>
    <ConfirmationRequired>true</ConfirmationRequired>
    <Operation>
        <RestoreObject>
            <Days>7</Days>
            <Tier>Standard</Tier>
        </RestoreObject>
    </Operation>
    <Report>
        <Bucket>my-bucket</Bucket>
        <Enabled>true</Enabled>
        <Prefix>batch-reports/</Prefix>
        <ReportScope>AllTasks</ReportScope>
    </Report>
    <ClientRequestToken>restore-job-001</ClientRequestToken>
    <KeyPrefixManifestGenerator>
        <SourceBucket>my-bucket</SourceBucket>
        <Prefix>archive/2024/</Prefix>
    </KeyPrefixManifestGenerator>
    <Description>Pemulihan batch objek arsip selama 7 hari</Description>
    <Priority>10</Priority>
    <RoleArn>acs:ram::<your-account-uid>:role/BatchRole</RoleArn>
</CreateJobRequest>

File manifest CSV

<CreateJobRequest>
    <ConfirmationRequired>true</ConfirmationRequired>
    <Operation>
        <RestoreObject>
            <Days>7</Days>
            <Tier>Standard</Tier>
        </RestoreObject>
    </Operation>
    <Report>
        <Bucket>my-bucket</Bucket>
        <Enabled>true</Enabled>
        <Prefix>batch-reports/</Prefix>
        <ReportScope>AllTasks</ReportScope>
    </Report>
    <ClientRequestToken>restore-job-001</ClientRequestToken>
    <Manifest>
        <Location>
            <ETag>1466CA50719515AAE6F92101D83B6A20</ETag>
            <Bucket>my-bucket</Bucket>
            <Object>manifest.csv</Object>
        </Location>
        <Spec>
            <Fields>Bucket,Key</Fields>
            <Format>OSS_BatchOperations_CSV_20250611</Format>
        </Spec>
    </Manifest>
    <Description>Pemulihan batch objek arsip tertentu selama 7 hari</Description>
    <Priority>10</Priority>
    <RoleArn>acs:ram::<your-account-uid>:role/BatchRole</RoleArn>
</CreateJobRequest>

Contoh respons

<?xml version="1.0" encoding="UTF-8"?>
<CreateJobResult>
  <JobId>cmVzdG9yZUpvYjEyMzQ1Njc4OTA=</JobId>
</CreateJobResult>

Setelah pekerjaan dibuat, statusnya diatur menjadi Suspended. Anda dapat melihat status pekerjaan untuk memastikan konfigurasi sudah benar, lalu secara manual mengonfirmasi pekerjaan untuk dieksekusi.

API

Panggil API CreateJob untuk membuat pekerjaan batch. Dalam konfigurasi XML, tentukan operasi <RestoreObject> pada node <Operation>. Atur jumlah hari objek yang dipulihkan dapat diakses (1 hingga 365) menggunakan parameter <Days>, serta mode pemulihan (Standard atau Bulk) menggunakan parameter <Tier>.

Langkah 4: Manajemen dan O&M pekerjaan

Lihat status pekerjaan

Setelah membuat pekerjaan, Anda dapat memantau dan mengonfirmasi statusnya dengan mengkueri detail pekerjaan tersebut. Detail pekerjaan memberikan gambaran lengkap mengenai statusnya, termasuk progres eksekusi dan parameter konfigurasi.

Penting

Status pekerjaan Complete tidak menjamin bahwa semua objek berhasil diproses. Anda harus memeriksa laporan detail untuk mengonfirmasi hasil akhirnya.

ossutil 2.0

ossutil api invoke-operation --op-name describe-job --method GET --parameters batchJob --parameters batchJobId=<JobId> --endpoint oss-cn-hangzhou.aliyuncs.com

Contoh respons

<?xml version="1.0" encoding="UTF-8"?>
<DescribeJobResult>
  <Job>
    <ConfirmationRequired>true</ConfirmationRequired>
    <CreationTime>1761723644</CreationTime>
    <FailureReasons>
      <JobFailure />
    </FailureReasons>
    <JobId>M2E0ODMyNmJjYmYzNGY0ZThiYjMyMmI1ZDE1YWE0OGE=</JobId>
    <Operation>
      <PutObjectTagging>
        <TagSet>
          <Tag>
            <Key>Environment</Key>
            <Value>Production</Value>
          </Tag>
          <Tag>
            <Key>Team</Key>
            <Value>DataOps</Value>
          </Tag>
        </TagSet>
      </PutObjectTagging>
    </Operation>
    <Report>
      <Enabled>true</Enabled>
      <Bucket>my-bucket</Bucket>
      <Prefix>batch-reports/</Prefix>
      <ReportScope>AllTasks</ReportScope>
    </Report>
    <Manifest>
      <Location>
        <ETag>1466CA50719515AAE6F92101D83B6A20</ETag>
        <Bucket>my-bucket</Bucket>
        <Object>manifest.csv</Object>
      </Location>
      <Spec>
        <Format>OSS_BatchOperations_CSV_20250611</Format>
        <Fields>Bucket,Key</Fields>
      </Spec>
    </Manifest>
    <Description>Tugas uji untuk status Suspended</Description>
    <Priority>10</Priority>
    <RoleArn>acs:ram::<your-account-uid>:role/BatchRole</RoleArn>
    <ProgressSummary>
      <NumberOfTasksFailed>0</NumberOfTasksFailed>
      <NumberOfTasksSucceeded>0</NumberOfTasksSucceeded>
      <TotalNumberOfTasks>3</TotalNumberOfTasks>
      <Timers>
        <ElapsedTimeInActiveSeconds>-1</ElapsedTimeInActiveSeconds>
      </Timers>
    </ProgressSummary>
    <Status>Suspended</Status>
    <TerminationDate>-1</TerminationDate>
  </Job>
</DescribeJobResult>

Deskripsi status:

  • ConfirmationRequired: true – Konfirmasi diperlukan.

  • Status: Suspended – Pekerjaan dijeda dan menunggu konfirmasi pengguna.

  • TotalNumberOfTasks: 3 – Pekerjaan akan memproses 3 objek.

  • NumberOfTasksSucceeded: 0 – Pekerjaan belum dimulai.

  • ElapsedTimeInActiveSeconds: -1 – Waktu eksekusi bernilai -1 karena pekerjaan belum dimulai.

API

Anda dapat memanggil API DescribeJob untuk mengambil informasi detail tentang pekerjaan tertentu, termasuk status eksekusi, statistik progres, parameter konfigurasi, dan pesan kesalahan.

Konfirmasi pekerjaan yang tertunda

Anda dapat mengubah status pekerjaan dari Suspended menjadi Ready untuk memasukkannya ke antrian eksekusi. Jika pekerjaan tidak dikonfirmasi dalam 14 hari, statusnya akan berubah secara otomatis menjadi Failed.

ossutil 2.0

ossutil api invoke-operation --op-name update-job-status --method POST --parameters batchJobStatus --parameters batchJobId=<JobId> --parameters requestedJobStatus=Ready --endpoint oss-cn-hangzhou.aliyuncs.com

Contoh respons

<?xml version="1.0" encoding="UTF-8"?>
<UpdateJobStatusResult>
  <JobId>NGFhNmFmZDRlNTcxNDE2OGFhY2FjYWQyNDcxYjc3YzM=</JobId>
  <Status>Ready</Status>
</UpdateJobStatusResult>

API

Anda dapat memanggil API UpdateJobStatus untuk mengonfirmasi pekerjaan agar dieksekusi, yang akan mengubah status pekerjaan dari Suspended menjadi Ready dan memasukkannya ke dalam antrian eksekusi.

Daftar pekerjaan secara batch

Anda dapat melihat semua pekerjaan dan menggunakan fitur kueri batch untuk menyaring daftar berdasarkan status serta rentang waktu pembuatan. Anda juga dapat membatasi jumlah hasil dan menggunakan kueri terpaginasi guna mengelola banyak pekerjaan. Secara default, hasil diurutkan berdasarkan waktu pembuatan secara menurun, dengan pekerjaan terbaru ditampilkan lebih dahulu.

ossutil 2.0

ossutil api invoke-operation --op-name list-jobs --method GET --parameters batchJob --parameters maxKeys=100 --endpoint oss-cn-hangzhou.aliyuncs.com

Contoh respons

<?xml version="1.0" encoding="UTF-8"?>
<ListJobsResult>
  <Jobs>
    <Job>
      <JobId>OTE5ZGU1NWMxNjkyNGFkMjhkYTNmOGEzNTU2YmJiOWE=</JobId>
      <Status>Complete</Status>
      <CreationTime>1761666548</CreationTime>
    </Job>
  </Jobs>
</ListJobsResult>

API

Panggil API ListJobs untuk mengkueri daftar pekerjaan batch di akun Anda. API ini memungkinkan Anda menyaring hasil berdasarkan status dan rentang waktu, serta menggunakan kueri terpaginasi guna mempermudah manajemen dan pemantauan pekerjaan.

Sesuaikan prioritas pekerjaan

Nilai prioritas berkisar dari 0 hingga 2.147.483.647, dengan nilai yang lebih tinggi menunjukkan prioritas yang lebih tinggi. Prioritas pekerjaan tidak menjamin urutan eksekusi yang ketat; sebaliknya, OSS berusaha mengalokasikan lebih banyak sumber daya ke pekerjaan dengan prioritas lebih tinggi.

ossutil 2.0

ossutil api invoke-operation --op-name update-job-priority --method POST --parameters batchJobPriority --parameters batchJobId=<JobId> --parameters priority=1000 --endpoint oss-cn-hangzhou.aliyuncs.com

Contoh respons

<?xml version="1.0" encoding="UTF-8"?>
<UpdateJobPriorityResult>
  <JobId>OTE5ZGU1NWMxNjkyNGFkMjhkYTNmOGEzNTU2YmJiOWE=</JobId>
  <Priority>1000</Priority>
</UpdateJobPriorityResult>

API

Anda dapat memanggil API UpdateJobPriority untuk menyesuaikan prioritas eksekusi pekerjaan, yang berguna dalam penjadwalan sumber daya dan pemrosesan pekerjaan mendesak.

Batalkan pekerjaan

Anda dapat menghentikan pekerjaan yang sedang berjalan atau menunggu untuk dijalankan. Operasi yang telah selesai pada objek tidak dapat dibatalkan.

ossutil 2.0

ossutil api invoke-operation --op-name update-job-status --method POST --parameters batchJob --parameters batchJobId=<JobId> --parameters requestedJobStatus=Cancelled --endpoint oss-cn-hangzhou.aliyuncs.com

Contoh respons

<?xml version="1.0" encoding="UTF-8"?>
<UpdateJobStatusResult>
  <JobId>OTE5ZGU1NWMxNjkyNGFkMjhkYTNmOGEzNTU2YmJiOWE=</JobId>
  <Status>Cancelled</Status>
</UpdateJobStatusResult>

API

Anda dapat memanggil API UpdateJobStatus untuk mengubah status pekerjaan menjadi Cancelled, yang akan menghentikan pekerjaan tersebut dan melepaskan sumber dayanya.

Lihat laporan pekerjaan

Setelah pekerjaan selesai, sistem menghasilkan laporan eksekusi terperinci di jalur yang ditentukan. Laporan tersebut mencakup dua file utama: manifes bernama manifest.json dan laporan detail dalam format CSV. Kedua file ini menyediakan status pemrosesan, kode respons HTTP, serta alasan kegagalan untuk setiap objek, yang dapat digunakan untuk troubleshooting dan validasi hasil.

Penting

Terlepas dari status pekerjaan (Running, Complete, Failed, Paused, atau Cancelled), pekerjaan tersebut mungkin tetap berisi objek yang berhasil diproses dan objek yang gagal. Selalu periksa laporan detail untuk mengonfirmasi hasil eksekusi sebenarnya.

Lokasi penyimpanan laporan

File laporan disimpan di jalur yang Anda tentukan dalam node <Report> saat membuat pekerjaan. Format jalurnya adalah:

<Bucket>/<Prefix>/<JobId>/results/

Sebagai contoh, jika Anda menetapkan pengaturan berikut saat membuat pekerjaan:

<Report>
    <Bucket>my-bucket</Bucket>
    <Prefix>batch-reports/</Prefix>
    <ReportScope>AllTasks</ReportScope>
</Report>

maka file laporan akan disimpan di jalur berikut: my-bucket/batch-reports/<JobId>/results/.

Struktur file laporan

Laporan terdiri dari dua bagian:

1. File manifes laporan (manifest.json)

File JSON ini berisi metadata laporan dan lokasi file laporan CSV.

Contoh file manifes untuk pekerjaan yang berhasil:

{
  "Format": "Report_CSV_20250901",
  "ReportCreationDate": "2025-10-31T07:18:56Z",
  "Results": [
    {
      "TaskExecutionStatus": "succeeded",
      "Bucket": "test-bucket",
      "MD5Checksum": "\"424356315f4a82c1b6a4c190dbed15d9\"",
      "Key": "reports/prefix-job-0/job-MTRiZGI1NDFiMTI2NDFiNDg0YWQyYTM2YmY1NzNjNDM=/results/report-0.csv"
    }
  ],
  "ReportSchema": "Bucket,Key,VersionId,HTTPStatus,Error"
}

Contoh file manifes untuk pekerjaan yang gagal:

{
  "Format": "Report_CSV_20250901",
  "ReportCreationDate": "2025-10-31T07:37:56Z",
  "Results": [
    {
      "TaskExecutionStatus": "failed",
      "Bucket": "test-bucket",
      "MD5Checksum": "\"85749f22b5b62b161daf00b4adcf6da7\"",
      "Key": "reports/prefix-job-0/job-M2E4MDkwNGJmNmQzNDgwYmE4ODI1YjdjNDgyNjk5NmM=/results/report-0.csv"
    }
  ],
  "ReportSchema": "Bucket,Key,VersionId,HTTPStatus,Error"
}

Deskripsi field:

  • Format: Versi format laporan. Nilainya tetap Report_CSV_20250901.

  • ReportCreationDate: Waktu pembuatan laporan dalam UTC.

  • TaskExecutionStatus: Status eksekusi keseluruhan pekerjaan. Nilai succeeded menunjukkan semua tugas berhasil, sedangkan nilai failed menunjukkan semua tugas gagal.

  • ReportSchema: Definisi kolom untuk file laporan CSV.

2. File laporan detail CSV

File ini berisi hasil pemrosesan detail untuk setiap objek dan mencakup kolom-kolom berikut:

  • Bucket: Bucket tempat objek berada.

  • Key: Nama objek, yang di-encode dalam bentuk URL.

  • VersionId: ID versi objek. Field ini kosong jika pengendalian versi tidak diaktifkan untuk bucket.

  • HTTPStatus: Kode status respons HTTP. Nilai 200 menunjukkan keberhasilan.

  • Error: Deskripsi kesalahan. Field ini kosong jika tugas berhasil.

Contoh laporan CSV untuk tugas yang berhasil:

test-bucket,batchOperation%2F1761895099%2Fobject-1.txt,,200,
test-bucket,batchOperation%2F1761895099%2Fobject-9.txt,,200,
test-bucket,batchOperation%2F1761895099%2Fobject-4.txt,,200,
test-bucket,batchOperation%2F1761895099%2Fobject-8.txt,,200,
test-bucket,batchOperation%2F1761895099%2Fobject-3.txt,,200,

Contoh laporan CSV untuk tugas yang gagal:

test-bucket,batchOperation%2F1761896253%2Fobject-0.txt,,403,"Error returned by Service. {""EC"":""0003-00000001"",""Error Code"":""AccessDenied"",""Http Status Code"":403,""Message"":""You have no right to access this object."",""Request Endpoint"":""PUT http://test-bucket.oss-cn-hangzhou-internal.aliyuncs.com/batchOperation/1761896253/object-0.txt?tagging"",""Request Id"":""690467520D9F2E3232004FFD"",""Timestamp"":""2025-10-31T07:37:54Z""}"
test-bucket,batchOperation%2F1761896253%2Fobject-7.txt,,403,"Error returned by Service. {""EC"":""0003-00000001"",""Error Code"":""AccessDenied"",""Http Status Code"":403,""Message"":""You have no right to access this object."",""Request Endpoint"":""PUT http://test-bucket.oss-cn-hangzhou-internal.aliyuncs.com/batchOperation/1761896253/object-7.txt?tagging"",""Request Id"":""69046752A016113937EB7029"",""Timestamp"":""2025-10-31T07:37:54Z""}"

Unduh dan analisis laporan

  1. Temukan file laporan: Panggil API DescribeJob untuk mengambil detail pekerjaan. Jalur laporan terdapat di node <Report> pada respons.

  2. Unduh manifest.json: Unduh file manifes dari jalur laporan. Periksa node TaskExecutionStatus dan Results untuk menentukan status eksekusi keseluruhan.

  3. Unduh laporan CSV: Unduh file laporan CSV detail dari jalur yang ditentukan di field Results[ ].Key pada file manifest.json.

  4. Analisis hasil eksekusi:

    • Periksa kolom HTTPStatus: Kode status 2xx menunjukkan keberhasilan, sedangkan kode status 4xx dan 5xx menunjukkan kegagalan.

    • Untuk catatan yang gagal, periksa kolom Error untuk memperoleh kode kesalahan dan detail kesalahan.

    • Hitung jumlah objek yang berhasil dan gagal, lalu bandingkan dengan ProgressSummary yang dikembalikan oleh operasi DescribeJob untuk memverifikasi hasilnya.

Contoh: Unduh laporan menggunakan ossutil

# Unduh file manifes laporan
ossutil cp oss://my-bucket/batch-reports/<JobId>/results/manifest.json ./

# Unduh laporan CSV detail
ossutil cp oss://my-bucket/batch-reports/<JobId>/results/report-0.csv ./

Kode kesalahan umum

Kode status HTTP

Kode kesalahan

Deskripsi

Solusi

403

AccessDenied

Izin tidak mencukupi untuk mengakses objek.

Periksa konfigurasi izin peran IAM

404

NoSuchKey

Objek tidak ada.

Konfirmasi bahwa jalur objek dalam file manifest sudah benar.

400

InvalidArgument

Argumen yang diberikan tidak valid.

Periksa parameter operasi, seperti format tag atau jenis ACL.

409

InvalidObjectState

Status objek tidak memenuhi persyaratan operasi.

Konfirmasi bahwa kelas penyimpanan objek sesuai dengan jenis operasi.

Catatan

  • File laporan menghabiskan ruang penyimpanan dan dikenai biaya penyimpanan. Bersihkan laporan historis secara berkala.

  • File laporan CSV untuk pekerjaan berskala besar dapat berukuran sangat besar. Pertimbangkan lebar pita jaringan Anda sebelum mengunduhnya.

  • Jika Anda mengatur ReportScope ke FailedTasksOnly, laporan hanya mencakup objek yang gagal.

Go-live

Praktik terbaik

Strategi perencanaan pekerjaan

  • Kontrol Skala: Batasi jumlah objek dalam satu pekerjaan menjadi kurang dari 100 juta untuk memastikan eksekusi yang stabil. Bagi pemrosesan data berskala besar menjadi beberapa pekerjaan guna mengurangi titik kegagalan tunggal.

  • Manajemen Prioritas: Tetapkan prioritas pekerjaan yang wajar agar pekerjaan penting tidak terblokir. Perkirakan waktu eksekusi untuk menjadwalkan jendela pemeliharaan secara tepat.

  • Catatan tentang Operasi Konkuren: Saat beberapa pekerjaan beroperasi pada batch objek yang sama secara bersamaan, urutan eksekusi tidak dijamin. Hindari menjalankan operasi konkuren pada objek yang sama.

Langkah optimasi kinerja

  • Optimasi File Manifest: Susun struktur file manifest untuk menghindari pembuatan file tunggal yang terlalu besar, karena hal ini dapat memperlambat penguraian.

  • Pemanfaatan Kuota QPS: Manfaatkan sepenuhnya kuota QPS independen agar panggilan API bisnis tidak terpengaruh. Operasi batch tidak mengonsumsi kuota QPS Anda.

  • Kontrol Konkurensi: Batasi jumlah pekerjaan yang berjalan secara bersamaan menjadi tiga atau kurang untuk menghindari persaingan sumber daya.

  • Hindari Hot Spot: Jika terdapat hot spot—misalnya awalan yang diurutkan secara leksikografis—dalam rentang operasi, kecepatan eksekusi operasi batch dapat terganggu. Dalam kasus parah, hal ini bahkan dapat menyebabkan beberapa operasi file gagal.

Mekanisme penanganan kesalahan

  • Laporan Detail: Aktifkan laporan detail (ReportScope=AllTasks) untuk memperoleh hasil eksekusi lengkap guna troubleshooting.

  • Mekanisme Retry: Dalam kasus jarang terjadi, jika operasi batch mengalami masalah selama eksekusi, sistem akan mencoba ulang beberapa kali. Biaya permintaan API akhir didasarkan pada jumlah total panggilan API yang dilakukan.

  • Ambang Batas Kegagalan: Jika tingkat kegagalan tugas dalam pekerjaan melebihi 20%, seluruh pekerjaan akan segera gagal dan berhenti berjalan.

  • Anomali Konfirmasi Status: Dalam kasus jarang terjadi, beberapa operasi mungkin berhasil tetapi dicatat sebagai gagal dalam laporan eksekusi. Periksa kembali item yang ditandai sebagai gagal.

Poin penting untuk konfirmasi hasil

  • Verifikasi Integritas Eksekusi: Pekerjaan dapat memiliki salah satu status berikut: Running, Complete, Failed, Paused, atau Cancelled. Beberapa objek mungkin berhasil diproses, sementara yang lain gagal. Periksa jumlah tugas yang berhasil dan gagal dalam laporan untuk memastikan hasil sesuai ekspektasi Anda.

  • Saran Penanganan Kegagalan:

    • Status Complete hanya menunjukkan bahwa pekerjaan telah selesai, bukan berarti semua objek berhasil diproses. Anda harus memeriksa laporan eksekusi untuk detailnya.

    • Analisis penyebab tugas yang gagal dan coba ulang. Untuk pekerjaan dengan kegagalan parsial, Anda dapat membuat pekerjaan ulang berdasarkan laporan kegagalan.

    • Untuk pekerjaan dengan status Cancelled, Paused, atau Failed, beberapa objek mungkin telah berhasil diproses. Anda harus memverifikasi hasilnya.

Catatan tentang file manifest

Urutan eksekusi dan konsistensi data

  • Urutan Eksekusi: Operasi batch dilakukan pada item dalam daftar manifest, tetapi urutan eksekusinya tidak dijamin.

  • Pembaruan File: Jika objek diperbarui sebelum tindakan dilakukan, pekerjaan akan beroperasi pada file yang diperbarui. Jangan memodifikasi file saat pekerjaan batch sedang berjalan.

  • Batasan Metode Awalan: Jika Anda menggunakan awalan untuk menyediakan manifest input, operasi batch tidak dapat mendeteksi file yang ditambahkan atau dihapus selama eksekusi. Jangan menambahkan atau menghapus file di bawah awalan tersebut saat pekerjaan batch sedang berjalan.

Persyaratan format file manifest

  • Encoding URL: Kunci objek dalam file manifest CSV harus di-encode dalam bentuk URL. Jika tidak, penguraian dapat gagal.

  • Penanganan Kunci Duplikat: Jika file manifest berisi kunci duplikat, operasi batch akan dilakukan beberapa kali, tetapi urutan operasinya tidak dijamin.

Mekanisme penjadwalan sumber daya

Penjadwalan prioritas

Prioritas pekerjaan didukung, dengan nilai berkisar dari 0 hingga 2.147.483.647.

Kontrol konkurensi

Satu akun dapat menjalankan maksimal enam pekerjaan secara bersamaan. Pekerjaan tambahan ditempatkan dalam antrian tunggu.

Transisi status pekerjaan

Penting
  • Status Complete hanya menunjukkan bahwa proses pekerjaan telah selesai. Ini tidak berarti semua objek berhasil diproses.

  • Untuk pekerjaan dengan status Cancelled, Paused, atau Failed, beberapa objek mungkin telah berhasil diproses.

  • Selalu periksa jumlah tugas yang berhasil dan gagal dalam laporan eksekusi untuk mengonfirmasi hasil aktual.

Status

Deskripsi

Tindakan Pengguna

New

Pekerjaan telah dibuat dan parameter sedang diverifikasi.

Tidak ada

Preparing

Sistem sedang mengurai manifest, memverifikasi parameter, dan menghitung jumlah total file.

Batalkan pekerjaan.

Suspended

Pekerjaan dijeda dan menunggu konfirmasi pengguna. Akan gagal secara otomatis jika tidak dikonfirmasi dalam 14 hari.

Konfirmasi atau batalkan pekerjaan.

Ready

Pekerjaan berada dalam antrian, menunggu penjadwalan sumber daya.

Batalkan pekerjaan.

Active

Pekerjaan sedang berjalan. Status ini mencakup:
• Melakukan operasi pada objek
• Menghasilkan laporan eksekusi

Batalkan pekerjaan.

Pausing

Pekerjaan sedang dijeda karena kendala sumber daya.

Batalkan pekerjaan.

Paused

Pekerjaan dijeda dan akan dilanjutkan saat sumber daya tersedia.

Batalkan pekerjaan.

Complete

Pekerjaan selesai. Catatan: Ini tidak berarti semua objek berhasil diproses.

Lihat laporan.

Cancelling

Pembatalan telah dimulai. Sistem sedang membersihkan tugas yang sedang berjalan.

Tidak ada

Cancelled

Pekerjaan telah dibatalkan.

Lihat laporan.

Failing

Pekerjaan sedang dihentikan karena parameter tidak valid atau tingkat kegagalan melebihi 20%.

Tidak ada

Failed

Pekerjaan gagal.

Lihat laporan.

Cleaning

Data pekerjaan sedang dibersihkan. Status ini tidak terlihat oleh pengguna.

Tidak ada

Cleaned

Pembersihan data pekerjaan selesai. Status ini tidak terlihat oleh pengguna.

Tidak ada

Strategi toleransi kesalahan

Validasi izin

  • Validasi izin akses untuk jalur sumber sebelum membuat pekerjaan guna mencegah gangguan eksekusi.

  • Pastikan peran IAM memiliki semua izin yang diperlukan untuk operasi target.

  • Rotasi AccessKey untuk peran IAM secara berkala guna meningkatkan keamanan.

Proteksi data

  • Buat snapshot atau backup data sebelum melakukan operasi penghapusan atau penimpaan batch.

  • Aktifkan pengendalian versi untuk data penting guna memastikan proteksi multi-versi.

  • Verifikasi logika operasi di lingkungan staging sebelum mengeksekusinya di lingkungan produksi.

Pemantauan dan peringatan

  • Konfigurasikan notifikasi event untuk perubahan status pekerjaan agar selalu mendapat informasi tentang progres eksekusi.

  • Pantau waktu eksekusi pekerjaan untuk mendeteksi pekerjaan yang berjalan terlalu lama.

  • Atur peringatan ambang batas untuk tingkat kegagalan guna merespons anomali dengan cepat.

Kontrol biaya

Metode penagihan

  • Fitur ini menggunakan model bayar sesuai penggunaan dan dikenai biaya CNY 1 per 1 juta objek yang diproses.

  • Tidak ada biaya untuk pembuatan atau manajemen pekerjaan. Anda hanya membayar jumlah objek yang diproses.

  • Hal ini dapat mengurangi biaya operasi hingga lebih dari 90% dibandingkan dengan memanggil API untuk setiap objek secara individual.

Saran optimasi

  • Manfaatkan sepenuhnya batas enam pekerjaan konkuren untuk mencegah sumber daya menganggur.

  • Hapus laporan pekerjaan historis secara berkala untuk mengurangi biaya penyimpanan.

  • Segera bersihkan pekerjaan uji untuk menghindari pengeluaran yang tidak perlu.

Kuota dan batasan

Item

Batas

Pekerjaan konkuren per akun

6

Pekerjaan dalam antrian per akun

Umumnya 1.000 per wilayah

Objek maksimum per pekerjaan

10 miliar

Ukuran file manifest maksimum

10 TB

Objek yang diproses per akun per hari

Umumnya 1 miliar per wilayah

Periode retensi riwayat pekerjaan

Umumnya 30 hari atau 10.000 catatan

Deskripsi penagihan

OSS Batch Operations adalah layanan pay-as-you-go. Anda dikenai biaya CNY 1 untuk setiap 1 juta objek yang diproses, tanpa biaya tambahan untuk pembuatan pekerjaan, manajemen, atau transfer data.

Penting

Biaya API OSS standar juga berlaku untuk operasi pada objek. Misalnya, operasi pemberian tag dikenai biaya permintaan PUT.

Contoh penagihan:

  • Pemberian tag batch untuk 5 juta objek: 5 juta / 1 juta × CNY 1 = CNY 5

  • Pemrosesan data berskala besar untuk 5 miliar objek: 5 miliar / 1 juta × CNY 1 = CNY 5.000

Saran optimasi biaya: Gabungkan operasi batch terkait menjadi satu pekerjaan untuk mengurangi overhead manajemen. Gunakan awalan atau file manifest yang tepat guna menghindari pemrosesan objek yang tidak perlu. Jadwalkan operasi batch yang tidak mendesak di luar jam sibuk bisnis.

FAQ

Mengapa pekerjaan saya terjebak dalam status Preparing dalam waktu lama?

Kemungkinan penyebabnya meliputi:

  • File manifest terlalu besar sehingga memerlukan waktu lama untuk diurai.

  • Pemindaian awalan mencakup banyak objek.

  • Beban sistem tinggi dan antrian pemrosesan sedang sibuk.

Untuk mengatasinya, Anda dapat membagi pekerjaan besar menjadi pekerjaan yang lebih kecil atau menggunakan file manifest yang telah dihasilkan sebelumnya.

Apa yang harus saya lakukan jika beberapa objek gagal diproses?

Ikuti langkah-langkah berikut:

  1. Unduh laporan eksekusi pekerjaan dan analisis penyebab kegagalannya.

  2. Buat pekerjaan ulang berdasarkan daftar objek yang gagal.

  3. Verifikasi bahwa konfigurasi izin sudah benar dan peran IAM memiliki izin penuh.

Bagaimana cara membatalkan pekerjaan yang sedang berjalan?

Anda dapat menggunakan perintah berikut:

POST /?batchJobStatus&batchJobId=<JobId>&requestedJobStatus=Cancelled&statusUpdateReason=User cancelled HTTP/1.1
Host: oss-cn-hangzhou.aliyuncs.com
Authorization: <Signature information>

Mengapa saya mendapatkan kesalahan permission denied?

Periksa konfigurasi izin berikut:

  1. Pastikan pengguna RAM memiliki izin oss:CreateBatchJob.

  2. Verifikasi bahwa peran IAM memiliki izin yang diperlukan untuk operasi tersebut.

  3. Verifikasi pengaturan izin bucket tujuan untuk operasi lintas bucket.

Persyaratan Konfigurasi Peran IAM?

Peran IAM harus mencakup hal-hal berikut:

  • Izin baca dan tulis untuk sumber daya OSS.

  • Izin untuk memanggil API Batch Operations.

  • Izin menulis untuk bucket penyimpanan laporan.

Contoh kebijakan kepercayaan:

{
  "Statement": [
    {
      "Action": "sts:AssumeRole",
      "Effect": "Allow",
      "Principal": {
        "Service": ["oss.aliyuncs.com"]
      }
    }
  ]
}

Bagaimana cara meningkatkan kecepatan eksekusi operasi batch?

Saran optimasi:

  1. Strukturkan file manifest Anda untuk menghindari pembuatan satu file yang terlalu besar.

  2. Hindari menjalankan pekerjaan besar selama jam sibuk bisnis.

  3. Tetapkan prioritas pekerjaan agar pekerjaan penting dieksekusi terlebih dahulu.

  4. Hindari memasukkan terlalu banyak objek dalam satu pekerjaan guna mencegah waktu eksekusi yang panjang. Kami menyarankan batas 100 juta objek per pekerjaan.

  5. Hindari membagi pekerjaan besar menjadi terlalu banyak pekerjaan kecil, seperti membagi 1 juta objek menjadi 1.000 pekerjaan, karena hal ini meningkatkan waktu yang dihabiskan untuk penjadwalan tugas.

Mengapa pekerjaan memerlukan waktu lebih lama dari yang diharapkan untuk berjalan?

Kemungkinan penyebabnya meliputi:

  • Objek tersebar tidak merata, sehingga beberapa shard memerlukan waktu lebih lama untuk diproses.

  • Objek sumber atau tujuan memiliki hot spot yang dapat memperlambat pemrosesan.

  • Terlalu banyak pekerjaan berjalan secara bersamaan, menyebabkan persaingan sumber daya.

Kami menyarankan menyesuaikan strategi penjadwalan pekerjaan atau mengurangi jumlah pekerjaan konkuren.