在我正在处理的一个项目中,机密存储在一个集中的公司机密管理器中,在一个特定的 AWS 账户 (SECRETS_ACCOUNT) 中。
项目资源(包括 lambda 函数)位于项目特定帐户 (PROJECT_ACCOUNT) 中。
我正在尝试设置秘密轮换,但我遇到了以下错误消息:
AccessDeniedException: Secrets Manager cannot invoke the specified Lambda function. Ensure that the function policy grants access to the principal secretsmanager.amazonaws.com.
基于 lambda 资源的策略:
{
"Version": "2012-10-17",
"Id": "default",
"Statement": [
{
"Sid": "SecretsManager",
"Effect": "Allow",
"Principal": {
"Service": "secretsmanager.amazonaws.com"
},
"Action": "lambda:InvokeFunction",
"Resource": "arn:aws:lambda:eu-west-1:PROJECT_ACCOUNT:function:secret-rotation"
}
]
}
lambda 角色信任关系:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
我不知道这是否重要,两个帐户都在同一个地区。
我错过了什么?我是否需要添加额外的权限以允许来自另一个账户的 Secrets Manager 调用 lambda?lambda 和秘密是否必须在同一个帐户中?
提前致谢,