create-job

更新时间:
复制 MD 格式

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格式。当选项值包含file://前缀时,表示从文件中读取配置。

--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。

说明

使用示例

基于前缀自动生成清单,为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"}'