Я читаю документы CDK о SecretsManager и я не уверен, что неправильно понял, но то, что я думал, будет работать на их примере, похоже, не дает ожидаемого разрешения. По сути, у меня есть стек, содержащий несколько лямбда-выражений, и я бы хотел, чтобы все они могли считывать два секрета из SecretsManager.
class CdkStack extends cdk.Stack {
/**
*
* @param {cdk.Construct} scope
* @param {string} id
* @param {cdk.StackProps=} props
*/
constructor(scope, id, props) {
super(scope, id, props);
// eslint-disable-next-line no-new
new APIServices(this, "APIServices");
const role = new iam.Role(this, "SecretsManagerRead", {
assumedBy: new iam.AccountRootPrincipal(),
});
const dbReadSecret = new secretsmanager.Secret(this, "databaseReader");
const dbWriteSecret = new secretsmanager.Secret(this, "databaseWriter");
dbReadSecret.grantRead(role);
dbWriteSecret.grantRead(role);
}
}
Если я правильно понял, я должен просто создать эту роль и дать ей разрешение на доступ к секретам? Однако моя лямбда по-прежнему не работала, когда я пытался их запустить. Нужно ли мне делать что-то еще, не упомянутое в документах, которые я читал о явном назначении этой роли лямбда-выражениям?