CreateJob

调用CreateJob接口创建批量操作任务,对大量对象执行指定操作。

注意事项

  • 作业状态为Complete并不代表每个条目都执行成功,最终每个条目的执行状况需以报告为准。比如lifecycle依赖批量作业来打tagging过滤进行回收的,要以最终报告为准。

  • PutObjectTagging会覆盖既有的tagging。

  • AddObjectTagging会先取Tagging、再更新,非原子性,但是如果有并发操作,则仍然可能会有覆盖行为。

  • 如果有多个作业并发操作同一批Object,批量操作的执行顺序可能与提交顺序会不同,建议不要并发操作同一批Object。

  • Complete状态,仅代表Job完成,但不代表全部Object执行成功;同理Cancelled、Paused、Suspended、Failed状态,可能有部分Object执行成功。

  • 处于Suspended状态超过14天用户未确认的Job将会转成失败状态。

  • 设置Job状态为Cancelled时,Job不会马上取消,会有一段时间处于Cancelling状态。

权限说明

阿里云账号默认拥有全部权限。阿里云账号下的RAM用户或RAM角色默认没有任何权限,需要阿里云账号或账号管理员通过RAM PolicyBucket Policy授予操作权限。

API

Action

说明

CreateJob

oss:CreateJob

创建批量操作任务。

请求语法

POST /?batchJob HTTP/1.1
Host: oss-cn-hangzhou.aliyuncs.com
Authorization: SignatureValue
<?xml version="1.0" encoding="UTF-8"?>
<CreateJobRequest>
  <ConfirmationRequired>boolean</ConfirmationRequired>
  <Operation>
    <PutObjectTagging>
      <TagSet>
        <Tag>
          <Key>string</Key>
          <Value>string</Value>
        </Tag>
      </TagSet>
    </PutObjectTagging>
    <DeleteObjectTagging>
    </DeleteObjectTagging>
    <PutObjectAcl>
      <ObjectAcl>string</ObjectAcl>
    </PutObjectAcl>
    <RestoreObject>
      <Days>integer</Days>
      <Tier>string</Tier>
    </RestoreObject>
  </Operation>
  <Report>
    <Bucket>string</Bucket>
    <Enabled>boolean</Enabled>
    <Prefix>string</Prefix>
    <ReportScope>string</ReportScope>
  </Report>
  <ClientRequestToken>string</ClientRequestToken>
  <Manifest>
    <Location>
      <ETag>string</ETag>
      <Bucket>string</Bucket>
      <Object>string</Object>
      <VersionId>string</VersionId>
    </Location>
    <Spec>
      <Fields>string</Fields>
      <Format>string</Format>
    </Spec>
  </Manifest>
  <Description>string</Description>
  <Priority>integer</Priority>
  <RoleArn>string</RoleArn>
</CreateJobRequest>

请求头

此接口除支持公共请求头外,无特有请求头。更多信息,请参见公共请求头(Common Request Headers)

请求元素

名称

类型

是否必选

示例值

描述

CreateJobRequest

容器

批量作业任务的根节点。

子节点:ConfirmationRequired、Operation、Report、ClientRequestToken、Manifest、KeyPrefixManifestGenerator、Description、Priority、RoleArn

父节点:无

ConfirmationRequired

布尔值

false

作业执行前的确认。

子节点:无

父节点:CreateJobRequest

Description

字符串

批量操作任务描述

作业描述信息。

子节点:无

父节点:CreateJobRequest

Priority

整数

10

优先级。

子节点:无

父节点:CreateJobRequest

RoleArn

字符串

arn:acs:ram::uid:role/BatchOperationRole

IAM角色,OSS将使用该角色去执行批量操作作业。

子节点:无

父节点:CreateJobRequest

Operation

容器

执行批量作业的操作类型,只能包含一种操作。支持的操作类型包括PutObjectTagging、AddObjectTagging、DeleteObjectTagging、PutObjectAcl以及RestoreObject。

子节点:PutObjectTagging、AddObjectTagging、DeleteObjectTagging、PutObjectAcl、RestoreObject

父节点:CreateJobRequest

PutObjectTagging

容器

设置对象标签操作。

子节点:TagSet

父节点:Operation

TagSet

容器

是(当使用PutObjectTagging时)

tag key、value集合。

子节点:Tag

父节点:PutObjectTagging

Tag

容器

标签项。

子节点:Key、Value

父节点:TagSet

Key

字符串

Environment

标签键。

子节点:无

父节点:Tag

Value

字符串

Production

标签值。

子节点:无

父节点:Tag

DeleteObjectTagging

容器

删除对象标签操作,空节点。

子节点:无

父节点:Operation

PutObjectAcl

容器

设置对象ACL操作。

子节点:ObjectAcl

父节点:Operation

ObjectAcl

字符串

是(当使用PutObjectAcl时)

private

设置object acl,取值:default、private、public-read、public-read-write。

子节点:无

父节点:PutObjectAcl

RestoreObject

容器

恢复归档对象操作。

子节点:Days、Tier

父节点:Operation

Days

整数

7

设置归档、冷归档以及深度冷归档类型Object的解冻天数。归档类型Object解冻天数取值范围为1~7,冷归档以及深度冷归档类型Object解冻天数取值范围为1~365。

子节点:无

父节点:RestoreObject

Tier

字符串

Standard

冷归档、深度冷归档类型Object解冻优先级。冷归档类型:Standard(2~5小时)、Bulk(5~12小时);深度冷归档类型:Standard(48小时内)。

子节点:无

父节点:RestoreObject

Report

容器

输出报告配置节点。

子节点:Bucket、Enabled、Prefix、ReportScope

父节点:CreateJobRequest

Bucket

字符串

report-bucket

报告输出存放的存储空间(Bucket)。目标Bucket必须和批量操作任务在同一个地域(Region)。

子节点:无

父节点:Report

Enabled

布尔值

true

是否需要输出报告。

子节点:无

父节点:Report

Prefix

字符串

reports/

报告输出的前缀,可使其存放在某个子目录下。

子节点:无

父节点:Report

ReportScope

字符串

AllTasks

报告输出范围,取值:AllTasks、FailedTasksOnly,默认为AllTasks(全都输出)。

子节点:无

父节点:Report

ClientRequestToken

字符串

unique-token-123

用于确保请求幂等性的唯一标识符,长度1~64字符。

子节点:无

父节点:CreateJobRequest

Manifest

容器

条件必选

清单节点,与KeyPrefixManifestGenerator二选一。

子节点:Location、Spec

父节点:CreateJobRequest

Location

容器

是(当使用Manifest时)

清单位置。清单文件所在的Bucket必须和批量操作任务在同一个地域(Region)。

子节点:ETag、Bucket、Object、VersionId

父节点:Manifest

ETag

字符串

d41d8cd98f00b204e9800998ecf8427e

清单文件的ETag。

子节点:无

父节点:Location

Object

字符串

manifest.csv

清单对应的Object。

子节点:无

父节点:Location

VersionId

字符串

3/L4kqtJlcpXroDTDmJ+rmSpXd3dIbrHY+MTRCxf3vjVBH40Nr8X8gdRQBpUMLUo

清单对应的Object VersionId。

子节点:无

父节点:Location

Spec

容器

是(当使用Manifest时)

描述清单格式。

子节点:Fields、Format

父节点:Manifest

Format

字符串

OSS_BatchOperations_CSV_20250611

清单类型,OSS批量操作CSV格式或OSS清单报告CSV格式。

子节点:无

父节点:Spec

Fields

字符串

Bucket,Key,VersionId

如果是用户自己上传的CSV,需要定义CSV格式。

子节点:无

父节点:Spec

KeyPrefixManifestGenerator

容器

条件必选

基于前缀生成清单,与Manifest二选一。

子节点:SourceBucket、Prefix

父节点:CreateJobRequest

SourceBucket

字符串

是(当使用KeyPrefixManifestGenerator时)

source-bucket

清单的源Bucket。

子节点:无

父节点:KeyPrefixManifestGenerator

Prefix

字符串

prefix/

对象的前缀,用于筛选需要处理的对象。

子节点:无

父节点:KeyPrefixManifestGenerator

响应元素

名称

类型

示例值

描述

JobId

字符串

MzRjZGU2NGQ3YTY5NGRhMTkxZmZhYzY5OTM5YTcxYWU=

OSS为该任务生成的JobId,长度44个字符,不包含-、_,包含a-z、A-Z、0-9。

响应头

此接口仅涉及公共响应头。更多信息,请参见公共响应头(Common Response Headers)

示例

  • 请求示例

    POST /?batchJob HTTP/1.1
    Host: oss-cn-hangzhou.aliyuncs.com
    Authorization: SignatureValue
    <?xml version="1.0" encoding="UTF-8"?>
    <CreateJobRequest>
      <ConfirmationRequired>false</ConfirmationRequired>
      <Operation>
        <PutObjectTagging>
          <TagSet>
            <Tag>
              <Key>Environment</Key>
              <Value>Production</Value>
            </Tag>
          </TagSet>
        </PutObjectTagging>
      </Operation>
      <Report>
        <Bucket>report-bucket</Bucket>
        <Enabled>true</Enabled>
        <Prefix>batch-reports/</Prefix>
        <ReportScope>AllTasks</ReportScope>
      </Report>
      <ClientRequestToken>unique-token-123</ClientRequestToken>
      <Manifest>
        <Location>
          <ETag>d41d8cd98f00b204e9800998ecf8427e</ETag>
          <Bucket>manifest-bucket</Bucket>
          <Object>manifest.csv</Object>
        </Location>
        <Spec>
          <Fields>Bucket,Key</Fields>
          <Format>OSS_BatchOperations_CSV_20250611</Format>
        </Spec>
      </Manifest>
      <Description>批量设置对象标签任务</Description>
      <Priority>10</Priority>
      <RoleArn>arn:acs:ram::uid:role/BatchOperationRole</RoleArn>
    </CreateJobRequest>
  • 返回示例

    HTTP/1.1 200 OK
    <?xml version="1.0" encoding="UTF-8"?>
    <CreateJobResult>
       <JobId>MzRjZGU2NGQ3YTY5NGRhMTkxZmZhYzY5OTM5YTcxYWU=</JobId>
    </CreateJobResult>