调用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 Policy或Bucket Policy授予操作权限。
API | Action | 说明 |
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 | 清单类型。取值:
子节点:无 父节点: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>