예제 #1
0
        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));
                    }
                }
            }
        }
예제 #2
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();
        }