O recurso Batch Operations permite processar até 10 bilhões de objetos em um único job. Execute operações como gerenciamento de tags, modificação de ACL e restauração de dados sem escrever código.
Escopo
O recurso Batch Operations está totalmente disponível nas regiões China (Hangzhou), Singapore e Germany (Frankfurt). Para utilizar este recurso nas regiões China (Shanghai), China (Shenzhen), China (Guangzhou), China (Qingdao), China (Beijing), China (Zhangjiakou), China (Hohhot), China (Ulanqab), China (Chengdu), China (Hong Kong) ou Indonesia (Jakarta), entre em contato com o Suporte Técnico para solicitar acesso.
Visão geral da operação
Crie uma função do RAM: Permita que o service OSS leia o arquivo de manifesto, execute operações em lote e gere um relatório.
Prepare um manifesto de entrada: Especifique os objetos a serem processados usando um arquivo de inventário do bucket (manifest.json), um prefixo ou um arquivo de manifesto CSV (manifest.csv).
Crie um job: Configure operações específicas, como aplicação de tags, definição de permissões ou restauração de objetos e envie o job.
Gerencie e mantenha o job: Monitore o status do job, confirme jobs pendentes, visualize o relatório de execução e ajuste a prioridade ou cancele o job conforme necessário.
Etapa 1: Criar uma função do RAM
Acesse o console RAM para criar uma função. Selecione Alibaba Cloud Service como tipo de entidade confiável e Object Storage Service como service confiável.
-
Crie e anexe uma política personalizada à função. O conteúdo da política é o seguinte. Substitua
your-bucketpelo nome real do seu 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/*" ] } ] } Anote o ARN da função, por exemplo,
acs:ram::<your-account-uid>:role/BatchRole. Você o utilizará nas etapas seguintes.
Etapa 2: Preparar um manifesto de entrada
As operações em lote exigem a especificação dos objetos a serem processados. Escolha um dos três métodos abaixo de acordo com o seu cenário:
Arquivo de inventário do bucket: Ideal para operações em lote recorrentes e de grande escala.
Prefixo: Processa todos os objetos em uma pasta específica.
Arquivo de manifesto CSV: Um arquivo CSV que lista os objetos a serem processados.
Arquivo de inventário do bucket
Utilize um arquivo de manifesto gerado automaticamente pelo 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>
Descrição da configuração
ETag: O valor ETag do arquivo
manifest.json.Formato:
OSS_InventoryReport_CSV_20250611
Prefixo
Gera uma lista de objetos com base em um prefixo especificado.
<KeyPrefixManifestGenerator>
<SourceBucket>my-bucket</SourceBucket>
<Prefix>documents/2024/</Prefix>
</KeyPrefixManifestGenerator>
Arquivo de manifesto CSV
Lista objetos específicos usando um arquivo CSV. O arquivo de manifesto CSV deve ser enviado para o OSS e estar localizado na mesma região do job em lote.
<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>
Descrição da configuração
ETag: O valor ETag do arquivo
manifest.csv.-
Fields: As colunas no arquivo CSV.
Sem versionamento ativado:
Bucket,KeyCom versionamento ativado:
Bucket,Key,VersionId
Formato:
OSS_BatchOperations_CSV_20250611
Requisitos de formato do arquivo CSV
Codificação do arquivo: UTF-8.
Separador de campos: Vírgula (,).
Codificação da chave do objeto: Codificada em URL (por exemplo,
documents%2Freport1.pdf).Comentários: O arquivo CSV não pode conter linhas de comentário.
Exemplos de arquivo CSV
-
Sem versionamento ativado
my-bucket,documents%2Freport1.pdf my-bucket,documents%2Freport2.pdf my-bucket,images%2Fphoto1.jpg -
Com versionamento ativado
my-bucket,important%2Fdata.json,3/L4kqtJlcpXroDTDmJ+rmSpXd3dIbrHY+MTRCxf3vjVBH40Nr8X8gdRQBpUMLUo my-bucket,config%2Fsettings.xml,null
Etapa 3: Criar um job
Substituir tags em lote
A operação de substituição remove todas as tags existentes em um objeto. Um único objeto pode ter até 10 tags. O comprimento total de todas as chaves e valores de tag não pode exceder 1 KB. As chaves de tag diferenciam maiúsculas de minúsculas e devem ser únicas.
Se uma regra de ciclo de vida depender desta operação, revise o relatório final do job. O status final de um job pode ser Running, Complete, Failed, Paused ou Cancelled. Alguns objetos podem ser processados com sucesso enquanto outros falham. Verifique o relatório para confirmar se o número de tarefas bem-sucedidas e com falha atende às suas expectativas.
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>
<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>
Prefix
<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>
CSV manifest file
<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>
Exemplo de resposta
<?xml version="1.0" encoding="UTF-8"?>
<CreateJobResult>
<JobId>ODRiZWQ5Njc5ZTE0NDE5NTlmNjJmZDlkMTk2ODI2NDU=</JobId>
</CreateJobResult>
Após a criação, o job entra no estado Suspended. Visualize o status do job para confirmar se a configuração está correta e, em seguida, confirme o job pendente manualmente.
API
Chame a API CreateJob para criar um job em lote. Na configuração XML, especifique o tipo de operação <PutObjectTagging> no nó <Operation>. Defina o novo conjunto de tags no <TagSet> para substituir completamente as tags existentes do objeto.
Adicionar tags em lote
A operação de adição de tags em lote adiciona novas tags às tags existentes de um objeto, preservando todas as originais. Isso é útil para adicionar tags suplementares. Observe que, se a chave de uma nova tag for igual à chave de uma tag existente, o valor da nova tag sobrescreverá o valor existente. Como esta não é uma operação atômica, há risco de perda de tags em cenários de alta concorrência. Evite executar esta operação simultaneamente com outras operações de tag para garantir a consistência dos dados.
Se uma regra de ciclo de vida depender desta operação, revise o relatório final do job. O status final de um job pode ser Running, Complete, Failed, Paused ou Cancelled. Alguns objetos podem ser processados com sucesso enquanto outros falham. Verifique o relatório para confirmar se o número de tarefas bem-sucedidas e com falha atende às suas expectativas.
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>
<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>
Prefix
<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>
CSV manifest file
<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>
Exemplo de resposta
<?xml version="1.0" encoding="UTF-8"?>
<CreateJobResult>
<JobId>Nzg5ZjE3ZTU5OGMxNDZjZDk0YjJiODMzZDZiZjA0ZmU=</JobId>
</CreateJobResult>
Após a criação, o job entra no estado Suspended. Visualize o status do job para confirmar se a configuração está correta e, em seguida, confirme o job pendente manualmente.
API
Chame a API CreateJob para criar um job em lote. Na configuração XML, especifique o tipo de operação <AddObjectTagging> no nó <Operation>. Defina as novas tags no <TagSet>. O sistema adiciona as novas tags preservando as existentes.
Excluir tags em lote
A operação de exclusão de tags em lote remove todas as tags dos objetos especificados. Após a operação, os objetos não terão tags. Isso é útil para limpar tags.
Esta operação é irreversível. Uma vez executada, as tags excluídas não podem ser recuperadas. Teste esta operação em um ambiente de homologação antes de executá-la em produção para garantir que não afete sua lógica de negócios.
Se uma regra de ciclo de vida depender desta operação, revise o relatório final do job. O status final de um job pode ser Running, Complete, Failed, Paused ou Cancelled. Alguns objetos podem ser processados com sucesso enquanto outros falham. Verifique o relatório para confirmar se o número de tarefas bem-sucedidas e com falha atende às suas expectativas.
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>
<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>
Prefix
<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>
CSV manifest file
<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>
Exemplo de resposta
<?xml version="1.0" encoding="UTF-8"?>
<CreateJobResult>
<JobId>NTVlYmQ4ZmQyOTM0NDJmY2E2NmNjYTUwNjU1ZGRkMGM=</JobId>
</CreateJobResult>
Após a criação, o job entra no estado Suspended. Visualize o status do job para confirmar se a configuração está correta e, em seguida, confirme o job pendente manualmente.
API
Chame a API CreateJob para criar um job em lote. Na configuração XML, especifique o tipo de operação <DeleteObjectTagging/> (sem parâmetros adicionais) no nó <Operation>. O sistema excluirá todas as tags dos objetos especificados.
Modificar permissões em lote
A modificação de permissões em lote suporta quatro tipos de lista de controle de acesso (ACL): private (apenas o proprietário pode ler e gravar), public-read (qualquer pessoa pode ler, mas apenas o proprietário pode gravar), public-read-write (qualquer pessoa pode ler e gravar) e default (herda as permissões do bucket). As alterações de permissão entram em vigor imediatamente e afetam diretamente o acesso ao objeto. Escolha o tipo de permissão apropriado com cuidado, de acordo com as necessidades do seu negócio.
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>
Exemplo de resposta
<?xml version="1.0" encoding="UTF-8"?>
<CreateJobResult>
<JobId>YWNsR29iMTIzNDU2Nzg5MA==</JobId>
</CreateJobResult>
Após a criação, o job entra no estado Suspended. Visualize o status do job para confirmar se a configuração está correta e, em seguida, confirme o job pendente manualmente.
API
Chame a API CreateJob para criar um job em lote. Na configuração XML, especifique o tipo de operação <PutObjectAcl> no nó <Operation> e defina a permissão alvo (private/public-read/public-read-write/default) usando o parâmetro <ObjectAcl>.
Restauração de dados em lote
A operação de restauração em lote suporta objetos nas classes de armazenamento Archive, ColdArchive e DeepColdArchive. A restauração de objetos Archive geralmente é concluída em até uma hora, e os objetos restaurados permanecem acessíveis por 1 a 7 dias. A classe de armazenamento ColdArchive suporta o modo Standard (2 a 5 horas) e o modo Bulk (5 a 12 horas). A classe de armazenamento DeepColdArchive suporta apenas o modo Standard, que leva até 48 horas para ser concluído. É possível definir o número de dias em que o objeto restaurado permanece acessível com um valor de 1 a 365.
Se a classe de armazenamento de um objeto não corresponder ao modo de restauração ou ao número de dias especificado, a operação para esse objeto falhará.
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>
Exemplo de resposta
<?xml version="1.0" encoding="UTF-8"?>
<CreateJobResult>
<JobId>cmVzdG9yZUpvYjEyMzQ1Njc4OTA=</JobId>
</CreateJobResult>
Após a criação, o status do job é definido como Suspended. Visualize o status do job para confirmar se a configuração está correta e, em seguida, confirme o job para execução manualmente.
API
Chame a API CreateJob para criar um job em lote. Na configuração XML, especifique a operação <RestoreObject> no nó <Operation>. Defina o número de dias em que o objeto restaurado fica acessível (1 a 365) usando o parâmetro <Days> e o modo de restauração (Standard ou Bulk) usando o parâmetro <Tier>.
Etapa 4: Gerenciamento e O&M de jobs
Visualizar status do job
Após criar um job, monitore e confirme seu status consultando seus detalhes. Os detalhes do job fornecem uma visão completa do status, incluindo progresso de execução e parâmetros de configuração.
Um status de job 'Complete' não garante que todos os objetos foram processados com sucesso. Visualize o relatório detalhado para confirmar os resultados finais.
ossutil 2.0
ossutil api invoke-operation --op-name describe-job --method GET --parameters batchJob --parameters batchJobId=<JobId> --endpoint oss-cn-hangzhou.aliyuncs.com
Exemplo de resposta
<?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>
Descrição do status:
ConfirmationRequired: true- A confirmação é obrigatória.Status: Suspended- O job está pausado e aguardando confirmação do usuário.TotalNumberOfTasks: 3- O job processará 3 objetos.NumberOfTasksSucceeded: 0- O job ainda não foi iniciado.ElapsedTimeInActiveSeconds: -1- O tempo de execução é -1 porque o job não foi iniciado.
API
Chame a API DescribeJob para recuperar informações detalhadas sobre um job específico, incluindo status de execução, estatísticas de progresso, parâmetros de configuração e mensagens de erro.
Confirmar um job pendente
Altere o status do job de Suspended para Ready para colocá-lo na fila de execução. Se um job não for confirmado dentro de 14 dias, seu status mudará automaticamente para 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
Exemplo de resposta
<?xml version="1.0" encoding="UTF-8"?>
<UpdateJobStatusResult>
<JobId>NGFhNmFmZDRlNTcxNDE2OGFhY2FjYWQyNDcxYjc3YzM=</JobId>
<Status>Ready</Status>
</UpdateJobStatusResult>
API
Chame a API UpdateJobStatus para confirmar um job para execução. Isso altera o status do job de Suspended para Ready e o coloca na fila de execução.
Listar jobs em lotes
Visualize todos os jobs e use o recurso de consulta em lote para filtrar a lista por status e intervalo de tempo de criação. Também é possível limitar o número de resultados e usar consultas paginadas para gerenciar muitos jobs. Por padrão, os resultados são classificados por tempo de criação em ordem decrescente, com os jobs mais recentes aparecendo primeiro.
ossutil 2.0
ossutil api invoke-operation --op-name list-jobs --method GET --parameters batchJob --parameters maxKeys=100 --endpoint oss-cn-hangzhou.aliyuncs.com
Exemplo de resposta
<?xml version="1.0" encoding="UTF-8"?>
<ListJobsResult>
<Jobs>
<Job>
<JobId>OTE5ZGU1NWMxNjkyNGFkMjhkYTNmOGEzNTU2YmJiOWE=</JobId>
<Status>Complete</Status>
<CreationTime>1761666548</CreationTime>
</Job>
</Jobs>
</ListJobsResult>
API
Chame a API ListJobs para consultar a lista de jobs em lote na sua conta. Isso permite filtrar por status e intervalo de tempo, além de usar consultas paginadas para facilitar o gerenciamento e monitoramento de jobs.
Ajustar prioridade do job
O valor de prioridade varia de 0 a 2147483647, onde um valor maior indica maior prioridade. A prioridade do job não garante uma ordem estrita de execução. Em vez disso, o OSS tenta alocar mais recursos para jobs de maior prioridade.
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
Exemplo de resposta
<?xml version="1.0" encoding="UTF-8"?>
<UpdateJobPriorityResult>
<JobId>OTE5ZGU1NWMxNjkyNGFkMjhkYTNmOGEzNTU2YmJiOWE=</JobId>
<Priority>1000</Priority>
</UpdateJobPriorityResult>
API
Chame a API UpdateJobPriority para ajustar a prioridade de execução de um job. Isso é útil para agendamento de recursos e processamento de jobs urgentes.
Cancelar um job
Encerre um job que esteja em execução ou aguardando execução. Operações concluídas em objetos não podem ser revertidas.
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
Exemplo de resposta
<?xml version="1.0" encoding="UTF-8"?>
<UpdateJobStatusResult>
<JobId>OTE5ZGU1NWMxNjkyNGFkMjhkYTNmOGEzNTU2YmJiOWE=</JobId>
<Status>Cancelled</Status>
</UpdateJobStatusResult>
API
Chame a API UpdateJobStatus para definir o status do job como Cancelled, o que interrompe o job e libera seus recursos.
Visualizar um relatório de job
Após a conclusão de um job, o sistema gera um relatório de execução detalhado no caminho especificado. O relatório contém dois arquivos principais: um manifesto chamado manifest.json e um relatório detalhado em formato CSV. Esses arquivos fornecem o status de processamento, código de resposta HTTP e motivo da falha para cada objeto, permitindo solução de problemas e validação de resultados.
Independentemente do status do job (Running, Complete, Failed, Paused ou Cancelled), ele ainda pode conter objetos processados com sucesso e com falha. Sempre verifique o relatório detalhado para confirmar os resultados reais da execução.
Local de armazenamento do relatório
Os arquivos de relatório são armazenados no caminho especificado no nó <Report> ao criar um job. O formato do caminho é:
<Bucket>/<Prefix>/<JobId>/results/
Por exemplo, se você definir o seguinte ao criar o job:
<Report>
<Bucket>my-bucket</Bucket>
<Prefix>batch-reports/</Prefix>
<ReportScope>AllTasks</ReportScope>
</Report>
Os arquivos de relatório serão armazenados no seguinte caminho: my-bucket/batch-reports/<JobId>/results/
Estrutura do arquivo de relatório
O relatório consiste em duas partes:
1. Arquivo de manifesto do relatório (manifest.json)
Este é um arquivo JSON que contém os metadados do relatório e a localização do arquivo de relatório CSV.
Exemplo de arquivo de manifesto para um job bem-sucedido:
{
"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"
}
Exemplo de arquivo de manifesto para um job com falha:
{
"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"
}
Descrições dos campos:
Format: A versão do formato do relatório. O valor é fixo emReport_CSV_20250901.ReportCreationDate: O horário em que o relatório foi gerado, em UTC.TaskExecutionStatus: O status geral de execução do job. Um valor desucceededindica que todas as tarefas foram bem-sucedidas, e um valor defailedindica que todas as tarefas falharam.ReportSchema: As definições de colunas para o arquivo de relatório CSV.
2. Arquivo de relatório detalhado CSV
Este arquivo contém os resultados detalhados do processamento para cada objeto e inclui as seguintes colunas:
Bucket: O bucket onde o objeto está localizado.Key: O nome do objeto, codificado em URL.VersionId: O ID da versão do objeto. Este campo estará vazio se o versionamento não estiver ativado para o bucket.HTTPStatus: O código de status de resposta HTTP. Um valor de 200 indica sucesso.Error: Uma descrição do erro. Este campo estará vazio se a tarefa for bem-sucedida.
Exemplo de relatório CSV para tarefas bem-sucedidas:
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,
Exemplo de relatório CSV para tarefas com falha:
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""}"
Baixar e analisar o relatório
Localize o arquivo de relatório: Chame a API DescribeJob para recuperar os detalhes do job. O caminho do relatório está no nó
<Report>da resposta.Baixe o manifest.json: Baixe o arquivo de manifesto do caminho do relatório. Verifique os nós
TaskExecutionStatuseResultspara determinar o status geral da execução.Baixe o relatório CSV: Baixe o arquivo de relatório CSV detalhado do caminho especificado no campo
Results[ ].Keydo arquivo manifest.json.-
Analise os resultados da execução:
Verifique a coluna
HTTPStatus: Um código de status 2xx indica sucesso, enquanto códigos 4xx e 5xx indicam falha.Para registros com falha, verifique a coluna
Errorpara obter o código de erro e detalhes do erro.Conte o número de objetos bem-sucedidos e com falha e compare essas contagens com o
ProgressSummaryretornado pela operação DescribeJob para verificar os resultados.
Exemplo: Baixar um relatório usando 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 ./
Códigos de erro comuns
|
Código de status HTTP |
Código de erro |
Descrição |
Solução |
|
403 |
|
Permissões insuficientes para acessar o objeto. |
Verifique a configuração de permissões da função IAM |
|
404 |
|
O objeto não existe. |
Confirme se o caminho do objeto no arquivo de manifesto está correto. |
|
400 |
|
Um argumento inválido foi fornecido. |
Verifique os parâmetros da operação, como o formato da tag ou tipo de ACL. |
|
409 |
|
O estado do objeto não atende aos requisitos da operação. |
Confirme se a classe de armazenamento do objeto corresponde ao tipo de operação. |
Observações
Os arquivos de relatório consomem espaço de armazenamento e geram taxas de armazenamento. Limpe relatórios históricos regularmente.
Arquivos de relatório CSV para jobs de grande escala podem ser grandes. Considere sua largura de banda de rede antes de baixá-los.
Se você definir
ReportScopecomoFailedTasksOnly, o relatório incluirá apenas os objetos com falha.
Entrando em produção
Melhores práticas
Estratégias de planejamento de jobs
Controle de escala: Limite o número de objetos em um único job a menos de 100 milhões para garantir execução estável. Divida o processamento de dados em grande escala em vários jobs para mitigar pontos únicos de falha.
Gerenciamento de prioridade: Defina prioridades de job razoáveis para evitar que jobs importantes sejam bloqueados. Estime os tempos de execução para agendar janelas de manutenção adequadamente.
Observações sobre operações concorrentes: Quando vários jobs operam no mesmo lote de objetos simultaneamente, a ordem de execução não é garantida. Evite realizar operações concorrentes no mesmo objeto.
Medidas de otimização de desempenho
Otimização do arquivo de manifesto: Organize a estrutura do arquivo de manifesto para evitar a criação de arquivos únicos excessivamente grandes, o que pode retardar a análise.
Utilização da cota de QPS: Aproveite ao máximo a cota independente de QPS para garantir que as chamadas de API de negócios não sejam afetadas. Operações em lote não consomem sua cota de QPS.
Controle de concorrência: Limite o número de jobs executados simultaneamente a três ou menos para evitar competição de recursos.
Evitar hot spots: Se existirem hot spots, como um prefixo ordenado lexicograficamente, no escopo da operação, a velocidade de execução da operação em lote pode ser afetada. Em casos graves, isso pode causar falha em algumas operações de arquivo.
Mecanismos de tratamento de erros
Relatórios detalhados: Ative relatórios detalhados (ReportScope=AllTasks) para obter resultados completos de execução para solução de problemas.
Mecanismo de nova tentativa: Em casos raros, se uma operação em lote encontrar um problema durante a execução, ela tentará novamente automaticamente várias vezes. As cobranças finais de solicitação de API são baseadas no número total de chamadas de API feitas.
Limiar de falha: Se a taxa de falha das tarefas em um job exceder 20%, todo o job falhará imediatamente e parará de ser executado.
Anomalias na confirmação de status: Em casos raros, algumas operações podem ser bem-sucedidas, mas registradas como falhas no relatório de execução. Verifique novamente quaisquer itens registrados como falhas.
Pontos-chave para confirmação de resultados
Verificação de integridade da execução: Um job pode ter um dos seguintes status: Running, Complete, Failed, Paused ou Cancelled. Alguns objetos podem ter sido processados com sucesso, enquanto outros podem ter falhado. Verifique o número de tarefas bem-sucedidas e com falha no relatório para garantir que os resultados atendam às suas expectativas.
-
Sugestões para lidar com falhas:
Um status Complete indica apenas que o job terminou, não que todos os objetos foram processados com sucesso. Verifique o relatório de execução para obter detalhes.
Analise a causa das tarefas com falha e tente novamente. Para jobs com falhas parciais, crie um job de nova tentativa com base no relatório de falhas.
Para jobs com status Cancelled, Paused ou Failed, alguns objetos podem já ter sido processados com sucesso. Verifique os resultados.
Observações sobre arquivos de manifesto
Ordem de execução e consistência de dados
Ordem de execução: Operações em lote são realizadas nos itens da lista de manifesto, mas a ordem de execução não é garantida.
Atualizações de arquivo: Se um objeto for atualizado antes da ação ser realizada, o job operará no arquivo atualizado. Não modifique arquivos enquanto um job em lote estiver em execução.
Limitações do método de prefixo: Se você usar um prefixo para fornecer o manifesto de entrada, a operação em lote não poderá detectar arquivos adicionados ou excluídos durante sua execução. Não adicione ou exclua arquivos sob o prefixo enquanto um job em lote estiver em execução.
Requisitos de formato do arquivo de manifesto
Codificação URL: As chaves de objeto no arquivo de manifesto CSV devem ser codificadas em URL. Caso contrário, a análise pode falhar.
Tratamento de chaves duplicadas: Se o arquivo de manifesto contiver chaves duplicadas, a operação em lote será realizada várias vezes, mas a ordem das operações não é garantida.
Mecanismo de agendamento de recursos
Agendamento por prioridade
Prioridades de job são suportadas, com valores variando de 0 a 2147483647.
Controle de concorrência
Uma única conta pode executar no máximo seis jobs simultâneos. Jobs adicionais são colocados em uma fila de espera.
Transições de status do job
Um status Complete indica apenas que o processo do job terminou. Não significa que todos os objetos foram processados com sucesso.
Para jobs com status Cancelled, Paused ou Failed, alguns objetos podem já ter sido processados com sucesso.
Sempre verifique o número de tarefas bem-sucedidas e com falha no relatório de execução para confirmar os resultados reais.
|
Status |
Descrição |
Ações do usuário |
|
New |
O job foi criado e seus parâmetros estão sendo verificados. |
Nenhuma |
|
Preparing |
O sistema está analisando o manifesto, verificando parâmetros e contando o número total de arquivos. |
Cancele o job. |
|
Suspended |
O job está suspenso e aguardando confirmação do usuário. Falha automaticamente se não for confirmado dentro de 14 dias. |
Confirme ou cancele o job. |
|
Ready |
O job está na fila, aguardando agendamento de recursos. |
Cancele o job. |
|
Active |
O job está em execução. Este status inclui: • Realização de operações em objetos • Geração do relatório de execução |
Cancele o job. |
|
Pausing |
O job está sendo pausado devido a restrições de recursos. |
Cancele o job. |
|
Paused |
O job está pausado e será retomado quando houver recursos disponíveis. |
Cancele o job. |
|
Complete |
O job foi concluído. Nota: Isso não significa que todos os objetos foram processados com sucesso. |
Visualize o relatório. |
|
Cancelling |
Um cancelamento foi iniciado. O sistema está limpando tarefas em execução. |
Nenhuma |
|
Cancelled |
O job foi cancelado. |
Visualize o relatório. |
|
Failing |
O job está sendo encerrado devido a parâmetros inválidos ou taxa de falha superior a 20%. |
Nenhuma |
|
Failed |
O job falhou. |
Visualize o relatório. |
|
Cleaning |
Os dados do job estão sendo limpos. Este status não é visível para os usuários. |
Nenhuma |
|
Cleaned |
A limpeza dos dados do job foi concluída. Este status não é visível para os usuários. |
Nenhuma |
Estratégias de tolerância a falhas
Validação de permissões
Valide as permissões de acesso para o caminho de origem antes de criar um job para evitar interrupções na execução.
Garanta que a função IAM tenha todas as permissões necessárias para a operação alvo.
Faça rodízio das AccessKeys para funções IAM regularmente para aumentar a segurança.
Proteção de dados
Crie um snapshot ou backup de dados antes de realizar operações de exclusão ou sobrescrita em lote.
Ative o versionamento para dados importantes para garantir proteção multiversão.
Verifique a lógica da operação em um ambiente de homologação antes de executá-la em produção.
Monitoramento e alertas
Configure notificações de eventos para alterações de status do job para manter-se informado sobre o progresso da execução.
Monitore os tempos de execução do job para detectar jobs com duração anormalmente longa.
Configure alertas de limiar para taxas de falha para responder rapidamente a anomalias.
Controle de custos
Método de faturamento
Este recurso utiliza um modelo de pagamento conforme o uso e cobra CNY 1 por 1 milhão de objetos processados.
Não há cobrança para criação ou gerenciamento de jobs. Você paga apenas pelo número de objetos processados.
Isso pode reduzir os custos operacionais em mais de 90% em comparação com a chamada de APIs para cada objeto individualmente.
Sugestões de otimização
Utilize plenamente o limite de seis jobs simultâneos para evitar ociosidade de recursos.
Exclua regularmente relatórios de jobs históricos para reduzir custos de armazenamento.
Limpe prontamente jobs de teste para evitar despesas desnecessárias.
Cotas e limites
|
Item |
Limite |
|
Jobs simultâneos por conta |
6 |
|
Jobs na fila por conta |
Geralmente 1.000 por região |
|
Máximo de objetos por job |
10 bilhões |
|
Tamanho máximo do arquivo de manifesto |
10 TB |
|
Objetos processados por conta por dia |
Geralmente 1 bilhão por região |
|
Período de retenção do histórico de jobs |
Geralmente 30 dias ou 10.000 registros |
Descrição do faturamento
O OSS Batch Operations é um service de pagamento conforme o uso. É cobrado CNY 1 para cada 1 milhão de objetos processados, sem taxas adicionais para criação de jobs, gerenciamento ou transferência de dados.
Taxas padrão de API do OSS também se aplicam a operações em objetos. Por exemplo, uma operação de tag incorre em uma taxa de solicitação PUT.
Exemplos de faturamento:
Aplicação de tags em lote em 5 milhões de objetos: 5 milhões / 1 milhão × CNY 1 = CNY 5
Processamento de dados em grande escala de 5 bilhões de objetos: 5 bilhões / 1 milhão × CNY 1 = CNY 5.000
Sugestões de otimização de custos: Consolide operações em lote relacionadas em um único job para reduzir a sobrecarga de gerenciamento. Use prefixos precisos ou arquivos de manifesto para evitar o processamento de objetos desnecessários. Agende operações em lote não urgentes fora dos horários de pico de negócios.
FAQ
Por que meu job está preso no estado Preparing por muito tempo?
Possíveis razões incluem:
O arquivo de manifesto é muito grande e leva muito tempo para ser analisado.
A varredura de prefixo abrange muitos objetos.
A carga do sistema está alta e a fila de processamento está ocupada.
Para resolver isso, divida jobs grandes em menores ou use um arquivo de manifesto pré-gerado.
O que devo fazer se alguns objetos falharem no processamento?
Siga estas etapas:
Baixe o relatório de execução do job e analise a causa da falha.
Crie um novo job de nova tentativa com base na lista de objetos com falha.
Verifique se a configuração de permissões está correta e se a função IAM tem permissões completas.
Como cancelo um job em execução?
Use o seguinte comando:
POST /?batchJobStatus&batchJobId=<JobId>&requestedJobStatus=Cancelled&statusUpdateReason=User cancelled HTTP/1.1
Host: oss-cn-hangzhou.aliyuncs.com
Authorization: <Signature information>
Por que recebo um erro de permissão negada?
Verifique as seguintes configurações de permissão:
Garanta que o usuário RAM tenha a permissão
oss:CreateBatchJob.Verifique se a função IAM tem as permissões necessárias para a operação.
Verifique as configurações de permissão do bucket de destino para operações entre buckets.
Requisitos de configuração da função IAM?
A função IAM deve incluir o seguinte:
Permissões de leitura e gravação para recursos OSS.
Permissões para chamar APIs do Batch Operations.
Permissões de gravação para o bucket de armazenamento de relatórios.
Exemplo de política de confiança:
{
"Statement": [
{
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": {
"Service": ["oss.aliyuncs.com"]
}
}
]
}
Como posso melhorar a velocidade de execução das operações em lote?
Recomendações de otimização:
Estruture seus arquivos de manifesto para evitar a criação de arquivos únicos muito grandes.
Evite executar jobs grandes durante o horário de pico de negócios.
Atribua prioridades de job para garantir que jobs importantes sejam executados primeiro.
Evite incluir muitos objetos em um único job para prevenir longos tempos de execução. Recomendamos um limite de 100 milhões de objetos por job.
Evite dividir um job grande em muitos jobs menores, como dividir 1 milhão de objetos em 1.000 jobs. Isso aumenta o tempo gasto no agendamento de tarefas.
Por que o job está demorando mais do que o esperado para ser executado?
Possíveis razões incluem:
Objetos distribuídos de forma desigual, o que faz com que alguns shards levem mais tempo para serem processados.
Os objetos de source ou destino têm hot spots, o que pode retardar o processamento.
Muitos jobs estão sendo executados simultaneamente, o que leva à competição de recursos.
Recomendamos ajustar a estratégia de agendamento de jobs ou reduzir o número de jobs simultâneos.