1 回答
TA贡献1757条经验 获得超7个赞
根据您的实际情况,有两种可能的变体。
1. 导入现有角色
如果已预定义 Lambda 函数(例如,在不同的堆栈中),则可以通过先将现有 Lambda 执行角色导入此 CDK 堆栈来向其添加其他权限。
class CdkStack extends cdk.Stack {
constructor(scope, id, props) {
// ...
// Import the existing role into the stack
const roleArn = 'arn:aws:iam::123456789012:role/MyExistingLambdaExecutionRole'
const role = iam.Role.fromRoleArn(this, 'Role', roleArn, {
mutable: true,
});
const dbReadSecret = new secretsmanager.Secret(this, "databaseReader");
const dbWriteSecret = new secretsmanager.Secret(this, "databaseWriter");
dbReadSecret.grantRead(role);
dbWriteSecret.grantRead(role);
}
}
有关 CDK 模块用法的详细信息,请参阅指向文档的链接。在这里,您可以了解有关 Lambda 执行角色本身的更多信息。aws-iam
2. 定义为堆栈一部分的 Lambda 函数
如果已在此堆栈中的某个位置定义了 lambda 函数,则您只需分别使用 和 通过其引用将权限附加到 Lambda 函数即可。dbReadSecret.grantRead(lambda.role)dbWriteSecret.grantRead(lambda.role)
class CdkStack extends cdk.Stack {
constructor(scope, id, props) {
// ...
// Create the function or retrieve the reference if
// it has been defined somewhere else in the stack
const lambda = ...
const dbReadSecret = new secretsmanager.Secret(this, "databaseReader");
const dbWriteSecret = new secretsmanager.Secret(this, "databaseWriter");
dbReadSecret.grantRead(lambda.role);
dbWriteSecret.grantRead(lambda.role);
}
}
请看一下这个问题的答案以供参考。
添加回答
举报