我正在尝试提出在使用 AWS CDK 部署堆栈期间检索 AWS RDS DbInstance 资源 ID 的选项。
需要资源 ID 以便 lambda 对 RDS 实例使用 IAM 身份验证 - see here
看来即使是 CF 也无法使用 ref 或 getAtt 函数返回资源 ID 值 - see here
运行 cdk deploy
会部署整个应用程序,包括 rds 数据库实例和 lambdas,那么如何将资源 ID 提供给 Lambda 策略以进行 IAM 身份验证?
我很感兴趣是否有人解决了这个问题或使用了哪些解决方法。是否需要使用单独的 CDK 部署命令或应用程序在多个阶段完成部署?
非常感谢所有帮助,
谢谢,
山姆
答案 0 :(得分:0)
如果我理解您的要求,以下 CDK 代码应该获得您的 Lambda 函数 rds-db:connect
权限。
let vpc = new ec2.Vpc(this, 'vpc')
let db = new rds.DatabaseInstance(this, 'db',{
vpc: vpc,
engine: rds.DatabaseInstanceEngine.mysql({version: rds.MysqlEngineVersion.VER_8_0})
})
let func = new lambda.Function(this, 'lambda',{
vpc: vpc,
code: lambda.Code.fromInline(`exports.handler = function(event, ctx, cb) {return cb(null, \"hi\"); }`),
runtime: lambda.Runtime.NODEJS_12_X,
handler: "index.handler"
})
db.grantConnect(func)