private void CreateOrLocateS3Buckets() { if (CdkOptions == null || CdkOptions.S3Buckets?.Any() != true) { return; } foreach (var bucket in CdkOptions.S3Buckets) { List <ILifecycleRule> expiredDocumentsLifeCycleRules = null; if (bucket.ExpireDocumentRules?.Any() == true) { expiredDocumentsLifeCycleRules = bucket.ExpireDocumentRules.ConvertAll(x => AwsCdkHandler.CreateLifecycleRule(x.RuleName, x.Expiration, x.TagName, x.TagValue, bucket.Versioned, x.PreviousVersionsExpirationDays)); } if (bucket.LocateInsteadOfCreate) { var currentBucket = AwsCdkHandler.LocateBucketByName(bucket.Id, bucket.BucketName); AwsCdkHandler.AddLifeCycleRuleToExistingBucket(ref currentBucket, expiredDocumentsLifeCycleRules); StackResources.Buckets.Add(bucket.Id, currentBucket); } else { if (bucket.ExpirationDays.HasValue) { StackResources.Buckets.Add(bucket.Id, AwsCdkHandler.AddS3Bucket(bucket.BucketName, lifecycleRules: expiredDocumentsLifeCycleRules, versioned: bucket.Versioned, expirationDays: bucket.ExpirationDays.Value, enforceSSL: bucket.EnforceSSL, blockPublicAccess: bucket.BlockPublicAccess ?? true)); } else { StackResources.Buckets.Add(bucket.Id, AwsCdkHandler.AddS3Bucket(bucket.BucketName, lifecycleRules: expiredDocumentsLifeCycleRules, versioned: bucket.Versioned, enforceSSL: bucket.EnforceSSL, blockPublicAccess: bucket.BlockPublicAccess ?? true)); } } } }
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(); }