コード例 #1
0
        static void Main(string[] args)
        {
            if (args != null && args.Any())
            {
                AwsAccount = args.Length >= 1 ? args[0] : System.Environment.GetEnvironmentVariable("CDK_DEFAULT_ACCOUNT");
                AwsRegion  = args.Length == 2 ? args[1] : System.Environment.GetEnvironmentVariable("CDK_DEFAULT_REGION");
            }

            //Create infra as code application (AWS framework)
            var app = new App();

            //Create the infrastructure provision handler (devon4Net Framework)
            var provisionStack = new AwsCdkHandler(app, "Devon4NetCloudStackDemo", "Devon4NetCdkDemo20201201", "development", new StackProps {
                Env = CreateEnv(AwsAccount, AwsRegion)
            });

            //Provision the infrastructure
            //Create S3 bucket
            provisionStack.AddS3Bucket("Devon4NetBucket", 1);

            //Locate existing VPC
            var vpc = provisionStack.LocateVpc("vpc-12345", "vpc-c274babb");

            //Create single database instance sample
            //provisionStack.AddDatabase(MysqlEngineVersion.VER_8_0_21, "MyDbInstance", "MyDbInstanceName", "defaultUserName", "aws_database_secret", StorageType.GP2, InstanceClass.BURSTABLE2, InstanceSize.MICRO, vpc, "sg-0042c46d08771873e", "sg-0042c46d08771873e");

            //Create cluster database instance sample
            provisionStack.AddDatabase(AuroraMysqlEngineVersion.VER_5_7_12, "MyDbInstance", "MyClusterId",
                                       "MyClusterInstanceId",
                                       "Devon4NetClusterDemo20201201", 3306, 1, "defaultUserName", "aws_database_secret", vpc,
                                       InstanceClass.BURSTABLE2, InstanceSize.SMALL, "sg-0042c46d08771873e", "sg-0042c46d08771873e", string.Empty, null, true, SubnetType.PUBLIC);

            //Execute provisioning (AWS)
            app.Synth();
        }
コード例 #2
0
        private void CreateDatabases()
        {
            if (CdkOptions == null || CdkOptions.Databases?.Any() != true)
            {
                return;
            }

            foreach (var databaseOption in CdkOptions.Databases)
            {
                GetDatabaseResources(databaseOption, out var databasePort, out var vpc, out var securityGroup, out var subnetGroup, out var deletionProtection, out var enchancedMonitoringInterval, out var passwordSecret, out var parameterGroup);

                IDatabaseInstance database;
                switch (databaseOption.DatabaseType?.ToLower())
                {
                case "sqlserver":
                    var sqlServerTranslation = TranslateSqlServerVersion(databaseOption.DatabaseEngineVersion);
                    var secGroup             = LocateSecurityGroup(databaseOption.SecurityGroupId, $"SG ith id {databaseOption.SecurityGroupId} not found in the JSON.");
                    database = AwsCdkHandler.AddDatabase(sqlServerTranslation, databaseOption.DatabaseName, databaseOption.DatabaseName, databaseOption.UserName, databaseOption.Password, databaseOption.StorageType, databaseOption.InstanceType, databaseOption.InstanceSize, vpc, secGroup, databaseOption.SecurityGroupId, storageEncrypted: true, allocatedStorageGb: databaseOption.AllocatedStorageGb, licenseOption: databaseOption.LicenseOption, edition: databaseOption.Edition, autoMinorVersionUpgrade: databaseOption.AutoMinorVersionUpgrade, backupRetentionDays: databaseOption.BackupRetentionPeriod, deletionProtection: databaseOption.DeletionProtection);
                    break;

                default:
                    StackResources.DynamicSecrets.Add(databaseOption.Secrets[DatabaseOptionConsts.PasswordAttributeName], passwordSecret);
                    database = AwsCdkHandler.AddDatabase(MysqlEngineVersion.VER_8_0, databaseOption.DatabaseName, databaseOption.DatabaseName, databasePort, databaseOption.UserName, passwordSecret, StorageType.GP2, InstanceClass.BURSTABLE3, InstanceSize.MEDIUM, vpc, securityGroup, subnetGroup, deletionProtection: deletionProtection, logTypes: databaseOption.LogTypes, storageEncrypted: databaseOption.StorageEncrypted, enableIamAuthentication: databaseOption.EnableIamAuthentication, enhancedMonitoringInterval: enchancedMonitoringInterval, multiAZEnabled: databaseOption.MultiAvailabilityZoneEnabled ?? true, autoMinorVersionUpgrade: databaseOption.AutoMinorVersionUpgrade ?? false, parameterGroup: parameterGroup);
                    break;
                }
                StackResources.Databases.Add(databaseOption.Id, database);
            }
        }