排查批量操作问题 - Amazon Simple Storage Service

排查批量操作问题

以下主题列出了常见错误,有助于您排查在使用 Amazon S3 批量操作时可能遇到的问题。

要排查 S3 批量复制的问题,请参阅批量复制错误

当存在权限问题或启用了 S3 对象锁定保留模式时,未交付任务报告

在缺少必需权限或者对目标存储桶启用了对象锁定保留模式(监管模式或合规模式)时,会发生以下错误。

错误:失败的原因。无法将任务报告写入您的报告桶。请检查您的权限。

AWS Identity and Access Management(IAM)角色和信任策略必须配置为支持批量操作具有 s3:PutObject 权限,以便将对象 PUT 到要向其中交付报告的存储桶中。如果缺少这些必需的权限,则会出现任务报告交付失败的情况。

启用保留模式后,桶受到“一次写入,多次读取”(WORM)保护。在目标存储桶上,不支持在启用了保留模式时进行对象锁定,因此,任务完成报告交付尝试失败。要解决此问题,请为您的任务完成报告选择一个未启用对象锁定保留模式的目标桶。

对于对象的批量操作失败,错误为 400 InvalidRequest:由于缺少 VersionId,任务失败

如果批量操作任务正在对受版本控制的桶中的对象执行操作,并在清单中遇到版本 ID 字段为空的对象,则会出现以下示例错误。

错误:bucket_name,prefix/file_name,failed,400,InvalidRequest,由于缺少 VersionId,任务失败

之所以出现此错误,是因为清单中的版本 ID 字段是空字符串,而不是文本 null 字符串。

这一特定对象或这些对象的批量操作将失败,但整个任务不会失败。如果在操作期间将清单格式配置为使用版本 ID,则会出现此问题。非版本控制的任务不会遇到此问题,因为它们仅对每个对象的最新版本进行操作,并忽略清单中的版本 ID。

要解决此问题,请将空版本 ID 转换为 null 字符串。有关更多信息,请参阅 将 Amazon S3 库存报告中的空版本 ID 字符串转换为空字符串

在启用任务标签选项的情况下创建任务失败

如果没有 s3:PutJobTagging 权限,在启用了任务标签选项的情况下创建批量操作任务会导致 403 access denied 错误。

要在启用任务标签选项的情况下创建批量操作任务,创建批量操作任务的 AWS Identity and Access Management(IAM)用户除 s3:CreateJob 权限外还必须具有 s3:PutJobTagging 权限。

有关批量操作所需权限的更多信息,请参阅授予批处理操作的权限

读取清单的访问被拒绝

如果您在尝试创建批量操作任务时,批量操作无法读取清单文件,则可能会出现以下错误。

AWS CLI

禁止读取清单失败的原因:AccessDenied

Amazon S3 控制台

警告:无法获取清单对象的 ETag。指定其他对象以继续。

要解决此问题,请执行下列操作:

  • 验证您用于创建批量操作任务的 AWS 账户的 IAM 角色是否具有 s3:GetObject 权限。账户的 IAM 角色必须具有 s3:GetObject 权限,以便支持批量操作读取清单文件。

    有关批量操作所需权限的更多信息,请参阅授予批处理操作的权限

  • 检查清单对象的元数据中是否存在与 S3 对象所有权不匹配的访问权限。有关 S3 对象所有权的更多信息,请参阅为您的存储桶控制对象所有权和禁用 ACL。

  • 检查 AWS Key Management Service(AWS KMS)密钥是否用于加密清单文件。

    批量操作支持用 AWS KMS 加密的 CSV 清单报告。但是,批量操作不支持用 AWS KMS 加密的 CSV 清单文件。有关更多信息,请参阅配置 Amazon S3 清单指定清单