调用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>
命令行工具ossutil
CreateJob接口所对应的ossutil命令,请参见create-job。