为现有复制规则创建分批复制任务 - Amazon Simple Storage Service

为现有复制规则创建分批复制任务

在 Amazon S3 中,实时复制不会复制在您创建复制配置之前已存在于源存储桶中的任何对象。实时复制仅自动复制在创建复制配置之后写入存储桶中的新对象和更新的对象。要复制已存在的对象,可以使用 S3 批量复制来按需复制这些对象。

您可以通过使用 AWS SDK、AWS Command Line Interface(AWS CLI)或 Amazon S3 控制台为现有复制配置来配置 S3 分批复制。有关批量复制的概述,请参阅使用批量复制以复制现有对象

分批复制任务完成后,您将收到完成报告。有关如何使用报告检查任务的更多信息,请参阅 跟踪任务状态和完成报告

先决条件

在创建批量复制任务之前,必须创建批量操作 AWS Identity and Access Management(IAM)角色,来向 Amazon S3 授予代表您执行操作的权限。有关更多信息,请参阅 配置 IAM 角色以进行 S3 批量复制

  1. 登录到AWS Management Console,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/

  2. 在左侧导航窗格中,选择批量操作

  3. 选择创建任务

  4. 验证 AWS 区域部分显示了要在其中创建任务的区域。

  5. 清单部分中,指定要使用的清单格式。清单是您希望对其运行指定操作的所有对象的列表。要了解有关批量操作清单的更多信息,请参阅 指定清单

    • 如果您准备了清单,请选择 S3 清单报告 (manifest.json)CSV。如果清单位于受版本控制的存储桶中,则可以指定清单的版本 ID。如果未指定版本 ID,批量操作会使用清单的当前版本。有关创建清单的更多信息,请参阅指定清单

      注意

      如果清单中的对象位于受版本控制的存储桶中,则必须指定对象的版本 ID。有关更多信息,请参阅 指定清单

    • 要根据复制配置创建清单,请选择 Create manifest using S3 Replication configuration(使用 S3 复制配置创建清单)。然后,选择复制配置的源存储桶。

  6. (可选)如果您选择使用 S3 复制配置创建清单,则可以添加其它筛选条件,例如对象创建日期和复制状态。有关如何按复制状态筛选的示例,请参阅为分批复制任务指定清单

  7. (可选)如果您选择使用 S3 复制配置创建清单,则可以保存生成的清单。要保存清单,请选择保存批量操作清单。然后,为清单指定目标存储桶,并选择是否对清单进行加密。

    注意

    生成的清单必须存储在与源存储桶相同的 AWS 区域 中。

  8. 选择下一步

  9. 操作页上,选择复制,然后选择下一步

  10. (可选)提供 Description(说明)。

  11. 必要时调整任务的 Priority(优先级)。数字越大,优先级越高。Amazon S3 尝试在优先级较低的任务之前运行优先级较高的任务。有关任务优先级的更多信息,请参阅 分配任务优先级

  12. (可选)生成完成报告。要生成此报告,请选择生成完成报告

    如果您选择生成完成报告,则必须选择报告仅失败的任务全部任务,并为报告提供目标存储桶。

  13. 权限部分中,请确保您选择拥有批量复制所需权限的 IAM 角色。复制失败的最常见原因之一是提供的 IAM 角色的权限不足。有关创建此角色的信息,请参阅 配置 IAM 角色以进行 S3 批量复制

  14. (可选)将任务标签添加到分批复制任务中。

  15. 请选择 Next (下一步)

  16. 检查任务配置,然后选择创建任务

以下示例 create-job 命令通过使用 S3 为 AWS 账户 111122223333 生成的清单创建 S3 批量复制任务。此示例将复制现有对象和之前复制失败的对象。有关按复制状态筛选的信息,请参阅为分批复制任务指定清单

要使用此命令,请将 user input placeholders 替换为您自己的信息。将 IAM 角色 role/batch-Replication-IAM-policy 替换为您之前创建的 IAM 角色。有关更多信息,请参阅 配置 IAM 角色以进行 S3 批量复制

aws s3control create-job --account-id 111122223333 \ --operation '{"S3ReplicateObject":{}}' \ --report '{"Bucket":"arn:aws:s3:::amzn-s3-demo-completion-report-bucket",\ "Prefix":"batch-replication-report", \ "Format":"Report_CSV_20180820","Enabled":true,"ReportScope":"AllTasks"}' \ --manifest-generator '{"S3JobManifestGenerator": {"ExpectedBucketOwner": "111122223333", \ "SourceBucket": "arn:aws:s3:::amzn-s3-demo-source-bucket", \ "EnableManifestOutput": false, "Filter": {"EligibleForReplication": true, \ "ObjectReplicationStatuses": ["NONE","FAILED"]}}}' \ --priority 1 \ --role-arn arn:aws:iam::111122223333:role/batch-Replication-IAM-policy \ --no-confirmation-required \ --region source-bucket-region
注意

必须从与复制源存储桶相同的 AWS 区域中启动该任务。

成功启动分批复制任务后,您会收到任务 ID 作为响应。可以使用下面的 describe-job 命令来监控此任务。要使用此命令,请将 user input placeholders 替换为您自己的信息。

aws s3control describe-job --account-id 111122223333 --job-id job-id --region source-bucket-region

以下示例通过使用 AWS 账户 111122223333 的用户定义清单创建 S3 批量复制任务。如果清单中的对象位于受版本控制的存储桶中,则必须指定对象的版本 ID。只有在清单中指定了版本 ID 的对象才会复制。有关创建清单的更多信息,请参阅指定清单

要使用此命令,请将 user input placeholders 替换为您自己的信息。将 IAM 角色 role/batch-Replication-IAM-policy 替换为您之前创建的 IAM 角色。有关更多信息,请参阅 配置 IAM 角色以进行 S3 批量复制

aws s3control create-job --account-id 111122223333 \ --operation '{"S3ReplicateObject":{}}' \ --report '{"Bucket":"arn:aws:s3:::amzn-s3-demo-completion-report-bucket",\ "Prefix":"batch-replication-report", \ "Format":"Report_CSV_20180820","Enabled":true,"ReportScope":"AllTasks"}' \ --manifest '{"Spec":{"Format":"S3BatchOperations_CSV_20180820",\ "Fields":["Bucket","Key","VersionId"]},\ "Location":{"ObjectArn":"arn:aws:s3:::amzn-s3-demo-manifest-bucket/manifest.csv",\ "ETag":"Manifest Etag"}}' \ --priority 1 \ --role-arn arn:aws:iam::111122223333:role/batch-Replication-IAM-policy \ --no-confirmation-required \ --region source-bucket-region
注意

必须从与复制源存储桶相同的 AWS 区域中启动该任务。

成功启动分批复制任务后,您会收到任务 ID 作为响应。可以使用下面的 describe-job 命令来监控此任务。

aws s3control describe-job --account-id 111122223333 --job-id job-id --region source-bucket-region