All Products
Search
Document Center

Object Storage Service:Proses Miliaran Objek Menggunakan Operasi Batch

Last Updated:Nov 10, 2025

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.

Ruang Lingkup

Fitur Batch Operations saat ini dalam pratinjau undangan dan hanya tersedia di Wilayah China (Hangzhou) dan China (Ulanqab). Untuk menggunakan fitur ini, hubungi Dukungan Teknis guna meminta akses.

Ikhtisar Operasi

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

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

  3. Buat Pekerjaan: Konfigurasikan operasi tertentu seperti penandaan, pengaturan izin, atau pemulihan objek, kemudian kirim pekerjaan tersebut.

  4. Kelola dan Rawat Pekerjaan: Pantau status pekerjaan, konfirmasikan pekerjaan yang siap dijalankan, tinjau laporan penyelesaian, serta sesuaikan prioritas atau batalkan pekerjaan jika diperlukan.

Langkah 1: Buat Peran RAM

  1. Buka Konsol RAM untuk membuat peran. Atur tipe entitas tepercaya menjadi Alibaba Cloud Service, dan pilih Object Storage Service sebagai layanan tepercaya.

  2. Buat kebijakan izin kustom dan sambungkan ke peran tersebut. Gunakan kebijakan berikut, serta ganti your-bucket dengan nama bucket 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/*"
          ]
        }
      ]
    }

    Detail Izin

    • Izin yang Diperlukan

      • oss:GetBucketInfo: Mengambil informasi bucket.

    • Input Manifest Permission

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

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

    • Izin Operasi Batch

      • oss:GetObjectTagging: Diperlukan untuk membaca tag yang ada saat mengganti tag secara batch.

      • oss:PutObjectTagging: Diperlukan untuk menambah 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 arsip secara batch.

    • Izin Output Laporan

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

  3. Catat ARN peran tersebut, seperti acs:ram::<your-account-uid>:role/BatchRole. ARN ini akan diperlukan dalam langkah-langkah selanjutnya.

Langkah 2: Siapkan Manifest Input

Operasi Batch memerlukan penentuan objek yang akan diproses. Anda dapat memilih salah satu dari tiga metode berikut sesuai kebutuhan:

  • File Inventaris Bucket: Ideal untuk operasi batch berskala besar dan berulang.

  • Awalan: Memproses semua objek dalam direktori tertentu.

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

File Inventaris Bucket

Gunakan file manifes yang dihasilkan secara otomatis oleh Bucket Inventory.

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

Detail Konfigurasi

  • ETag: Gunakan nilai ETag dari file manifest.json.

  • Format: OSS_InventoryReport_CSV_20250611

Awalan

Menghasilkan daftar objek berdasarkan awalan tertentu.

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

File Manifest CSV

Gunakan file CSV untuk menentukan objek. File manifest CSV harus diunggah ke Bucket OSS 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>

Detail Konfigurasi

  • ETag: Gunakan nilai ETag dari file manifest.csv.

  • Bidang: Tentukan bidang yang mendefinisikan kolom dalam file CSV.

    • Versi dinonaktifkan: Bucket,Key

    • Versi diaktifkan: Bucket,Key,VersionId

  • Format: OSS_BatchOperations_CSV_20250611

Persyaratan Format File CSV

  • Pengkodean file: Harus UTF-8.

  • Pemisah Bidang: Gunakan koma (,).

  • Pengkodean Object Key: Harus URL-encoded, seperti documents%2Freport1.pdf.

  • Tidak ada komentar: File CSV tidak boleh berisi komentar.

Contoh File CSV

  • Pengendalian Versi Dinonaktifkan

    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 dari sebuah objek. Satu objek dapat memiliki hingga 10 tag. Panjang total semua kunci dan nilai tag tidak boleh melebihi 1 KB. Kunci tag harus unik dan peka huruf besar-kecil.

Peringatan

Jika aturan siklus hidup bergantung pada hasil penggantian tag secara batch, Anda harus memverifikasi hasil eksekusi akhir pekerjaan tersebut. Setelah pekerjaan selesai, beberapa operasi objek mungkin berhasil sementara yang lain mungkin gagal. Hal ini dapat terjadi terlepas dari status akhir pekerjaan, yang bisa berupa `Berjalan`, `Selesai`, `Gagal`, `Dijeda`, atau `Dibatalkan`. Selalu tinjau laporan penyelesaian untuk memeriksa jumlah operasi yang berhasil dan gagal serta memastikan hasilnya sesuai dengan harapan 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 Inventaris 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>Batch replace tags using Inventory manifest</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>Batch replace tags for documents</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>Batch replace tags for specified objects</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, ia masuk ke dalam status Suspended. Lihat status pekerjaan untuk memastikan konfigurasi sudah benar, kemudian secara manual konfirmasi pekerjaan.

API

Panggil API CreateJob untuk membuat pekerjaan batch. Dalam konfigurasi XML, tentukan tipe operasi <PutObjectTagging> di node <Operation> dan gunakan <TagSet> untuk mendefinisikan set tag baru, yang akan menggantikan semua tag yang ada pada objek.

Tambah Tag Secara Batch

Operasi tambah tag secara batch menambahkan tag baru ke objek sambil tetap mempertahankan semua tag asli. Ini cocok untuk menambahkan tag tambahan. Karena ini adalah operasi non-atomik, ada risiko kehilangan tag dalam skenario konkurensi tinggi. Hindari menjalankan operasi ini secara bersamaan dengan operasi tagging lainnya untuk memastikan konsistensi data.

Peringatan

Jika aturan siklus hidup bergantung pada hasil penambahan tag secara batch, Anda harus memverifikasi hasil eksekusi akhir pekerjaan tersebut. Setelah pekerjaan selesai, beberapa operasi objek mungkin berhasil sementara yang lain mungkin gagal. Hal ini dapat terjadi terlepas dari status akhir pekerjaan, yang bisa berupa `Berjalan`, `Selesai`, `Gagal`, `Dijeda`, atau `Dibatalkan`. Selalu tinjau laporan penyelesaian untuk memeriksa jumlah operasi yang berhasil dan gagal serta memastikan hasilnya sesuai dengan harapan 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 Inventaris 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>Batch add tags using Inventory manifest</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>Batch add tags to documents</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>Batch add tags to specified objects</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>

Pekerjaan masuk ke status Suspended setelah dibuat. Periksa status pekerjaan untuk memastikan konfigurasi sudah benar, kemudian secara manual konfirmasi pekerjaan.

API

Panggil API CreateJob untuk membuat pekerjaan batch. Dalam konfigurasi XML, tentukan tipe operasi <AddObjectTagging> di node <Operation>. Gunakan <TagSet> untuk mendefinisikan tag baru. Operasi ini menambahkan tag baru sambil tetap mempertahankan semua tag yang ada.

Hapus Tag Secara Batch

Operasi hapus tag secara batch menghapus semua tag dari objek yang ditentukan. Setelah penghapusan, objek tersebut tidak akan memiliki tag. Ini cocok untuk skenario pembersihan tag.

Peringatan
  • Operasi ini tidak dapat dibatalkan. Setelah dieksekusi, tag yang dihapus tidak dapat dipulihkan. Uji operasi ini di lingkungan non-produksi sebelum menjalankannya di lingkungan produksi untuk memastikan bahwa hal itu tidak memengaruhi logika bisnis Anda.

  • Jika aturan siklus hidup bergantung pada hasil penghapusan tag secara batch, Anda harus memverifikasi hasil eksekusi akhir pekerjaan tersebut. Setelah pekerjaan selesai, beberapa operasi objek mungkin berhasil sementara yang lain mungkin gagal. Hal ini dapat terjadi terlepas dari status akhir pekerjaan, yang bisa berupa `Berjalan`, `Selesai`, `Gagal`, `Dijeda`, atau `Dibatalkan`. Selalu tinjau laporan penyelesaian untuk memeriksa jumlah operasi yang berhasil dan gagal serta memastikan hasilnya sesuai dengan harapan 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 Inventaris 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>Batch delete tags using Inventory manifest</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>Batch delete tags for documents</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>Batch delete tags for specified objects</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, ia masuk ke dalam status Suspended. Lihat status pekerjaan untuk memastikan konfigurasi sudah benar, kemudian secara manual konfirmasi pekerjaan.

API

Panggil API CreateJob untuk membuat pekerjaan batch dan tentukan tipe operasi <DeleteObjectTagging/> di node <Operation> dari konfigurasi XML. Operasi ini, yang tidak memerlukan parameter tambahan, 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` (semua pengguna dapat membaca, tetapi hanya pemilik yang dapat menulis), `public-read-write` (semua pengguna dapat membaca dan menulis), dan `default` (mengikuti pengaturan izin bucket). Perubahan izin berlaku segera dan langsung memengaruhi izin akses objek. Pilih jenis izin yang sesuai berdasarkan kebutuhan 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 manifes 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>Mengubah ACL secara batch menggunakan manifes Inventory</Description>
    <Priority>10</Priority>
    <RoleArn>acs:ram::<your-account-uid>:role/BatchRole</RoleArn>
</CreateJobRequest>

Prefix

<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>Mengubah ACL menjadi 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>Mengubah ACL menjadi 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 berubah menjadi `Suspended`. Periksa status pekerjaan untuk memastikan konfigurasi sudah benar, lalu secara manual konfirmasi pekerjaan untuk dieksekusi.

API

Panggil operasi API CreateJob untuk membuat pekerjaan batch. Di dalam node <Operation> dari konfigurasi XML, tentukan tipe operasi sebagai <PutObjectAcl>. Gunakan parameter <ObjectAcl> untuk mengatur izin target menjadi `private`, `public-read`, `public-read-write`, atau `default`.

Pemulihan data secara batch

Operasi pemulihan batch mendukung objek dalam kelas penyimpanan Archive, ColdArchive, dan DeepColdArchive. Pemulihan objek Archive biasanya memakan waktu sekitar satu jam, dengan objek yang dipulihkan dapat diakses selama 1 hingga 7 hari. Kelas ColdArchive menawarkan dua tingkatan pemulihan: Standar (2 hingga 5 jam) dan Bulk (5 hingga 12 jam). Kelas DeepColdArchive hanya mendukung tingkatan Standar, yang dapat memakan waktu hingga 48 jam. Untuk objek ColdArchive dan DeepColdArchive, Anda dapat mengatur periode aksesibilitas objek yang dipulihkan dari 1 hingga 365 hari.

Penting

Jika kelas penyimpanan objek tidak sesuai dengan mode pemulihan yang ditentukan atau jumlah hari pemulihan, operasi 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 manifest 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 manifes Inventaris selama 7 hari</Description>
    <Priority>10</Priority>
    <RoleArn>acs:ram::<your-account-uid>:role/BatchRole</RoleArn>
</CreateJobRequest>

Prefix

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

Tanggapan contoh

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

Setelah pekerjaan dibuat, ia memasuki status Suspended. Periksa status pekerjaan untuk mengonfirmasi bahwa konfigurasi sudah benar, lalu secara manual konfirmasi pekerjaan untuk eksekusi.

API

Panggil operasi API CreateJob untuk membuat pekerjaan batch. Di dalam node <Operation> dari konfigurasi XML, tentukan tipe operasi <RestoreObject>. Gunakan parameter <Days> untuk menetapkan jumlah hari (1 hingga 365) objek tetap dipulihkan dan parameter <Tier> untuk menentukan kecepatan pemulihan (Standard atau Bulk).

Langkah 4: Manajemen Pekerjaan dan O&M

Lihat status pekerjaan

Setelah membuat pekerjaan, Anda dapat memantau statusnya dengan memeriksa detail pekerjaan. Ini menyediakan informasi status lengkap untuk pekerjaan tertentu, termasuk kemajuan eksekusi dan parameter konfigurasi.

Penting

Status pekerjaan `Complete` tidak menjamin keberhasilan semua operasi objek. Selalu tinjau laporan penyelesaian untuk memverifikasi hasil akhir.

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 tanggapan

<?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 Ditangguhkan</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: Pekerjaan memerlukan konfirmasi manual sebelum dapat dijalankan.

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

  • TotalNumberOfTasks: 3: Perkiraan jumlah objek yang akan diproses adalah 3.

  • NumberOfTasksSucceeded: 0: Pekerjaan belum dimulai.

  • ElapsedTimeInActiveSeconds: -1: Pekerjaan belum dimulai, sehingga waktu berjalan adalah -1.

API

Panggil operasi DescribeJob untuk mengambil detail pekerjaan tertentu, termasuk status eksekusi, statistik kemajuan, parameter konfigurasi, dan pesan kesalahan.

Konfirmasi pekerjaan yang tertunda

Ubah status pekerjaan dari Suspended menjadi Ready untuk menempatkan pekerjaan dalam antrean eksekusi. Jika pekerjaan tidak dikonfirmasi dalam waktu 14 hari, statusnya akan otomatis berubah menjadi Failed.

ossutil 2.0

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

Contoh tanggapan

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

API

Gunakan operasi UpdateJobStatus untuk mengonfirmasi pekerjaan yang akan dieksekusi. Operasi ini mengubah status pekerjaan dari Suspended menjadi Ready dan menambahkannya ke antrian eksekusi.

Kueri daftar pekerjaan dalam batch

Anda dapat meminta daftar semua pekerjaan Anda. Fitur ini memungkinkan Anda menyaring daftar pekerjaan berdasarkan status dan rentang waktu pembuatan. Anda juga dapat menetapkan batas jumlah hasil yang dikembalikan serta menggunakan paginasi untuk mengelola sejumlah besar pekerjaan. Secara default, hasil kueri diurutkan berdasarkan waktu pembuatan dalam urutan menurun, dengan pekerjaan terbaru ditampilkan terlebih 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 tanggapan

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

API

Gunakan operasi ListJobs untuk menanyakan daftar pekerjaan batch di bawah akun Anda. Operasi ini mendukung penyaringan berdasarkan status dan rentang waktu, serta menyediakan paginasi untuk mempermudah manajemen dan pemantauan pekerjaan.

Menyesuaikan prioritas pekerjaan

Nilai prioritas berkisar antara 0 hingga 2.147.483.647, di mana nilai yang lebih besar menunjukkan prioritas yang lebih tinggi. Pekerjaan dengan prioritas tinggi dapat merebut sumber daya dari pekerjaan dengan prioritas rendah. Namun, prioritas pekerjaan tidak menjamin urutan eksekusi yang ketat. OSS berupaya mengalokasikan lebih banyak sumber daya kepada pekerjaan dengan prioritas lebih tinggi.

ossutil 2.0

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

Contoh tanggapan

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

API

Gunakan operasi UpdateJobPriority untuk menyesuaikan prioritas eksekusi pekerjaan. Fitur ini mendukung penjadwalan sumber daya dan memungkinkan prioritas pekerjaan mendesak, di mana pekerjaan dengan prioritas tinggi dapat mengambil alih sumber daya dari pekerjaan dengan prioritas lebih rendah.

Batalkan Pekerjaan

Hentikan pekerjaan yang sedang berjalan atau menunggu untuk dijalankan. Operasi pada objek yang telah diproses 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 tanggapan

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

API

Gunakan operasi UpdateJobStatus untuk mengubah status pekerjaan menjadi Cancelled. Tindakan ini akan menghentikan pekerjaan dan melepaskan sumber dayanya.

Lihat laporan pekerjaan

Setelah pekerjaan selesai, sistem menghasilkan laporan eksekusi rinci di jalur yang telah Anda tentukan. Laporan tersebut mencakup dua jenis file utama: file manifest.json (file manifest laporan) dan file laporan rinci dalam format CSV. Laporan ini mencantumkan status pemrosesan, kode status HTTP, serta alasan kegagalan untuk setiap objek. Informasi ini berguna untuk pemecahan masalah dan verifikasi hasil.

Penting

Setelah pekerjaan selesai, beberapa operasi objek mungkin berhasil, sementara yang lain mungkin gagal. Hal ini dapat terjadi tanpa memandang status akhir pekerjaan, yang dapat berupa `Running`, `Complete`, `Failed`, `Paused`, atau `Cancelled`. Selalu tinjau laporan penyelesaian untuk memastikan hasil eksekusi aktual.

Lokasi penyimpanan laporan

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

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

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

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

File laporan akan disimpan di: my-bucket/batch-reports/<JobId>/results/

Struktur file laporan

Laporan terdiri dari dua bagian:

1. File manifest laporan (manifest.json)

File JSON yang mencatat metadata laporan dan lokasi file laporan CSV.

Contoh File Manifest 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 Manifest 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 Bidang:

  • Format: Versi format laporan. Nilainya selalu Report_CSV_20250901.

  • ReportCreationDate: Waktu saat laporan dihasilkan, dalam format UTC.

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

  • ReportSchema: Definisi kolom untuk laporan CSV.

2. File laporan CSV rinci

File ini mencatat hasil pemrosesan rinci untuk setiap objek dan mencakup kolom-kolom berikut:

  • Bucket: Bucket yang berisi objek.

  • Key: Nama objek yang dienkripsi URL.

  • VersionId: ID versi objek. Parameter ini kosong jika pengendalian versi tidak diaktifkan.

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

  • Error: Detail kesalahan. Parameter ini kosong jika permintaan berhasil.

Contoh Laporan CSV untuk Pemrosesan 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 Pemrosesan 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 operasi `DescribeJob` untuk mendapatkan detail pekerjaan. Jalur laporan terdapat di node <Report> pada respons.

  2. Unduh manifest.json: Unduh file `manifest.json` dari jalur laporan. Tinjau node TaskExecutionStatus dan Results untuk memahami status eksekusi keseluruhan.

  3. Unduh Laporan CSV: Unduh laporan CSV rinci dari jalur yang ditentukan dalam bidang Results[].Key file `manifest.json`.

  4. Analisis Hasil Eksekusi:

    • Dalam kolom HTTPStatus, kode `2xx` menunjukkan keberhasilan, sedangkan kode `4xx` atau `5xx` menunjukkan kegagalan.

    • Untuk operasi yang gagal, periksa kolom Error untuk melihat kode kesalahan dan detailnya.

    • Hitung jumlah objek yang berhasil dan gagal, lalu bandingkan totalnya dengan ProgressSummary yang dikembalikan oleh operasi `DescribeJob` untuk verifikasi.

Contoh Perintah untuk Mengunduh Laporan Menggunakan ossutil:

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

# Unduh laporan CSV rinci
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 cukup untuk mengakses objek.

Periksa konfigurasi izin peran IAM.

404

NoSuchKey

Objek tidak ada.

Konfirmasikan bahwa jalur objek dalam file manifest benar.

400

InvalidArgument

Parameter tidak valid.

Periksa parameter operasi, seperti format tag atau tipe ACL.

409

InvalidObjectState

Status objek tidak memenuhi persyaratan operasi.

Konfirmasikan bahwa kelas penyimpanan objek sesuai dengan tipe operasi.

Catatan

  • File laporan mengonsumsi ruang penyimpanan dan menimbulkan biaya. Secara berkala, hapus laporan historis untuk mengurangi biaya penyimpanan.

  • Untuk pekerjaan berskala besar, file laporan CSV dapat berukuran besar. Pastikan Anda memiliki bandwidth jaringan yang memadai sebelum mengunduhnya.

  • Jika Anda menetapkan ReportScope ke FailedTasksOnly, laporan hanya akan mencantumkan objek yang gagal diproses.

Penggunaan dalam lingkungan produksi

Praktik terbaik

  • Strategi Perencanaan Pekerjaan: Untuk memastikan stabilitas, batasi jumlah objek dalam satu pekerjaan hingga 100 juta. Pisahkan dataset besar menjadi beberapa pekerjaan untuk mengurangi risiko kegagalan pada satu titik. Tetapkan prioritas pekerjaan yang sesuai agar pekerjaan penting tidak terblokir. Estimasi waktu eksekusi untuk menjadwalkan jendela pemeliharaan. Saat beberapa pekerjaan beroperasi pada objek yang sama secara bersamaan, urutan eksekusi tidak dijamin. Hindari melakukan operasi bersamaan pada objek yang sama.

  • Langkah Optimasi Kinerja: Untuk mencegah penguraian lambat, atur struktur file manifest Anda dan hindari menggunakan file yang terlalu besar. Gunakan kuota QPS independen untuk memastikan bahwa pekerjaan batch tidak mempengaruhi panggilan API reguler Anda. Jalankan maksimal tiga pekerjaan secara bersamaan untuk menghindari persaingan sumber daya.

  • Mekanisme Penanganan Kesalahan: Aktifkan laporan rinci (`ReportScope=AllTasks`) untuk mendapatkan hasil lengkap guna pemecahan masalah.

  • Konfirmasi Hasil: Setelah pekerjaan selesai, beberapa objek mungkin diproses dengan sukses sementara yang lain gagal. Hal ini dapat terjadi tanpa memandang status akhir pekerjaan, yang bisa berupa `Running`, `Complete`, `Failed`, `Paused`, atau `Canceled`. Selalu periksa jumlah operasi sukses dan gagal dalam laporan untuk memastikan hasilnya sesuai harapan Anda.

  • Penanganan Kegagalan: Status `Complete` menunjukkan bahwa pekerjaan telah selesai, tetapi tidak menjamin semua objek diproses dengan sukses. Selalu periksa laporan eksekusi untuk detail lebih lanjut. Untuk tugas yang gagal, analisis penyebab kegagalan dan ulangi operasi tersebut. Untuk pekerjaan yang sebagian gagal, Anda dapat membuat pekerjaan baru berdasarkan laporan kegagalan untuk mengulangi operasi yang gagal. Untuk pekerjaan dengan status `Cancelled`, `Paused`, atau `Failed`, periksa laporan karena beberapa objek mungkin telah diproses dengan sukses.

Mekanisme penjadwalan sumber daya

  • Kuota QPS Independen: Pekerjaan menggunakan kuota independen sebesar 10.000 QPS dan tidak mengonsumsi QPS aplikasi Anda.

  • Penjadwalan Prioritas: Mendukung prioritas dari 0 hingga 2.147.483.647. Pekerjaan dengan prioritas tinggi akan merebut sumber daya dari pekerjaan dengan prioritas rendah.

  • Kontrol Konkurensi: Satu akun dapat menjalankan maksimal enam pekerjaan secara bersamaan. Pekerjaan tambahan akan ditempatkan dalam antrian tunggu.

Strategi toleransi kesalahan

  • Verifikasi Izin: Sebelum membuat pekerjaan, verifikasi izin akses untuk jalur sumber untuk mencegah kegagalan eksekusi. Pastikan Peran RAM memiliki semua izin yang diperlukan untuk operasi target. Putar AccessKey untuk Peran RAM secara berkala untuk meningkatkan keamanan.

  • Perlindungan Data: Buat snapshot atau cadangan sebelum melakukan operasi penghapusan atau penimpaan batch. Aktifkan pengendalian versi untuk data penting untuk melindunginya dengan beberapa versi. Verifikasi logika operasi dalam lingkungan pengujian sebelum menjalankannya di lingkungan produksi.

  • Pemantauan dan Peringatan: Konfigurasikan notifikasi event untuk perubahan status pekerjaan agar tetap mendapat informasi tentang kemajuan pekerjaan. Pantau waktu eksekusi pekerjaan untuk mendeteksi pekerjaan yang berjalan terlalu lama. Tetapkan peringatan ambang batas untuk laju kegagalan untuk merespons masalah dengan cepat.

Pengendalian biaya

  • Metode Penagihan: Penagihan didasarkan pada jumlah objek yang diproses, dengan tarif CNY 1,00 per 1 juta objek. Tidak ada biaya yang dikenakan untuk pembuatan pekerjaan. Anda hanya dikenakan biaya untuk jumlah objek yang diproses. Metode ini dapat menghemat lebih dari 90% biaya operasional dibandingkan dengan membuat panggilan API individu untuk setiap objek.

  • Saran Optimasi: Untuk menghindari sumber daya menganggur, gunakan batas penuh enam pekerjaan bersamaan. Secara berkala hapus laporan pekerjaan lama untuk mengurangi biaya penyimpanan. Segera hapus pekerjaan uji untuk menghindari tagihan yang tidak perlu.

Kuota dan batasan

Item

Batas

Jumlah pekerjaan bersamaan per akun

6

Jumlah pekerjaan dalam antrian per akun

10.000 per Wilayah

Jumlah maksimum objek per pekerjaan

10 miliar

Ukuran maksimum file manifest

10 TB

Jumlah objek yang diproses per akun per hari

860 juta per Wilayah

Periode retensi riwayat pekerjaan

90 hari atau 100.000 entri

Penagihan

OSS Batch Operations menggunakan model penagihan bayar sesuai penggunaan. Layanan ini ditagih sebesar CNY 1 untuk setiap 1 juta objek yang diproses. Tidak ada biaya untuk pembuatan atau pengelolaan pekerjaan, serta tidak ada biaya transfer data tambahan.

Penting

Operasi pada file juga mengakibatkan biaya API OSS standar. Sebagai contoh, operasi tagging mengakibatkan biaya untuk permintaan `PUT`.

Contoh Penagihan:

  • Penandaan batch untuk 5 juta objek: 5 juta ÷ 1 juta × CNY 1 = CNY 5

  • Pemrosesan data skala besar untuk 5 miliar objek: 5 miliar ÷ 1 juta × CNY 1 = CNY 5.000

Saran Optimisasi Biaya: Gabungkan operasi batch terkait menjadi satu pekerjaan untuk mengurangi beban manajemen. Gunakan awalan yang tepat atau file manifest guna menghindari pemrosesan objek yang tidak perlu. Jadwalkan operasi batch yang tidak mendesak untuk berjalan selama jam-jam di luar puncak.

FAQ

Mengapa pekerjaan tetap dalam status Preparing untuk waktu yang lama setelah dikirimkan?

Hal ini dapat terjadi karena beberapa alasan berikut:

  • File manifest terlalu besar, sehingga meningkatkan waktu penguraian.

  • Pemindaian awalan harus memproses sejumlah besar objek.

  • Beban sistem tinggi menyebabkan antrian pemrosesan menjadi sibuk.

Untuk menyelesaikan masalah ini, Anda dapat membagi pekerjaan besar menjadi pekerjaan yang lebih kecil atau menggunakan file manifest yang telah dibuat sebelumnya.

Apa yang harus saya lakukan jika beberapa objek gagal diproses?

Ikuti langkah-langkah berikut:

  1. Unduh laporan eksekusi pekerjaan dan analisis penyebab kegagalan masing-masing objek.

  2. Buat pekerjaan baru untuk mencoba kembali operasi pada objek yang gagal.

  3. Verifikasi konfigurasi izin Anda untuk memastikan bahwa Peran RAM memiliki semua izin yang diperlukan.

Bagaimana cara membatalkan pekerjaan yang sedang berjalan?

Gunakan perintah berikut:

POST /?batchJobStatus&batchJobId=<JobId>&requestedJobStatus=Cancelled&statusUpdateReason=Dibatalkan oleh pengguna HTTP/1.1
Host: oss-cn-hangzhou.aliyuncs.com
Authorization: <SignatureInformation>

Mengapa saya mendapatkan kesalahan izin ditolak?

Periksa konfigurasi izin Anda:

  1. Pastikan Pengguna Resource Access Management (RAM) memiliki izin oss:CreateBatchJob.

  2. Verifikasi bahwa Peran RAM mencakup izin tertentu yang diperlukan untuk operasi tersebut.

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

Apa saja persyaratan konfigurasi untuk Peran RAM?

Peran IAM harus mencakup hal-hal berikut:

  • Izin baca dan tulis untuk Sumber daya OSS.

  • Izin untuk memanggil API Operasi Batch.

  • Izin tulis untuk bucket tempat laporan disimpan.

Contoh kebijakan kepercayaan:

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

Bagaimana cara meningkatkan kecepatan eksekusi operasi batch?

Ikuti saran optimasi berikut:

  1. Atur file manifest dengan benar dan hindari penggunaan file tunggal yang terlalu besar.

  2. Hindari menjalankan pekerjaan besar selama jam sibuk bisnis.

  3. Tetapkan prioritas pekerjaan untuk memastikan pekerjaan penting dieksekusi terlebih dahulu.

  4. Untuk mencegah waktu eksekusi yang lama, batasi jumlah objek dalam satu pekerjaan hingga di bawah 100 juta.

  5. Hindari membagi pekerjaan besar menjadi jumlah pekerjaan kecil yang berlebihan. Sebagai contoh, jangan membagi pekerjaan dengan 1 juta objek menjadi 1.000 pekerjaan terpisah. Pendekatan ini mengurangi overhead dari penjadwalan tugas.

Mengapa waktu eksekusi pekerjaan lebih lama dari yang diharapkan?

Hal ini dapat terjadi karena beberapa alasan berikut:

  • Objek didistribusikan secara tidak merata, sehingga beberapa shard membutuhkan waktu lebih lama untuk diproses.

  • Hotspot di objek sumber atau tujuan memengaruhi kecepatan pemrosesan.

  • Terlalu banyak pekerjaan berjalan pada saat yang sama, yang mengarah pada persaingan sumber daya yang intens.

Untuk menyelesaikan masalah ini, Anda dapat menyesuaikan kebijakan penjadwalan pekerjaan atau mengurangi jumlah pekerjaan bersamaan.