首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rds.DatabaseInstance和rds.IDatabaseInstance有什么区别?

rds.DatabaseInstance和rds.IDatabaseInstance有什么区别?
EN

Stack Overflow用户
提问于 2022-05-11 08:51:05
回答 1查看 176关注 0票数 0

我想做的就是在这里

  • 生产新的RDS Aurora
  • 使用已经存在的RDS Mysql进行暂存
  • 我要把这些秘密告诉ECS

我的想法在下面,

创建dbCluster变量来存储这两个变量。

在Prod中存储DatabaseCluster,Stag存储rds.DatabaseInstance

这是我的分期环境

代码语言:javascript
复制
    public readonly dbCluster: rds.DatabaseCluster | rds.DatabaseInstance; 
    constructor(scope: Construct, id: string, props?: StackProps) {
      const existingDatabaseInstance = rds.DatabaseInstance.fromDatabaseInstanceAttributes(this,'mysqlrds',{
        instanceIdentifier: "XXXXXXXXXX",
        securityGroups: [],
        instanceEndpointAddress: "XXXXXXXXXX.cishneowmf1a.ap-northeast-1.rds.amazonaws.com",
        port: 3306
      });

然后在另一个剧本里。

我可以告诉ECS的秘密,不管它有rds.DatabaseCluster还是rds.DatabaseInstance

代码语言:javascript
复制
    export interface CdkStFargateStackProps extends StackProps {
      readonly dbCluster: rds.DatabaseCluster | rds.DatabaseInstance;
        props!.dbCluster.secret?.grantRead(taskDefinitionAdmin.taskRole)

问题是

  • rds.DatabaseInstance.fromDatabaseInstanceAttributes

返回IDatabaseInstance而不是DatabaseInstance

  • IDatabaseInstance没有secret

我怎么才能解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-11 11:34:12

我怎么才能解决这个问题?

使用Secret.fromSecretPartialArn静态方法返回对RDS MySQL秘密的只读引用。传递秘密的ARN,没有随机的后缀字母。

fromSecretPartialArn返回一个实现ISecret接口的类。它与您已经使用的DatabaseCluster.secret属性返回的类型相同。使用其grantRead方法,该方法授予对IAM主体(如您的taskDefinitionAdmin.taskRole )的读取访问权限,使用其主要策略或资源策略。

rds.DatabaseInstancerds.IDatabaseInstance有什么区别?

它们属于不同的CDK类别

rds.DatabaseInstance是一个表示一个或多个具体AWS资源的Construct库类。

rds.IDatabaseInstance是一个Interface,其名称都以"I“开头,定义对应构造或其他类的绝对最小功能。CDK使用构造接口来表示AWS资源,这些资源在AWS应用程序之外定义,并由Bucket.fromBucketArn()等方法引用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72198103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档