如何获取 AWS RDS DbInstance 资源 ID?

时间:2021-05-10 14:47:45

标签: amazon-web-services aws-lambda amazon-rds amazon-iam aws-cdk

我正在尝试提出在使用 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 部署命令或应用程序在多个阶段完成部署?

非常感谢所有帮助,

谢谢,

山姆

1 个答案:

答案 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)