rds.DatabaseInstance 和 rds.IDatabaseInstance 有什么区别?
What the difference between rds.DatabaseInstance and rds.IDatabaseInstance?
我想做的就在这里
- 为生产制作新的 RDS Aurora
- 使用已经存在的 RDS Mysql 进行暂存
- 我需要将这些秘密提供给 ECS
下面是我的想法,
创建 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
returns IDatabaseInstance
不是 DatabaseInstance
.
IDatabaseInstance
没有 secret
我该如何解决这个问题?
How can I solve this?
Return read-only 使用 Secret.fromSecretPartialArn 静态方法引用 RDS MySQL 的秘密。传递不带随机后缀字母的密钥的 ARN。
fromSecretPartialArn
returns 实现 ISecret 接口的 class。它与您正在使用的 DatabaseCluster.secret
属性 返回的类型相同。使用其 grantRead
方法,该方法使用其主体策略或资源策略向 IAM 主体(例如您的 taskDefinitionAdmin.taskRole
授予读取访问权限。
What the difference between rds.DatabaseInstance
and rds.IDatabaseInstance
?
rds.DatabaseInstance
是一个 Construct
、 库 class,表示一个或多个具体的 AWS 资源。
rds.IDatabaseInstance
是一个 Interface
、,其名称均以“I”开头,定义了相应构造或其他 class 的绝对最小功能。 CDK 使用构造接口来表示在您的 AWS CDK 应用程序外部定义并由 Bucket.fromBucketArn().
等方法引用的 AWS 资源
我想做的就在这里
- 为生产制作新的 RDS Aurora
- 使用已经存在的 RDS Mysql 进行暂存
- 我需要将这些秘密提供给 ECS
下面是我的想法,
创建 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
returns IDatabaseInstance
不是 DatabaseInstance
.
IDatabaseInstance
没有secret
我该如何解决这个问题?
How can I solve this?
Return read-only 使用 Secret.fromSecretPartialArn 静态方法引用 RDS MySQL 的秘密。传递不带随机后缀字母的密钥的 ARN。
fromSecretPartialArn
returns 实现 ISecret 接口的 class。它与您正在使用的 DatabaseCluster.secret
属性 返回的类型相同。使用其 grantRead
方法,该方法使用其主体策略或资源策略向 IAM 主体(例如您的 taskDefinitionAdmin.taskRole
授予读取访问权限。
What the difference between
rds.DatabaseInstance
andrds.IDatabaseInstance
?
rds.DatabaseInstance
是一个 Construct
、 库 class,表示一个或多个具体的 AWS 资源。
rds.IDatabaseInstance
是一个 Interface
、,其名称均以“I”开头,定义了相应构造或其他 class 的绝对最小功能。 CDK 使用构造接口来表示在您的 AWS CDK 应用程序外部定义并由 Bucket.fromBucketArn().