【以下的问题经过翻译处理】 我试图创建DMS复制任务,并使用RDS Postgresql作为源。但端点连接失败,并反馈以下消息:
“测试端点失败:应用程序状态:1020912,应用程序消息:无法找到Secrets Manager密钥,无法建立连接字符串,应用程序详细消息:无法提取密钥。无法找到AWS Secrets Manager的Arn 'arn:aws:secretsmanager:<region>:<account>:secret:<secret>' 的密钥。secrets_manager获取秘密值失败:curlCode:28,已达到最多重试:curlCode:28,超时。”
我确认密钥的ARN是正确的。
我还为端点设置了“ SecretsManagerAccessRoleArn”的角色,并双重确认。此角色具有以下策略:
{
“Version”:“2012-10-17”,
“Statement”:[
{
“Action”:[
“secretsmanager:DescribeSecret”,
“secretsmanager:GetSecretValue”
],
“Resource”:[
“arn:aws:secretsmanager:<region>:<account>:secret:<friendly-name> -??????”
],
“Effect”:“Allow”
},
{
“Action”:[
“kms:Decrypt”,
“kms:DescribeKey”
],
“Resource”:[
“arn:aws:kms:<region>:<account>:key / *”
],
“Effect”:“Allow”
}
]
}
Secrets Manager资源与Secret ARN相匹配。我正在使用默认加密密钥,因此我相信不需要明确的kms权限。出于无计可施,我添加了如下角色信任策略:
{
“Version”:“2012-10-17”,
“Statement”:[
{
“Effect”:“Allow”,
“Principal”:{
“Service”:[
“dms.amazonaws.com”,
“dms.<region>.amazonaws.com “
]
},
"Action": “sts:AssumeRole “
}
]
}
根据文档说明,需要使用区域特定的主题,我尝试添加了dms.amazonaws.com。
DMS复制实例部署在公有子网,我尝试在相同子网的另一台实例上关联SecretsManagerAccessRole 的角色执行aws secretsmanager get-secret-value,可以正常获取到密钥。
这些角色,策略和DMS资源都是通过Cloudformation部署的。非常感谢任何有利于解决问题的帮助。