У меня есть стек дБ, который затем передается другому стеку:
class DbStack extends cdk.Stack {
public dbSocket: string;
public dbReadSocket: string;
constructor(scope: cdk.Construct, id: string, props: { vpc: ec2.Vpc }) {
super(scope, id);
const { vpc } = props;
const db = new DatabaseCluster(this, "Database", {
engine: rds.DatabaseClusterEngine.AuroraPostgresql,
....
});
this.dbSocket = db.clusterEndpoint.socketAddress;
this.dbReadSocket = db.clusterReadEndpoint.socketAddress;
}
}
const dbStack = new DbStack(app, "db", { vpc });
new MyStack(app, "mystack", {
vpc,
dbSocket: dbStack.dbSocket,
dbReadSocket: dbStack.dbReadSocket,
}
В другом стеке я передаю эти сокеты переменным среды ECS:
export class PpfStack extends cdk.Stack {
constructor(scope: cdk.Construct, id: string, props: MyStackProps) {
super(scope, id, props);
const { vpc, dbSocket, dbReadSocket } = props;
new MyService(this, "svc", {
vpc,
...
environment: {
NODE_ENV: "production",
DATABASE_RO_SOCKET: dbReadSocket,
DATABASE_RW_SOCKET: dbSocket,
},
});
К сожалению, переменные окружения в итоге получаются как:
db-databasec2aad89b-1t1yxzplxjsvu.cluster-cppalohfw5gz.us-east-2.rds.amazonaws.com:{IndirectPort}
ОБНОВЛЕНИЕ Это похоже на ошибку: https://github.com/awslabs/aws-cdk/issues/2711