create-job命令用于创建批量操作任务,对大量Object执行指定操作。
注意事项
阿里云账号默认拥有创建批量操作任务的权限。如果您需要通过RAM用户或者STS的方式进行操作,您必须拥有oss:CreateJob权限。具体操作,请参见为RAM用户授予自定义的权限策略。
-
Operation中只能包含一种操作类型。 -
Manifest与KeyPrefixManifestGenerator二选一,分别用于指定已有清单文件和基于前缀自动生成清单。 -
报告输出的Bucket以及清单文件所在的Bucket,必须与批量操作任务在同一地域(Region)。
命令格式
ossutil api create-job --create-job-request value
|
参数 |
类型 |
说明 |
|
--create-job-request |
string |
批量操作任务的配置容器,支持XML和JSON格式。当选项值包含 |
--create-job-request
--create-job-request配置选项支持XML和JSON语法,当选项值包含file://前缀时,表示从文件中读取配置。XML语法如下:
<?xml version="1.0" encoding="UTF-8"?>
<CreateJobRequest>
<ConfirmationRequired>boolean</ConfirmationRequired>
<Operation>
<PutObjectTagging>
<TagSet>
<Tag>
<Key>string</Key>
<Value>string</Value>
</Tag>
</TagSet>
</PutObjectTagging>
<AddObjectTagging>
<TagSet>
<Tag>
<Key>string</Key>
<Value>string</Value>
</Tag>
</TagSet>
</AddObjectTagging>
<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>
<KeyPrefixManifestGenerator>
<SourceBucket>string</SourceBucket>
<Prefix>string</Prefix>
</KeyPrefixManifestGenerator>
<Description>string</Description>
<Priority>integer</Priority>
<RoleArn>string</RoleArn>
</CreateJobRequest>
|
参数 |
类型 |
是否必填 |
说明 |
|
ConfirmationRequired |
Boolean |
否 |
任务执行前是否需要确认。设置为true时,任务创建后进入Suspended状态,需通过update-job-status命令将状态更新为Ready后才会继续执行。 |
|
Operation |
Container |
是 |
批量作业的操作类型,只能包含一种操作。支持的操作类型包括PutObjectTagging、AddObjectTagging、DeleteObjectTagging、PutObjectAcl和RestoreObject。 |
|
Operation.PutObjectTagging.TagSet.Tag.Key |
String |
是(当使用PutObjectTagging时) |
标签键。 |
|
Operation.PutObjectTagging.TagSet.Tag.Value |
String |
是(当使用PutObjectTagging时) |
标签值。 |
|
Operation.PutObjectAcl.ObjectAcl |
String |
是(当使用PutObjectAcl时) |
Object的访问控制列表(ACL)。取值:default、private、public-read、public-read-write。 |
|
Operation.RestoreObject.Days |
Integer |
否 |
归档、冷归档以及深度冷归档类型Object的解冻天数。归档类型取值范围为1~7,冷归档以及深度冷归档类型取值范围为1~365。 |
|
Operation.RestoreObject.Tier |
String |
否 |
冷归档、深度冷归档类型Object的解冻优先级。冷归档类型取值:Standard(2~5小时)、Bulk(5~12小时);深度冷归档类型取值:Standard(48小时内)。 |
|
Report |
Container |
是 |
输出报告配置。 |
|
Report.Bucket |
String |
是 |
报告输出存放的Bucket。该Bucket必须与批量操作任务在同一地域(Region)。 |
|
Report.Enabled |
Boolean |
是 |
是否输出报告。 |
|
Report.Prefix |
String |
否 |
报告输出的前缀,可使报告存放在指定的子目录下。 |
|
Report.ReportScope |
String |
否 |
报告输出范围。取值:AllTasks(输出全部任务条目)、FailedTasksOnly(仅输出失败条目)。默认值:AllTasks。 |
|
ClientRequestToken |
String |
是 |
用于确保请求幂等性的唯一标识符,长度为1~64个字符。 |
|
Manifest |
Container |
条件必填 |
清单配置,与KeyPrefixManifestGenerator二选一。 |
|
Manifest.Location.Bucket |
String |
是(当使用Manifest时) |
清单文件所在的Bucket。该Bucket必须与批量操作任务在同一地域(Region)。 |
|
Manifest.Location.Object |
String |
是(当使用Manifest时) |
清单文件对应的Object。 |
|
Manifest.Location.ETag |
String |
否 |
清单文件的ETag。 |
|
Manifest.Location.VersionId |
String |
否 |
清单文件对应Object的版本ID(VersionId)。 |
|
Manifest.Spec.Format |
String |
是(当使用Manifest时) |
清单类型。取值:OSS_BatchOperations_CSV_20250611(OSS批量操作CSV格式)、OSS_InventoryReport_CSV_20250611(OSS清单报告CSV格式)。 |
|
Manifest.Spec.Fields |
String |
否 |
清单的CSV字段定义。使用自行上传的CSV清单时需要指定。 |
|
KeyPrefixManifestGenerator |
Container |
条件必填 |
基于前缀自动生成清单,与Manifest二选一。 |
|
KeyPrefixManifestGenerator.SourceBucket |
String |
是(当使用KeyPrefixManifestGenerator时) |
清单的源Bucket。 |
|
KeyPrefixManifestGenerator.Prefix |
String |
否 |
Object的前缀,用于筛选需要处理的Object。 |
|
Description |
String |
否 |
任务的描述信息。 |
|
Priority |
Integer |
是 |
任务的优先级。数值越大,优先级越高。 |
|
RoleArn |
String |
是 |
OSS执行批量操作任务时使用的RAM角色ARN。 |
-
本命令需要ossutil 2.4.1及以上版本。
-
关于支持的全局命令行选项,请参见支持的全局命令行选项。
使用示例
基于前缀自动生成清单,为examplebucket中data/前缀下的所有Object批量设置标签。示例配置文件create-job-request.json的内容如下:
{
"Operation": {
"PutObjectTagging": {
"TagSet": {
"Tag": [
{
"Key": "Environment",
"Value": "Production"
}
]
}
}
},
"Report": {
"Bucket": "report-bucket",
"Enabled": true,
"Prefix": "reports/",
"ReportScope": "AllTasks"
},
"ClientRequestToken": "unique-token-123",
"KeyPrefixManifestGenerator": {
"SourceBucket": "examplebucket",
"Prefix": "data/"
},
"Description": "batch put object tagging",
"Priority": 10,
"RoleArn": "acs:ram::123456789012****:role/BatchOperationRole"
}ossutil api create-job --create-job-request file://create-job-request.json
基于已有清单文件创建批量解冻任务。示例配置文件create-job-request.xml的内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<CreateJobRequest>
<Operation>
<RestoreObject>
<Days>7</Days>
<Tier>Standard</Tier>
</RestoreObject>
</Operation>
<Report>
<Bucket>report-bucket</Bucket>
<Enabled>true</Enabled>
</Report>
<ClientRequestToken>unique-token-456</ClientRequestToken>
<Manifest>
<Location>
<Bucket>manifest-bucket</Bucket>
<Object>manifest.csv</Object>
</Location>
<Spec>
<Format>OSS_BatchOperations_CSV_20250611</Format>
</Spec>
</Manifest>
<Description>batch restore archived objects</Description>
<Priority>10</Priority>
<RoleArn>acs:ram::123456789012****:role/BatchOperationRole</RoleArn>
</CreateJobRequest>ossutil api create-job --create-job-request file://create-job-request.xml
在命令行中直接传入JSON字符串创建批量删除标签任务。
ossutil api create-job --create-job-request '{"Operation":{"DeleteObjectTagging":""},"Report":{"Bucket":"report-bucket","Enabled":true},"ClientRequestToken":"unique-token-789","KeyPrefixManifestGenerator":{"SourceBucket":"examplebucket"},"Description":"batch delete object tagging","Priority":10,"RoleArn":"acs:ram::123456789012****:role/BatchOperationRole"}'