public async Task CreateLaunchConfigurationAsync_should_do_the_thing()
        {
            // Arrange
            var client         = new AmazonAutoScalingClient();
            var classUnderTest = new LaunchConfigurationService(client);

            var base64EncodeService   = new Base64EncodeService();
            var userData              = @"#!/bin/bash
echo ECS_CLUSTER=lexicon-cluster >> /etc/ecs/ecs.config;echo ECS_BACKEND_HOST= >> /etc/ecs/ecs.config;";
            var userDataBase64Encoded = base64EncodeService.Encode(userData);

            var securityGroup = "sg-010638bf3e6a58e76";

            var request = new CreateLaunchConfigurationRequest
            {
                LaunchConfigurationName = "CreatedFromSDK",
                ImageId            = Ec2Constants.AmiEcsLaunchTypeEc2,
                IamInstanceProfile = "ecsInstanceRole",
                KeyName            = "carl-key-pair",
                UserData           = userDataBase64Encoded,
                InstanceType       = "m5a.large",
                InstanceMonitoring = new InstanceMonitoring()
                {
                    Enabled = true
                },
                SecurityGroups = new List <string>()
                {
                    securityGroup
                },
                BlockDeviceMappings = new List <BlockDeviceMapping>()
                {
                    new BlockDeviceMapping()
                    {
                        DeviceName = "/dev/xvda",
                        Ebs        = new Ebs()
                        {
                            DeleteOnTermination = true,
                            VolumeSize          = 30,
                            VolumeType          = "gp2"
                        }
                    }
                },
                AssociatePublicIpAddress = true
            };

            // Act
            var response = await classUnderTest.CreateLaunchConfigurationAsync(request);

            // Assert
        }
Beispiel #2
0
        public async Task CreateLaunchTemplateAsync_should_create_and_return_launchTemplate()
        {
            var client = new EnvironmentVariables().CloudComputeClient();
            var launchTemplateMapper = new LaunchTemplateMapper();
            var base64EncodeService  = new Base64EncodeService();

            var imageId            = Ec2Constants.AmiEcsLaunchTypeEc2;
            var networkInterfaceId = "eni-0a2e37a1f05e287db";
            var arn = "arn:aws:iam::032668436735:instance-profile/ecsInstanceRole";
            var launchTemplateName = "CreatedFromSDK"; //LexiconServer;
            var keyName            = "carl-key-pair";
            var clusterName        = "lexicon-cluster";

            var userData = @"#!/bin/bash
echo ECS_CLUSTER=lexicon-cluster >> /etc/ecs/ecs.config;echo ECS_BACKEND_HOST= >> /etc/ecs/ecs.config;";

            var userDataBase64Encoded = base64EncodeService.Encode(userData);

            // Arrange
            var createLaunchTemplateModel = new CreateLaunchTemplateModel
            {
                LaunchTemplateName = launchTemplateName,
                LaunchTemplateData = new businessAmazonWebServicesEc2Model.RequestLaunchTemplateData()
                {
                    EbsOptimized       = false,
                    IamInstanceProfile = new businessAmazonWebServicesEc2Model.LaunchTemplateIamInstanceProfileSpecificationRequest()
                    {
                        Arn = arn
                    },
                    BlockDeviceMappings = new List <businessAmazonWebServicesEc2Model.LaunchTemplateBlockDeviceMappingRequest>()
                    {
                        new businessAmazonWebServicesEc2Model.LaunchTemplateBlockDeviceMappingRequest()
                        {
                            DeviceName = "/dev/xvda",
                            Ebs        = new businessAmazonWebServicesEc2Model.LaunchTemplateEbsBlockDeviceRequest()
                            {
                                DeleteOnTermination = true,
                                VolumeSize          = 30,
                                VolumeType          = VolumeType.Gp2
                            }
                        },
                        new businessAmazonWebServicesEc2Model.LaunchTemplateBlockDeviceMappingRequest()
                        {
                            DeviceName = "/dev/xvdcz",
                            Ebs        = new businessAmazonWebServicesEc2Model.LaunchTemplateEbsBlockDeviceRequest()
                            {
                                DeleteOnTermination = true,
                                VolumeSize          = 30,
                                VolumeType          = VolumeType.Gp2
                            }
                        }
                    },
                    NetworkInterfaces = new List <businessAmazonWebServicesEc2Model.LaunchTemplateInstanceNetworkInterfaceSpecificationRequest>()
                    {
                        new businessAmazonWebServicesEc2Model.LaunchTemplateInstanceNetworkInterfaceSpecificationRequest()
                        {
                            Description        = "",
                            DeviceIndex        = 0,
                            Ipv6Addresses      = new List <businessAmazonWebServicesEc2Model.InstanceIpv6AddressRequest>(),
                            NetworkInterfaceId = networkInterfaceId
                        }
                    },
                    ImageId      = imageId,
                    InstanceType = InstanceType.M5aLarge,
                    KeyName      = keyName,
                    Monitoring   = new businessAmazonWebServicesEc2Model.LaunchTemplatesMonitoringRequest()
                    {
                        Enabled = true
                    },
                    Placement = new businessAmazonWebServicesEc2Model.LaunchTemplatePlacementRequest()
                    {
                        GroupName = "",
                        Tenancy   = Tenancy.Default
                    },
                    DisableApiTermination             = false,
                    InstanceInitiatedShutdownBehavior = ShutdownBehavior.Stop,
                    UserData          = userDataBase64Encoded,
                    TagSpecifications = new List <businessAmazonWebServicesEc2Model.LaunchTemplateTagSpecificationRequest>()
                    {
                        new businessAmazonWebServicesEc2Model.LaunchTemplateTagSpecificationRequest()
                        {
                            ResourceType = ResourceType.Instance,
                            Tags         = new List <businessAmazonWebServicesEc2Model.Tag>()
                            {
                                new businessAmazonWebServicesEc2Model.Tag()
                                {
                                    Key   = "Description",
                                    Value = "lexicon"
                                }
                            }
                        }
                    },
                    CpuOptions = new businessAmazonWebServicesEc2Model.LaunchTemplateCpuOptionsRequest()
                    {
                        CoreCount      = 1,
                        ThreadsPerCore = 2
                    },
                    CapacityReservationSpecification = new businessAmazonWebServicesEc2Model.LaunchTemplateCapacityReservationSpecificationRequest()
                    {
                        CapacityReservationPreference = CapacityReservationPreference.Open
                    },
                    HibernationOptions = new businessAmazonWebServicesEc2Model.LaunchTemplateHibernationOptionsRequest()
                    {
                        Configured = false
                    }
                }
            };

            ILaunchTemplateService classUnderTest = new LaunchTemplateService(client, launchTemplateMapper);

            // Act
            var response = await classUnderTest.CreateLaunchTemplateAsync(createLaunchTemplateModel);

            // Assert
            Assert.IsTrue(response.LaunchTemplate.LaunchTemplateId != null);
            Assert.IsTrue(response.LaunchTemplate.LaunchTemplateId.Length > 0);
        }