public DatabaseStack(Construct scope, string name, Vpc vpc, StackProps props = null) : base(scope, $"database-{name}", props) { // pricing - rds // 750 horas de uso de instâncias db.t2.micro Single-AZ do Amazon RDS para execução de // MySQL, MariaDB, PostgreSQL, Oracle BYOL ou SQL Server(executando SQL Server Express Edition) // // 20 GB de armazenamento de banco de dados de SSD // // 20 GB de armazenamento de backup para seus backups de banco de dados automatizados e // quaisquer snapshots de banco de dados iniciados por usuário // // pricing - secret manager // 0,40 USD por segredo por mês. No caso de segredos armazenados por menos de um mês, // o preço é pro-rata (com base no número de horas). // 0,05 USD por 10.000 chamadas de API. var secret = new Secret(this, $"database-{name}-secret", new SecretProps() { Description = $"Database {name} password", SecretName = $"database-{name}-secret" }); var databaseSecret = new DatabaseSecret(this, $"database-{name}-databasesecret", new DatabaseSecretProps() { Username = "******", MasterSecret = secret, ExcludeCharacters = "{}[]()'\"/\\" }); _databaseInstance = new DatabaseInstance(this, $"database-{name}-cluster", new DatabaseInstanceProps() { InstanceIdentifier = name + "-instance", DatabaseName = name, Credentials = Credentials.FromSecret(databaseSecret), Engine = DatabaseInstanceEngine.Mysql(new MySqlInstanceEngineProps() { Version = MysqlEngineVersion.VER_8_0_21 }), InstanceType = new InstanceType("t2.micro"), Vpc = vpc, VpcSubnets = new SubnetSelection() { SubnetType = SubnetType.ISOLATED } }); _databaseInstance.AddRotationSingleUser(new RotationSingleUserOptions() { AutomaticallyAfter = Duration.Days(7), ExcludeCharacters = "!@#$%^&*" }); }