static void Main(string[] args)
{
var configurationProvider = Configuration.Configure<ElasticBeanstalkDeploymentConfigurationProvider>()
.CreateAndBind(args);
Log.Logger = SerilogColoredConsoleConfiguration
.InitializeColoredConsoleLogger(configurationProvider)
.ForContext(SerilogTemplateConfiguration.CorrelationIdName, Guid.NewGuid().ToString("N"));
var loggerProvider = new LoggerProvider();
var elasticBeanstalkService = new ElasticBeanstalkService(configurationProvider, loggerProvider);
var s3Service = new S3Service(configurationProvider, loggerProvider);
var ec2Service = new Ec2Service(configurationProvider, loggerProvider);
var iamService = new IdentityManagementService(configurationProvider, loggerProvider);
var smokeTestService = new SmokeTestService(configurationProvider, loggerProvider);
var route53Service = new Route53Service(configurationProvider, loggerProvider);
var configurationOptionSettingsProvider = new ConfigurationOptionSettingsProvider(loggerProvider,
ec2Service,
configurationProvider);
var sslUploaderService = new SslUploaderService(configurationProvider, loggerProvider);
var cloudfrontService = new CloudFrontService(configurationProvider, loggerProvider);
var ebDeployer = new ElasticBeanstalkDeployer(configurationProvider,
elasticBeanstalkService,
s3Service,
smokeTestService,
iamService,
configurationOptionSettingsProvider,
route53Service,
sslUploaderService,
cloudfrontService,
loggerProvider);
ebDeployer.DeploySingleSiteDockerApplicationSingleAzAsync().Wait();
}