1 回答

TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超7個(gè)贊
根據(jù)您的實(shí)際情況,有兩種可能的變體。
1. 導(dǎo)入現(xiàn)有角色
如果已預(yù)定義 Lambda 函數(shù)(例如,在不同的堆棧中),則可以通過先將現(xiàn)有 Lambda 執(zhí)行角色導(dǎo)入此 CDK 堆棧來向其添加其他權(quán)限。
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);
}
}
有關(guān) CDK 模塊用法的詳細(xì)信息,請(qǐng)參閱指向文檔的鏈接。在這里,您可以了解有關(guān) Lambda 執(zhí)行角色本身的更多信息。aws-iam
2. 定義為堆棧一部分的 Lambda 函數(shù)
如果已在此堆棧中的某個(gè)位置定義了 lambda 函數(shù),則您只需分別使用 和 通過其引用將權(quán)限附加到 Lambda 函數(shù)即可。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);
}
}
請(qǐng)看一下這個(gè)問題的答案以供參考。
添加回答
舉報(bào)