Tous les produits
Search
Centre de documentation

Object Storage Service:Process billions of objects using Batch Operations

Dernière mise à jour :Sep 08, 2026

La fonctionnalité Opérations par lot vous permet de traiter jusqu'à 10 milliards d'objets en une seule tâche. Vous pouvez effectuer des opérations telles que la gestion des tags, la modification des listes de contrôle d'accès (ACL) et la restauration des données sans écrire de code.

Périmètre

La fonctionnalité Opérations par lot est entièrement disponible dans les régions Chine (Hangzhou), Singapour et Allemagne (Francfort). Pour utiliser cette fonctionnalité dans les régions Chine (Shanghai), Chine (Shenzhen), Chine (Guangzhou), Chine (Qingdao), Chine (Pékin), Chine (Zhangjiakou), Chine (Hohhot), Chine (Ulanqab), Chine (Chengdu), Chine (Hong Kong) ou Indonésie (Jakarta), contactez le support technique pour demander l'accès.

Présentation des opérations

  1. Créez un rôle RAM : autorisez le service OSS à lire le fichier manifeste, à exécuter les opérations par lot et à générer un rapport.

  2. Préparez un manifeste d'entrée : spécifiez les objets à traiter à l'aide d'un fichier d'inventaire de bucket (manifest.json), d'un préfixe ou d'un fichier manifeste CSV (manifest.csv).

  3. Créez une tâche : configurez des opérations spécifiques, telles que l'ajout de tags, la définition des permissions ou la restauration d'objets, puis soumettez la tâche.

  4. Gérez et maintenez la tâche : surveillez l'état de la tâche, confirmez les tâches en attente, consultez le rapport d'exécution et ajustez la priorité ou annulez la tâche si nécessaire.

Étape 1 : Créer un rôle RAM

  1. Accédez à la console RAM pour créer un rôle. Sélectionnez Alibaba Cloud Service comme type d'entité de confiance et Object Storage Service comme service de confiance.

  2. Créez et associez une stratégie personnalisée au rôle. Le contenu de la stratégie est le suivant. Remplacez your-bucket par le nom réel de votre bucket.

    {
      "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/*"
          ]
        }
      ]
    }

    Description des permissions

    • Permissions requises

      • oss:GetBucketInfo : récupère les informations du bucket.

    • Permissions liées au manifeste d'entrée

      • oss:ListObjects : requis pour générer une liste d'objets à partir d'un préfixe.

      • oss:GetObject : requis pour utiliser un fichier d'inventaire de bucket ou un fichier manifeste CSV.

    • Permissions liées aux opérations par lot

      • oss:GetObjectTagging : requis pour lire les tags existants lors du remplacement par lot des tags.

      • oss:PutObjectTagging : requis pour l'ajout ou le remplacement par lot des tags.

      • oss:DeleteObjectTagging : requis pour la suppression par lot des tags.

      • oss:PutObjectAcl : requis pour la modification par lot des permissions.

      • oss:RestoreObject : requis pour la restauration par lot des objets archivés.

    • Permissions pour la sortie du rapport

      • oss:PutObject : requis pour télécharger le rapport d'opération par lot.

  3. Enregistrez l'ARN du rôle, par exemple acs:ram::<your-account-uid>:role/BatchRole. Vous l'utiliserez dans les étapes suivantes.

Étape 2 : Préparer un manifeste d'entrée

Les opérations par lot nécessitent de spécifier les objets à traiter. Vous pouvez choisir l'une des trois méthodes suivantes en fonction de votre scénario :

  • Fichier d'inventaire de bucket : adapté aux opérations par lot à grande échelle et régulièrement répétées.

  • Préfixe : traite tous les objets d'un dossier spécifique.

  • Fichier manifeste CSV : un fichier CSV qui répertorie les objets à traiter.

Fichier d'inventaire de bucket

Utilisez un fichier manifeste généré automatiquement par Inventaire de 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>

Description de la configuration

  • ETag : la valeur ETag du fichier manifest.json.

  • Format : OSS_InventoryReport_CSV_20250611

Préfixe

Génère une liste d'objets basée sur un préfixe spécifié.

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

Fichier manifeste CSV

Répertorie des objets spécifiques à l'aide d'un fichier CSV. Le fichier manifeste CSV doit être téléchargé vers OSS et se trouver dans la même région que la tâche par lot.

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

Description de la configuration

  • ETag : la valeur ETag de manifest.csv.

  • Fields : les colonnes du fichier CSV.

    • Versioning non activé : Bucket,Key

    • Versioning activé : Bucket,Key,VersionId

  • Format : OSS_BatchOperations_CSV_20250611

Exigences de format du fichier CSV

  • Encodage du fichier : UTF-8.

  • Séparateur de champ : virgule (,).

  • Encodage de la clé d'objet : encodé URL (par exemple, documents%2Freport1.pdf).

  • Commentaires : le fichier CSV ne peut pas contenir de lignes de commentaire.

Exemples de fichiers CSV

  • Versioning non activé

    my-bucket,documents%2Freport1.pdf
    my-bucket,documents%2Freport2.pdf
    my-bucket,images%2Fphoto1.jpg
  • Versioning activé

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

Étape 3 : Créer une tâche

Remplacer des tags par lot

L'opération de remplacement supprime tous les tags existants sur un objet. Un seul objet peut avoir jusqu'à 10 tags. La longueur totale de toutes les clés et valeurs de tag ne peut pas dépasser 1 Ko. Les clés de tag sont sensibles à la casse et doivent être uniques.

Avertissement

Si une règle de cycle de vie dépend de cette opération, examinez le rapport final de la tâche. L'état final d'une tâche peut être Running, Complete, Failed, Paused ou Cancelled. Certains objets peuvent être traités avec succès tandis que d'autres échouent. Vérifiez le rapport pour confirmer que le nombre de tâches réussies et échouées correspond à vos attentes.

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

Fichier d'inventaire de 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>

Préfixe

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

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

Exemple de réponse

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

Après la création de la tâche, celle-ci passe à l'état Suspended. Vous pouvez consulter l'état de la tâche pour confirmer que la configuration est correcte, puis confirmer manuellement la tâche en attente.

API

Appelez l'API CreateJob pour créer une tâche par lot. Dans la configuration XML, spécifiez le type d'opération <PutObjectTagging> dans le nœud <Operation>. Définissez le nouvel ensemble de tags dans <TagSet> pour remplacer complètement les tags existants de l'objet.

Ajouter des tags par lot

L'opération d'ajout de tags par lot ajoute de nouveaux tags aux tags existants d'un objet, en conservant tous les tags d'origine. Cette opération est utile pour ajouter des tags supplémentaires. Notez que si la clé d'un nouveau tag est identique à la clé d'un tag existant, la valeur du nouveau tag écrase la valeur existante. Comme il ne s'agit pas d'une opération atomique, il existe un risque de perte de tags dans les scénarios à forte concurrence. Évitez d'exécuter cette opération simultanément avec d'autres opérations de tag pour garantir la cohérence des données.

Avertissement

Si une règle de cycle de vie dépend de cette opération, examinez le rapport final de la tâche. L'état final d'une tâche peut être Running, Complete, Failed, Paused ou Cancelled. Certains objets peuvent être traités avec succès tandis que d'autres échouent. Vérifiez le rapport pour confirmer que le nombre de tâches réussies et échouées correspond à vos attentes.

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

Fichier d'inventaire de 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>

Préfixe

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

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

Exemple de réponse

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

Après la création de la tâche, celle-ci passe à l'état Suspended. Vous pouvez consulter l'état de la tâche pour confirmer que la configuration est correcte, puis confirmer manuellement la tâche en attente.

API

Appelez l'API CreateJob pour créer une tâche par lot. Dans la configuration XML, spécifiez le type d'opération <AddObjectTagging> dans le nœud <Operation>. Définissez les nouveaux tags dans <TagSet>. Le système ajoute les nouveaux tags tout en conservant les existants.

Supprimer des tags par lot

L'opération de suppression de tags par lot supprime tous les tags des objets spécifiés. Après l'opération, les objets n'auront plus de tags. Cette opération est utile pour nettoyer les tags.

Avertissement
  • Cette opération est irréversible. Une fois exécutée, les tags supprimés ne peuvent pas être récupérés. Testez cette opération dans un environnement de préproduction avant de l'exécuter en production pour vous assurer qu'elle n'affecte pas votre logique métier.

  • Si une règle de cycle de vie dépend de cette opération, examinez le rapport final de la tâche. L'état final d'une tâche peut être Running, Complete, Failed, Paused ou Cancelled. Certains objets peuvent être traités avec succès tandis que d'autres échouent. Vérifiez le rapport pour confirmer que le nombre de tâches réussies et échouées correspond à vos attentes.

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

Fichier d'inventaire de 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>

Préfixe

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

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

Exemple de réponse

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

Après la création de la tâche, celle-ci passe à l'état Suspended. Vous pouvez consulter l'état de la tâche pour confirmer que la configuration est correcte, puis confirmer manuellement la tâche en attente.

API

Appelez l'API CreateJob pour créer une tâche par lot. Dans la configuration XML, spécifiez le type d'opération <DeleteObjectTagging/> (sans paramètres supplémentaires) dans le nœud <Operation>. Le système supprimera tous les tags des objets spécifiés.

Modifier les autorisations par lot

La modification des autorisations par lot prend en charge quatre types de listes de contrôle d'accès (ACL) : private (lecture et écriture réservées au propriétaire), public-read (lecture publique, écriture réservée au propriétaire), public-read-write (lecture et écriture publiques) et default (hérite des autorisations du bucket). Les modifications des autorisations prennent effet immédiatement et influent directement sur l'accès aux objets. Choisissez le type d'autorisation approprié avec soin en fonction de vos besoins métier.

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

Bucket inventory file

<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>Batch change ACL using Inventory manifest</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>Batch change ACL to private for documents</Description>
    <Priority>10</Priority>
    <RoleArn>acs:ram::<your-account-uid>:role/BatchRole</RoleArn>
</CreateJobRequest>

CSV manifest file

<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>Batch change ACL to private for specified objects</Description>
    <Priority>10</Priority>
    <RoleArn>acs:ram::<your-account-uid>:role/BatchRole</RoleArn>
</CreateJobRequest>

Exemple de réponse

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

Une fois la tâche créée, elle passe à l'état Suspended. Consultez le statut de la tâche pour vérifier que la configuration est correcte, puis confirmez la tâche en attente manuellement.

API

Appelez l'API CreateJob pour créer une tâche par lot. Dans la configuration XML, spécifiez le type d'opération <PutObjectAcl> dans le nœud <Operation> et définissez l'autorisation cible (private/public-read/public-read-write/default) à l'aide du paramètre <ObjectAcl>.

Restaurer les données par lot

L'opération de restauration par lot prend en charge les objets des classes de stockage Archive, ColdArchive et DeepColdArchive. La restauration des objets Archive s'effectue généralement en moins d'une heure et les objets restaurés restent accessibles pendant 1 à 7 jours. La classe de stockage ColdArchive prend en charge le mode Standard (2 à 5 heures) et le mode Bulk (5 à 12 heures). La classe de stockage DeepColdArchive ne prend en charge que le mode Standard, dont l'exécution peut prendre jusqu'à 48 heures. Vous pouvez définir la durée d'accessibilité de l'objet restauré sur une valeur comprise entre 1 et 365 jours.

Important

Si la classe de stockage d'un objet ne correspond pas au mode de restauration ou au nombre de jours spécifié, l'opération échouera pour cet objet.

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

Bucket inventory file

<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>Batch restore using Inventory manifest for 7 days</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>Batch restore archive objects for 7 days</Description>
    <Priority>10</Priority>
    <RoleArn>acs:ram::<your-account-uid>:role/BatchRole</RoleArn>
</CreateJobRequest>

CSV manifest file

<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>Batch restore specified archive objects for 7 days</Description>
    <Priority>10</Priority>
    <RoleArn>acs:ram::<your-account-uid>:role/BatchRole</RoleArn>
</CreateJobRequest>

Exemple de réponse

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

Une fois la tâche créée, son statut est défini sur Suspended. Vous pouvez consulter le statut de la tâche pour vérifier que la configuration est correcte, puis confirmer la tâche à exécuter manuellement.

API

Appelez l'API CreateJob pour créer une tâche par lot. Dans la configuration XML, spécifiez l'opération <RestoreObject> dans le nœud <Operation>. Définissez le nombre de jours pendant lesquels l'objet restauré reste accessible (1 à 365) à l'aide du paramètre <Days> et le mode de restauration (Standard ou Bulk) à l'aide du paramètre <Tier>.

Étape 4 : Gestion et exploitation/maintenance des tâches

Consulter le statut d'une tâche

Après avoir créé une tâche, vous pouvez surveiller et confirmer son statut en interrogeant ses détails. Ces derniers fournissent une vue d'ensemble complète du statut de la tâche, y compris sa progression d'exécution et ses paramètres de configuration.

Important

Un statut de tâche « Complete » ne garantit pas que tous les objets ont été traités avec succès. Vous devez consulter le rapport détaillé pour confirmer les résultats finaux.

ossutil 2,0

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

Exemple de réponse

<?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>Test task for Suspended status</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>

Description du statut :

  • ConfirmationRequired: true : une confirmation est requise.

  • Status: Suspended : la tâche est suspendue et attend la confirmation de l'utilisateur.

  • TotalNumberOfTasks: 3 : la tâche traitera 3 objets.

  • NumberOfTasksSucceeded: 0 : la tâche n'a pas démarré.

  • ElapsedTimeInActiveSeconds: -1 : le temps d'exécution est de -1 car la tâche n'a pas démarré.

API

Vous pouvez appeler l'API DescribeJob pour récupérer des informations détaillées sur une tâche spécifique, notamment son statut d'exécution, ses statistiques de progression, ses paramètres de configuration et ses messages d'erreur.

Confirmer une tâche en attente

Vous pouvez faire passer le statut de la tâche de Suspended à Ready afin de la placer dans la file d'attente d'exécution. Si une tâche n'est pas confirmée dans un délai de 14 jours, son statut passe automatiquement à 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

Exemple de réponse

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

API

Vous pouvez appeler l'API UpdateJobStatus pour confirmer l'exécution d'une tâche. Cette opération fait passer le statut de la tâche de Suspended à Ready et la place dans la file d'attente d'exécution.

Lister les tâches par lot

Vous pouvez afficher toutes les tâches et utiliser la fonctionnalité de requête par lot pour filtrer la liste par statut et par plage de dates de création. Vous pouvez également limiter le nombre de résultats et utiliser des requêtes paginées pour gérer un grand nombre de tâches. Par défaut, les résultats sont triés par date de création décroissante, les tâches les plus récentes apparaissant en premier.

ossutil 2,0

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

Exemple de réponse

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

API

Appelez l'API ListJobs pour interroger la liste des tâches par lot de votre compte. Cela vous permet de filtrer par statut et par plage de temps et d'utiliser des requêtes paginées pour faciliter la gestion et la surveillance des tâches.

Ajuster la priorité d'une tâche

La valeur de priorité varie de 0 à 2147483647, une valeur plus élevée indiquant une priorité plus grande. La priorité d'une tâche ne garantit pas un ordre d'exécution strict. OSS tente plutôt d'allouer davantage de ressources aux tâches de priorité élevée.

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

Exemple de réponse

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

API

Vous pouvez appeler l'API UpdateJobPriority pour ajuster la priorité d'exécution d'une tâche. Cette fonctionnalité est utile pour la planification des ressources et le traitement des tâches urgentes.

Annuler une tâche

Vous pouvez mettre fin à une tâche en cours d'exécution ou en attente. Les opérations déjà effectuées sur les objets ne peuvent pas être annulées.

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

Exemple de réponse

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

API

Vous pouvez appeler l'API UpdateJobStatus pour définir le statut de la tâche sur Cancelled, ce qui arrête la tâche et libère ses ressources.

Consulter un rapport de tâche

Une fois la tâche terminée, le système génère un rapport d'exécution détaillé dans le chemin spécifié. Le rapport contient deux fichiers clés : un manifest nommé manifest.json et un rapport détaillé au format CSV. Ces fichiers fournissent le statut de traitement, le code de réponse HTTP et la raison de l'échec pour chaque objet, ce qui vous permet d'effectuer un dépannage et de valider les résultats.

Important

Quel que soit le statut d'une tâche (Running, Complete, Failed, Paused ou Cancelled), celle-ci peut contenir à la fois des objets traités avec succès et des objets ayant échoué. Consultez toujours le rapport détaillé pour confirmer les résultats d'exécution réels.

Emplacement de stockage du rapport

Les fichiers de rapport sont stockés dans le chemin que vous spécifiez dans le nœud <Report> lors de la création d'une tâche. Le format du chemin est le suivant :

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

Par exemple, si vous définissez les éléments suivants lors de la création de la tâche :

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

Les fichiers de rapport sont alors stockés dans le chemin suivant : my-bucket/batch-reports/<JobId>/results/

Structure du fichier de rapport

Le rapport se compose de deux parties :

1. Fichier manifest du rapport (manifest.json)

Il s'agit d'un fichier JSON contenant les métadonnées du rapport et l'emplacement du fichier de rapport CSV.

Exemple de fichier manifest pour une tâche réussie :

{
  "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"
}

Exemple de fichier manifest pour une tâche ayant échoué :

{
  "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"
}

Description des champs :

  • Format : version du format de rapport. La valeur est fixée à Report_CSV_20250901.

  • ReportCreationDate : heure de génération du rapport, au format UTC.

  • TaskExecutionStatus : statut d'exécution global de la tâche. Une valeur succeeded indique que toutes les tâches ont réussi, tandis qu'une valeur failed indique que toutes les tâches ont échoué.

  • ReportSchema : définitions des colonnes du fichier de rapport CSV.

2. Fichier de rapport détaillé CSV

Ce fichier contient les résultats de traitement détaillés pour chaque objet et comprend les colonnes suivantes :

  • Bucket : bucket dans lequel se trouve l'objet.

  • Key : nom de l'objet, encodé en URL.

  • VersionId : ID de version de l'objet. Ce champ est vide si le versioning n'est pas activé pour le bucket.

  • HTTPStatus : code d'état de la réponse HTTP. Une valeur de 200 indique un succès.

  • Error : description de l'erreur. Ce champ est vide si la tâche a réussi.

Exemple de rapport CSV pour des tâches réussies :

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,

Exemple de rapport CSV pour des tâches ayant échoué :

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

Télécharger et analyser le rapport

  1. Localisez le fichier de rapport : appelez l'API DescribeJob pour récupérer les détails de la tâche. Le chemin du rapport se trouve dans le nœud <Report> de la réponse.

  2. Téléchargez manifest.json : téléchargez le fichier manifeste depuis le chemin du rapport. Vérifiez les nœuds TaskExecutionStatus et Results pour déterminer l'état global de l'exécution.

  3. Téléchargez le rapport CSV : téléchargez le fichier de rapport CSV détaillé depuis le chemin indiqué dans le champ Results[ ].Key du fichier manifest.json.

  4. Analysez les résultats d'exécution :

    • Vérifiez la colonne HTTPStatus : un code d'état 2xx indique une réussite, tandis que les codes 4xx et 5xx indiquent un échec.

    • Pour les enregistrements ayant échoué, consultez la colonne Error afin d'obtenir le code d'erreur et les détails correspondants.

    • Comptez le nombre d'objets traités avec succès et ceux ayant échoué, puis comparez ces totaux au champ ProgressSummary renvoyé par l'opération DescribeJob pour valider les résultats.

Exemple : Télécharger un rapport à l'aide d'ossutil

# Download the report manifest file
ossutil cp oss://my-bucket/batch-reports/<JobId>/results/manifest.json ./

# Download the detailed CSV report
ossutil cp oss://my-bucket/batch-reports/<JobId>/results/report-0.csv ./

Codes d'erreur courants

Code d'état HTTP

Code d'erreur

Description

Solution

403

AccessDenied

Autorisations insuffisantes pour accéder à l'objet.

Vérifiez la configuration des autorisations du rôle IAM

404

NoSuchKey

L'objet n'existe pas.

Confirmez que le chemin de l'objet dans le fichier manifeste est correct.

400

InvalidArgument

Un argument non valide a été fourni.

Vérifiez les paramètres de l'opération, tels que le format des tags ou le type d'ACL.

409

InvalidObjectState

L'état de l'objet ne répond pas aux exigences de l'opération.

Confirmez que la classe de stockage de l'objet correspond au type d'opération.

Notes

  • Les fichiers de rapport consomment de l'espace de stockage et engendrent des frais. Nettoyez régulièrement les rapports historiques.

  • Les fichiers de rapport CSV pour les tâches à grande échelle peuvent être volumineux. Tenez compte de votre bande passante réseau avant de les télécharger.

  • Si vous définissez ReportScope sur FailedTasksOnly, le rapport inclut uniquement les objets ayant échoué.

Mise en production

Bonnes pratiques

Stratégies de planification des tâches

  • Contrôle de l'échelle : limitez le nombre d'objets dans une seule tâche à moins de 100 millions pour garantir une exécution stable. Divisez le traitement des données à grande échelle en plusieurs tâches afin d'atténuer les points de défaillance uniques.

  • Gestion des priorités : définissez des priorités de tâche raisonnables pour éviter que les tâches importantes ne soient bloquées. Estimez les durées d'exécution afin de planifier correctement les fenêtres de maintenance.

  • Remarques sur les opérations concurrentes : lorsque plusieurs tâches opèrent simultanément sur le même lot d'objets, l'ordre d'exécution n'est pas garanti. Évitez d'effectuer des opérations concurrentes sur le même objet.

Mesures d'optimisation des performances

  • Optimisation du fichier manifeste : organisez la structure du fichier manifeste pour éviter de créer des fichiers uniques excessivement volumineux, ce qui ralentirait l'analyse.

  • Utilisation du quota QPS : tirez pleinement parti du quota QPS indépendant pour garantir que les appels d'API métier ne soient pas affectés. Les opérations par lot ne consomment pas votre quota QPS.

  • Contrôle de la concurrence : limitez le nombre de tâches s'exécutant simultanément à trois ou moins afin d'éviter la compétition pour les ressources.

  • Évitement des points chauds : si des points chauds, tels qu'un préfixe ordonné lexicographiquement, existent dans la plage d'opération, la vitesse d'exécution de l'opération par lot peut être affectée. Dans les cas graves, cela peut entraîner l'échec de certaines opérations sur les fichiers.

Mécanismes de gestion des erreurs

  • Rapports détaillés : activez les rapports détaillés (ReportScope=AllTasks) pour obtenir des résultats d'exécution complets facilitant le dépannage.

  • Mécanisme de nouvelle tentative : dans de rares cas, si une opération par lot rencontre un problème lors de l'exécution, elle effectue automatiquement plusieurs nouvelles tentatives. Les frais finaux pour les requêtes API sont basés sur le nombre total d'appels API effectués.

  • Seuil d'échec : si le taux d'échec des tâches d'une job dépasse 20 %, l'intégralité de la tâche échoue immédiatement et s'arrête.

  • Anomalies de confirmation d'état : dans de rares cas, certaines opérations peuvent réussir mais être enregistrées comme ayant échoué dans le rapport d'exécution. Vérifiez systématiquement les éléments enregistrés comme ayant échoué.

Points clés pour la confirmation des résultats

  • Vérification de l'intégrité de l'exécution : une tâche peut avoir l'un des statuts suivants : Running, Complete, Failed, Paused ou Cancelled. Certains objets peuvent avoir été traités avec succès, tandis que d'autres ont pu échouer. Vérifiez le nombre de tâches réussies et échouées dans le rapport pour vous assurer que les résultats correspondent à vos attentes.

  • Suggestions pour la gestion des échecs :

    • Un statut Complete indique uniquement que la tâche est terminée, et non que tous les objets ont été traités avec succès. Vous devez consulter le rapport d'exécution pour plus de détails.

    • Analysez la cause des tâches ayant échoué et relancez-les. Pour les tâches partiellement échouées, vous pouvez créer une tâche de nouvelle tentative basée sur le rapport d'échec.

    • Pour les tâches ayant un statut Cancelled, Paused ou Failed, certains objets peuvent déjà avoir été traités avec succès. Vous devez vérifier les résultats.

Remarques sur les fichiers manifestes

Ordre d'exécution et cohérence des données

  • Ordre d'exécution : les opérations par lot sont effectuées sur les éléments de la liste du manifeste, mais l'ordre d'exécution n'est pas garanti.

  • Mises à jour de fichiers : si un objet est mis à jour avant que l'action ne soit effectuée, la tâche opère sur le fichier mis à jour. Ne modifiez pas les fichiers pendant l'exécution d'une tâche par lot.

  • Limitations de la méthode par préfixe : si vous utilisez un préfixe pour fournir le manifeste d'entrée, l'opération par lot ne peut pas détecter les fichiers ajoutés ou supprimés pendant son exécution. N'ajoutez ni ne supprimez de fichiers sous le préfixe pendant l'exécution d'une tâche par lot.

Exigences de format des fichiers manifestes

  • Encodage URL : les clés d'objet dans le fichier manifeste CSV doivent être encodées en URL. Sinon, l'analyse peut échouer.

  • Gestion des clés en double : si le fichier manifeste contient des clés en double, l'opération par lot est effectuée plusieurs fois, mais l'ordre des opérations n'est pas garanti.

Mécanisme de planification des ressources

Planification par priorité

Les priorités de tâche sont prises en charge, avec des valeurs allant de 0 à 2147483647.

Contrôle de la concurrence

Un seul compte peut exécuter un maximum de six tâches simultanées. Les tâches supplémentaires sont placées dans une file d'attente.

Transitions d'état des tâches

Important
  • Un statut Complete indique uniquement que le processus de la tâche est terminé. Cela ne signifie pas que tous les objets ont été traités avec succès.

  • Pour les tâches ayant un statut Cancelled, Paused ou Failed, certains objets peuvent déjà avoir été traités avec succès.

  • Vérifiez toujours le nombre de tâches réussies et échouées dans le rapport d'exécution pour confirmer les résultats réels.

Statut

Description

Actions utilisateur

New

La tâche a été créée et ses paramètres sont en cours de vérification.

Aucune

Preparing

Le système analyse le manifeste, vérifie les paramètres et compte le nombre total de fichiers.

Annulez la tâche.

Suspended

La tâche est suspendue et attend la confirmation de l'utilisateur. Elle échoue automatiquement si elle n'est pas confirmée dans les 14 jours.

Confirmez ou annulez la tâche.

Ready

La tâche est dans la file d'attente, en attente de planification des ressources.

Annulez la tâche.

Active

La tâche est en cours d'exécution. Ce statut inclut :• L'exécution des opérations sur les objets• La génération du rapport d'exécution

Annulez la tâche.

Pausing

La tâche est en cours de mise en pause en raison de contraintes de ressources.

Annulez la tâche.

Paused

La tâche est en pause et reprendra lorsque des ressources seront disponibles.

Annulez la tâche.

Complete

La tâche est terminée. Remarque : cela ne signifie pas que tous les objets ont été traités avec succès.

Consultez le rapport.

Cancelling

Une annulation a été initiée. Le système nettoie les tâches en cours d'exécution.

Aucune

Cancelled

La tâche a été annulée.

Consultez le rapport.

Failing

La tâche est en cours d'arrêt en raison de paramètres non valides ou d'un taux d'échec dépassant 20 %.

Aucune

Failed

La tâche a échoué.

Consultez le rapport.

Cleaning

Les données de la tâche sont en cours de nettoyage. Ce statut n'est pas visible par les utilisateurs.

Aucune

Cleaned

Le nettoyage des données de la tâche est terminé. Ce statut n'est pas visible par les utilisateurs.

Aucune

Stratégies de tolérance aux pannes

Validation des autorisations

  • Validez les autorisations d'accès pour le chemin source avant de créer une tâche afin d'éviter les interruptions d'exécution.

  • Assurez-vous que le rôle IAM dispose de toutes les autorisations requises pour l'opération cible.

  • Faites tourner régulièrement les AccessKeys des rôles IAM pour renforcer la sécurité.

Protection des données

  • Créez un snapshot ou une sauvegarde des données avant d'effectuer des opérations de suppression ou d'écrasement par lot.

  • Activez le versioning pour les données importantes afin de garantir une protection multi-versions.

  • Vérifiez la logique de l'opération dans un environnement de staging avant de l'exécuter dans un environnement de production.

Surveillance et alertes

  • Configurez des notifications d'événements pour les changements de statut des tâches afin de rester informé de la progression de l'exécution.

  • Surveillez les durées d'exécution des tâches pour détecter les tâches anormalement longues.

  • Définissez des alertes de seuil pour les taux d'échec afin de répondre rapidement aux anomalies.

Contrôle des coûts

Méthode de facturation

  • Cette fonctionnalité utilise un modèle de paiement à l'utilisation et facture 1 CNY pour 1 million d'objets traités.

  • Aucun frais n'est facturé pour la création ou la gestion des tâches. Vous ne payez que pour le nombre d'objets traités.

  • Cela permet de réduire les coûts d'exploitation de plus de 90 % par rapport à l'appel d'API pour chaque objet individuellement.

Suggestions d'optimisation

  • Tirez pleinement parti de la limite de six tâches simultanées pour éviter l'inactivité des ressources.

  • Supprimez régulièrement les rapports de tâches historiques pour réduire les coûts de stockage.

  • Nettoyez rapidement les tâches de test pour éviter des dépenses inutiles.

Quotas et limites

Élément

Limite

Tâches simultanées par compte

6

Tâches en file d'attente par compte

Généralement 1 000 par région

Nombre maximal d'objets par tâche

10 milliards

Taille maximale du fichier manifeste

10 To

Objets traités par compte et par jour

Généralement 1 milliard par région

Période de conservation de l'historique des tâches

Généralement 30 jours ou 10 000 enregistrements

Description de la facturation

OSS Batch Operations est un service de paiement à l'utilisation. Vous êtes facturé 1 CNY pour chaque million d'objets traités, sans frais supplémentaires pour la création de tâches, la gestion ou le transfert de données.

Important

Les frais standard de l'API OSS s'appliquent également aux opérations sur les objets. Par exemple, une opération de tag engendre des frais de requête PUT.

Exemples de facturation :

  • Tagging par lot de 5 millions d'objets : 5 millions / 1 million × 1 CNY = 5 CNY

  • Traitement de données à grande échelle de 5 milliards d'objets : 5 milliards / 1 million × 1 CNY = 5 000 CNY

Suggestions d'optimisation des coûts : regroupez les opérations par lot connexes en une seule tâche pour réduire la charge de gestion. Utilisez des préfixes précis ou des fichiers manifestes pour éviter de traiter des objets inutiles. Planifiez les opérations par lot non urgentes pendant les heures creuses.

FAQ

Pourquoi ma tâche reste-t-elle bloquée longtemps dans l'état Preparing ?

Les raisons possibles incluent les suivantes :

  • Le fichier manifeste est trop volumineux et prend beaucoup de temps à analyser.

  • L'analyse du préfixe couvre de nombreux objets.

  • La charge du système est élevée et la file d'attente de traitement est saturée.

Pour résoudre ce problème, vous pouvez diviser les grandes tâches en tâches plus petites ou utiliser un fichier manifeste pré-généré.

Que faire si certains objets ne parviennent pas à être traités ?

Suivez ces étapes :

  1. Téléchargez le rapport d'exécution de la tâche et analysez la cause de l'échec.

  2. Créez une nouvelle tâche de nouvelle tentative basée sur la liste des objets ayant échoué.

  3. Vérifiez que la configuration des autorisations est correcte et que le rôle IAM dispose des autorisations complètes.

Comment annuler une tâche en cours d'exécution ?

Vous pouvez utiliser la commande suivante :

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

Pourquoi obtiens-je une erreur d'autorisation refusée ?

Vérifiez les configurations d'autorisation suivantes :

  1. Assurez-vous que l'utilisateur RAM dispose de l'autorisation oss:CreateBatchJob.

  2. Vérifiez que le rôle IAM dispose des autorisations requises pour l'opération.

  3. Vérifiez les paramètres d'autorisation du bucket de destination pour les opérations inter-buckets.

Exigences de configuration du rôle IAM ?

Le rôle IAM doit inclure les éléments suivants :

  • Autorisations de lecture et d'écriture pour les ressources OSS.

  • Autorisations pour appeler les API Batch Operations.

  • Autorisations d'écriture pour le bucket de stockage des rapports.

Exemple de politique de confiance :

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

Comment puis-je améliorer la vitesse d'exécution des opérations par lot ?

Recommandations d'optimisation :

  1. Structurez vos fichiers manifestes pour éviter de créer des fichiers uniques trop volumineux.

  2. Évitez d'exécuter de grandes tâches pendant les heures de pointe.

  3. Attribuez des priorités aux tâches pour garantir que les tâches importantes soient exécutées en premier.

  4. Évitez d'inclure trop d'objets dans une seule tâche pour prévenir des durées d'exécution prolongées. Nous recommandons une limite de 100 millions d'objets par tâche.

  5. Évitez de diviser une grande tâche en trop nombreuses petites tâches, comme diviser 1 million d'objets en 1 000 tâches. Cela augmente le temps consacré à la planification des tâches.

Pourquoi la tâche prend-elle plus de temps que prévu pour s'exécuter ?

Les raisons possibles incluent les suivantes :

  • Les objets sont répartis de manière inégale, ce qui entraîne un temps de traitement plus long pour certains shards.

  • Les objets source ou de destination présentent des points chauds, ce qui peut ralentir le traitement.

  • Trop de tâches s'exécutent simultanément, ce qui entraîne une compétition pour les ressources.

Nous vous recommandons d'ajuster la stratégie de planification des tâches ou de réduire le nombre de tâches simultanées.