AWS DMS S3目标验证卡在‘Records pending’状态求助
AWS DMS S3跨账户验证权限拒绝问题解决建议
核心问题分析
全量迁移能正常写入S3,说明基础写入权限没问题,但验证阶段需要DMS读取S3中自动生成的aws_dms_validation_meta_data目录下的验证文件(比如Athena结果CSV),当前权限配置缺少这部分读取权限。
具体修复步骤
1. 补全S3目标桶的跨账户权限策略
确保S3桶的权限策略中,给DMS所在账户(或DMS使用的IAM角色)添加读取验证元数据目录的权限:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::DMS账户ID:role/DMS使用的IAM角色名" }, "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::my_target_s3", "arn:aws:s3:::my_target_s3/aws_dms_validation_meta_data/*" ] } ] }
- 替换
DMS账户ID、DMS使用的IAM角色名、my_target_s3为实际值 s3:ListBucket用于让DMS遍历验证目录下的文件
2. 更新DMS任务关联的IAM角色权限
确保DMS任务使用的IAM角色(访问S3的角色)包含读取权限:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::my_target_s3", "arn:aws:s3:::my_target_s3/aws_dms_validation_meta_data/*" ] } ] }
- 全量迁移仅需
s3:PutObject,但验证必须补充读取权限,这是高频遗漏点
3. 排查权限冲突
如果S3桶开启了桶策略拒绝规则或账户权限边界,确认没有阻止DMS角色读取验证目录的配置。
4. 验证权限有效性
用AWS CLI模拟DMS角色测试权限:
# 先获取临时凭证 aws sts assume-role --role-arn arn:aws:iam::DMS账户ID:role/DMS使用的IAM角色名 --role-session-name test-dms-validation # 使用返回的临时凭证执行以下命令 aws s3 ls s3://my_target_s3/aws_dms_validation_meta_data/ aws s3 cp s3://my_target_s3/aws_dms_validation_meta_data/aws_dms_validation_athena_results/b1281cda-8a8d-42d5-8f7b-73378520c09f.csv ./test.csv
若命令执行失败,说明权限配置仍有问题,需重新核对策略。
5. 重启验证进程
权限修复后,停止当前DMS任务,重新启动验证(或全量迁移+验证),观察CloudWatch日志是否仍有权限拒绝错误。
内容的提问来源于stack exchange,提问作者Ali Ourag
相关产品推荐
相关产品推荐

