我想做的就是在这里
我的想法在下面,
创建dbCluster变量来存储这两个变量。
在Prod中存储DatabaseCluster,Stag存储rds.DatabaseInstance
这是我的分期环境
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
export interface CdkStFargateStackProps extends StackProps {
readonly dbCluster: rds.DatabaseCluster | rds.DatabaseInstance;
props!.dbCluster.secret?.grantRead(taskDefinitionAdmin.taskRole)问题是
rds.DatabaseInstance.fromDatabaseInstanceAttributes返回IDatabaseInstance而不是DatabaseInstance。
IDatabaseInstance没有secret我怎么才能解决这个问题?
发布于 2022-05-11 11:34:12
我怎么才能解决这个问题?
使用Secret.fromSecretPartialArn静态方法返回对RDS MySQL秘密的只读引用。传递秘密的ARN,没有随机的后缀字母。
fromSecretPartialArn返回一个实现ISecret接口的类。它与您已经使用的DatabaseCluster.secret属性返回的类型相同。使用其grantRead方法,该方法授予对IAM主体(如您的taskDefinitionAdmin.taskRole )的读取访问权限,使用其主要策略或资源策略。
rds.DatabaseInstance和rds.IDatabaseInstance有什么区别?
它们属于不同的CDK类别
rds.DatabaseInstance是一个表示一个或多个具体AWS资源的Construct库类。
rds.IDatabaseInstance是一个Interface,其名称都以"I“开头,定义对应构造或其他类的绝对最小功能。CDK使用构造接口来表示AWS资源,这些资源在AWS应用程序之外定义,并由Bucket.fromBucketArn()等方法引用。
https://stackoverflow.com/questions/72198103
复制相似问题