使用New-S3CJob创建S3批量复制任务时遇无效请求,求排查
解决S3批量复制任务「无效请求」错误的配置修正
你的New-S3CJob命令存在几处关键配置缺失和格式错误,这是导致「无效请求」的核心原因,以下是具体修正点和完整脚本:
1. 核心缺失:清单输入配置
S3批量任务必须指定要处理的对象清单来源,你仅配置了任务完成后输出清单的ManifestOutputLocation参数组,但完全没定义读取源对象清单的Manifest参数组——这是批量任务的必填项。
2. 报告参数格式错误
-Report_Bucket参数只需传入存储桶名称,不需要带ARN格式;同时还需补充报告的前缀、格式、启用状态等必要配置,否则会触发参数校验失败。
3. 其他优化点
- 显式指定
-Operation参数为S3PutObjectCopy,避免自动推断歧义 - 目标键前缀
TESTBK建议添加斜杠/,防止对象键拼接出现异常(比如TESTBKobjectkey而非预期的TESTBK/objectkey)
修正后的完整脚本
$accountId = (Get-STSCallerIdentity).Account $iamRoleArn = "arn:aws:iam::${accountId}:role/S3BatchOperationRole-us-east-1" $sourceBucket = "sourceBucket" $destinationBucket = "destinationBucket" # 源清单文件在源存储桶中的路径(示例:sourceBucket/manifest-input.csv) $manifestInputPath = "manifest-input.csv" # 创建S3批量复制任务 New-S3CJob -AccountId $accountId ` -Operation 'S3PutObjectCopy' ` -S3PutObjectCopy_StorageClass STANDARD ` -S3PutObjectCopy_TargetKeyPrefix "TESTBK/" ` -S3PutObjectCopy_TargetResource "arn:aws:s3:::$destinationBucket" ` -RoleArn $iamRoleArn ` -Priority 10 ` # 配置源清单读取规则 -Manifest_Spec_Format 'CSV' ` -Manifest_Spec_Fields 'Bucket', 'Key' ` -Manifest_Location_S3Bucket $sourceBucket ` -Manifest_Location_S3Key $manifestInputPath ` # 配置任务报告 -Report_Bucket $sourceBucket ` -Report_Prefix "batch-copy-report/" ` -Report_Format 'CSV' ` -Report_Enabled $true ` -Report_IncludeSuccess $true ` -Report_IncludeFailure $true ` # 配置处理后清单输出(可选) -ManifestOutputLocation_Bucket $sourceBucket ` -ManifestOutputLocation_ManifestPrefix "processed-manifest/" ` -ConfirmationRequired $false
关键参数说明
Manifest参数组:Manifest_Spec_Format:指定清单文件格式(通常为CSV)Manifest_Spec_Fields:清单必须包含的字段,复制任务至少需要Bucket和KeyManifest_Location_S3Bucket/Manifest_Location_S3Key:源清单文件所在的存储桶和具体路径
Report参数组:- 必须启用报告并指定格式、存储路径,同时明确是否包含成功/失败记录,这是批量任务的必填配置
额外注意事项
确保IAM角色S3BatchOperationRole-us-east-1拥有以下权限:
- 读取源存储桶的清单文件和待复制对象
- 写入复制后的对象到目标存储桶
- 写入任务报告和处理后清单到指定存储桶
内容的提问来源于stack exchange,提问作者Pritam Neog
相关产品推荐
相关产品推荐

