AWS DMS配置报错:Invalid secretManagerAccessRoleArn 求助排查
解决DMS访问Secrets Manager时角色ARN无效的问题
错误信息
SecretManager的secretManagerAccessRoleArn 'arn:aws:iam::069751638693:role/dms-migration-secrets-role-manual'无效
IAM角色配置
我创建的IAM角色包含以下配置:
- 信任策略:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "dms.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
- 附加的策略:
- SecretsManagerReadWrite
- AmazonDMSCloudWatchLogsRole
- AmazonDMSVPCManagementRole
问题描述
尝试用该角色让DMS访问Secrets Manager中的数据库凭证,但创建/配置DMS迁移任务时持续收到上述错误,想知道角色配置缺了什么,怎么解决。
环境信息
- AWS区域:us-west-2
- 通过AWS控制台配置
- 数据库凭证存储在Secrets Manager中
- 正在设置新的DMS迁移任务
已尝试操作
- 为DMS创建了正确的信任策略角色
- 附加了包括SecretsManagerReadWrite在内的必要策略
- 验证了角色ARN正确无误
可能的问题及解决方法
1. 角色权限边界限制
如果角色设置了权限边界,即使附加了SecretsManagerReadWrite策略,权限边界也可能阻止DMS访问Secrets Manager。
- 进入IAM角色详情页,查看“权限边界”部分,确认没有限制Secrets Manager相关操作的边界策略。如果有,要么调整边界策略添加
secretsmanager:GetSecretValue等必要权限,要么移除不必要的权限边界。
2. 策略未正确生效或存在冲突
有时候附加的策略可能因为缓存或配置问题未生效,或者存在拒绝策略冲突:
- 重新确认SecretsManagerReadWrite策略的内容,确保包含
secretsmanager:GetSecretValue、secretsmanager:DescribeSecret等DMS访问凭证所需的核心权限。 - 使用IAM策略模拟器测试角色是否能执行
secretsmanager:GetSecretValue操作:选择该角色,模拟dms.amazonaws.com作为调用者,测试对应Secret的访问权限,排查是否存在隐性的拒绝规则。
3. 信任策略的额外限制
虽然信任策略指定了dms.amazonaws.com,但如果存在额外条件限制,可能会阻止DMS AssumeRole:
- 进入IAM角色的“信任关系”页,确认策略中没有IP范围、时间等条件限制。如果有,根据需求调整或移除这些限制。
- 尝试重新保存信任策略,确保配置完全生效。
4. Secret的资源策略限制
Secrets Manager的Secret可能设置了资源策略,拒绝了该IAM角色的访问:
- 进入对应Secret的详情页,查看“资源策略”部分,确认没有拒绝该角色ARN访问的规则。如果有,添加允许该角色执行
secretsmanager:GetSecretValue的语句。
5. 角色生效延迟
IAM角色创建后通常需要几秒钟到几分钟的时间生效,等待片刻后再尝试配置DMS任务,避免因未完全生效导致的错误。
内容的提问来源于stack exchange,提问作者Cauder
相关产品推荐
相关产品推荐

