Amazon Simple Storage Service
开发人员指南 (API 版本 2006-03-01)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

操作

Amazon S3 批处理操作支持五种不同的操作。此部分中的主题描述了各个操作。

您可以尝试使用以下 AWS Command Line Interface (AWS CLI) 命令来测试 Amazon S3 批处理操作。

  1. 创建 IAM 角色并分配权限。此角色授予 Amazon S3 权限来添加对象标签,您将在接下来的步骤中为其创建作业。

    1. 创建 IAM 角色如下所示:

      aws iam create-role \ --role-name S3BatchJobRole \ --assume-role-policy-document '{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"batchoperations.s3.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }'

      记下角色的 Amazon 资源名称 (ARN)。创建作业时,您需要 ARN。

    2. 创建提供权限的 IAM 策略并将其附加到上一步中创建的 IAM 角色。有关许可的更多信息,请参阅授予批量操作的权限

      aws iam put-role-policy \ --role-name S3BatchJobRole \ --policy-name PutObjectTaggingBatchJobPolicy \ --policy-document '{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:PutObjectTagging", "s3:PutObjectVersionTagging" ], "Resource": "arn:aws:s3:::{{TargetResource}}/*" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::{{ManifestBucket}}/*" ] }, { "Effect":"Allow", "Action":[ "s3:PutObject", "s3:GetBucketLocation" ], "Resource":[ "arn:aws:s3:::{{ReportBucket}}/*" ] } ] }'
  2. 创建 S3PutObjectTagging 作业。manifest.csv 文件提供存储桶和对象键值的列表。作业将指定的标签应用到清单中标识的对象。ETag 是 manifest.csv 对象的 ETag,可从 Amazon S3 控制台中获取。该请求指定 no-confirmation-required 参数。因此,Amazon S3 使得作业符合执行的条件,无需使用 udpate-job-status 命令来确认。

    aws s3control create-job \ --region us-west-2 \ --account-id acct-id \ --operation '{"S3PutObjectTagging": { "TagSet": [{"Key":"keyOne", "Value":"ValueOne"}] }}' \ --manifest '{"Spec":{"Format":"S3BatchOperations_CSV_20180820","Fields":["Bucket","Key"]},"Location":{"ObjectArn":"arn:aws:s3:::my_manifests/manifest.csv","ETag":"60e460c9d1046e73f7dde5043ac3ae85"}}' \ --report '{"Bucket":"arn:aws:s3:::bucket-where-completion-report-goes","Prefix":"final-reports", "Format":"Report_CSV_20180820","Enabled":true,"ReportScope":"AllTasks"}' \ --priority 42 \ --role-arn IAM-role \ --client-request-token $(uuidgen) \ --description "job Description" \ --no-confirmation-required

    作为响应,Amazon S3 返回作业 ID(例如,00e123a4-c0d8-41f4-a0eb-b46f9ba5b07c)。在接下来的命令中您需要该 ID。

  3. 获取作业描述。

    aws s3control describe-job \ --region us-west-2 \ --account-id acct-id \ --job-id 00e123a4-c0d8-41f4-a0eb-b46f9ba5b07c
  4. 获取 ActiveComplete 作业的列表。

    aws s3ccontrol list-jobs \ --region us-west-2 \ --account-id acct-id \ --job-statuses '["Active","Complete"]' \ --max-results 20
  5. 更新作业优先级(数值越大指示执行优先级越高)。

    aws s3control update-job-priority \ --region us-west-2 \ --account-id acct-id \ --priority 98 \ --job-id 00e123a4-c0d8-41f4-a0eb-b46f9ba5b07c
  6. 如果在 create-job 中您未指定 --no-confirmation-required 参数,则作业将处于暂停状态,直至您通过将其状态设置为 Ready 来确认作业。然后,Amazon S3 使作业符合执行的条件。

    aws s3control update-job-status \ --region us-west-2 \ --account-id 181572960644 \ --job-id 00e123a4-c0d8-41f4-a0eb-b46f9ba5b07c \ --requested-job-status 'Ready'
  7. 通过将作业状态设置为 Cancelled 来取消作业。

    aws s3control update-job-status \ --region us-west-2 \ --account-id 181572960644 \ --job-id 00e123a4-c0d8-41f4-a0eb-b46f9ba5b07c \ --status-update-reason "No longer needed" \ --requested-job-status Cancelled