Beispiel #1
0
            public static Command Copy(
                string source,
                string target,
                AwsOptions options = default,
                bool sudo          = false)
            {
                #region Preconditions

                if (source == null)
                {
                    throw new ArgumentNullException(nameof(source));
                }

                #endregion

                // sudo aws s3 cp --quiet {source} {target}

                var sb = new StringBuilder("aws s3 cp ");

                if (options.HasFlag(AwsOptions.Quiet))
                {
                    sb.Append("--quiet ");
                }

                sb.Append(source);

                if (target != null)
                {
                    sb.Append(' ');
                    sb.Append(target);
                }

                return(new Command(sb.ToString(), sudo));
            }
        public static void ConfigureDevonfwAWS(this IServiceCollection services, IConfiguration configuration, ConfigureHostBuilder hostBuilder)
        {
            AwsOptions = services.GetTypedOptions <AwsOptions>(configuration, "AWS");

            if (AwsOptions.EnableAws)
            {
                hostBuilder.ConfigureWebHostDefaults(webHostBuilder => webHostBuilder.InitializeDevonFwAws(AwsOptions));
            }
        }
        public static void AddAws(this IServiceCollection services, AwsOptions awsOptions, QueueOptions queueOptions)
        {
            var awsCredentials = new BasicAWSCredentials(awsOptions.AccessKey, awsOptions.SecretKey);
            var regionEndpoint = GetRegionEndpoint(queueOptions.WorkerQueueUrl.ToString());

            var sqsClient = new AmazonSQSClient(awsCredentials, regionEndpoint);

            services.AddSingleton <IAmazonSQS>(sqsClient);
        }
Beispiel #4
0
 public static void SetupSqs(this IServiceCollection services, IConfiguration configuration)
 {
     AwsOptions = services.GetTypedOptions <AwsOptions>(configuration, ConfigurationConsts.AwsOptionsNodeName);
     if (AwsOptions == null || AwsOptions.SqSQueueList == null || AwsOptions.SqSQueueList == null || AwsOptions.SqSQueueList.Count == 0)
     {
         return;
     }
     services.AddSingleton <ISqsClientHandler, SqsClientHandler>();
 }
Beispiel #5
0
        protected void SetupConfiguration()
        {
            ConfigurationBuilder = new ConfigurationBuilder()
                                   .AddEnvironmentVariables()
                                   .SetBasePath(Directory.GetCurrentDirectory())
                                   .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);

            Configuration = ConfigurationBuilder.Build();
            AwsOptions    = ServiceCollection.GetTypedOptions <AwsOptions>(Configuration, ConfigurationConsts.AwsOptionsNodeName);
        }
Beispiel #6
0
        public static void ConfigureDevonfwAWS(this IServiceCollection services, IConfiguration configuration, bool setupDevon = false)
        {
            if (setupDevon)
            {
                services.SetupDevonfw(configuration);
            }

            AwsOptions = services.GetTypedOptions <AwsOptions>(configuration, "AWS");
            if (AwsOptions.EnableAws)
            {
                var credentials = services.LoadAwsCredentials();
                var awsRegion   = services.LoadAwsRegionEndpoint();
                (configuration as IConfigurationBuilder)?.AddSecretsHandler(credentials, awsRegion);
                (configuration as IConfigurationBuilder)?.AddParameterStoreHandler(credentials, awsRegion);
            }
        }
Beispiel #7
0
        private async Task OnExecuteAsync()
        {
            var awsOptions = new AwsOptions
            {
                AccessKey = Prompt.GetPassword("AWS Access Key", ConsoleColor.White, ConsoleColor.DarkBlue),
                SecretKey = Prompt.GetPassword("AWS Secret Key", ConsoleColor.White, ConsoleColor.DarkBlue)
            };

            var queueOptions = new QueueOptions {
                WorkerQueueUrl = WorkerQueueUri
            };
            var workerOptions = new WorkerOptions {
                Endpoint = WorkerUri
            };

            Console.Clear();
            Console.CancelKeyPress += ConsoleOnCancelKeyPress;

            try
            {
                using (var providerConfigurator = new ServiceProviderConfigurator())
                    using (var applicationScope = providerConfigurator
                                                  .ConfigureTheWorld(awsOptions, queueOptions, workerOptions).CreateScope())
                    {
                        var messagePump = applicationScope
                                          .ServiceProvider
                                          .GetRequiredService <MessagePump>();

                        await messagePump.RunAsync(Token);
                    }
            }
            catch (Exception e)
            {
                Console.WriteLine("Exception: {0}", e.GetType());
                Console.WriteLine("Message: {0}", e.Message);
                Console.WriteLine("StackTrace:");
                Console.WriteLine(e.Demystify().StackTrace);
            }
            finally
            {
                Console.WriteLine("Press Enter to continue...");
                Console.ReadLine();
            }
        }
Beispiel #8
0
        private static IServiceCollection ConfigureServices()
        {
            var configBuilder = new ConfigurationBuilder();

            configBuilder.AddEnvironmentVariables();
            configBuilder.AddJsonFile("appsettings.json", false, true);
            _configuration = configBuilder.Build();

            var awsOptions = new AwsOptions();

            _configuration.GetSection("aws").Bind(awsOptions);

            Services.AddSingleton <AWSCredentials>(x =>
                                                   new BasicAWSCredentials(awsOptions.AccessKey, awsOptions.SecretKey));
            Services.AddSingleton <IAmazonDynamoDB, AmazonDynamoDBClient>();
            Services.AddSingleton <IPostRepository, PostRepository>();

            return(Services);
        }
Beispiel #9
0
    /// <summary>
    /// Создаёт экземпляры всех настроек и получает значения, чтобы провести процесс валидации при старте приложения.
    /// </summary>
    public static IServiceCollection AddOptionsAndSecretsValidationOnStartup(this IServiceCollection services)
    {
        ////перместить валидацию в общий процесс прогрева https://andrewlock.net/reducing-latency-by-pre-building-singletons-in-asp-net-core/
        try
        {
            HostOptions        hostOptions        = services.BuildServiceProvider().GetService <IOptions <HostOptions> >().Value;
            AwsOptions         awsOptions         = services.BuildServiceProvider().GetService <IOptions <AwsOptions> >().Value;
            ApplicationOptions applicationOptions = services.BuildServiceProvider().GetService <IOptions <ApplicationOptions> >().Value;
            GeneralOptions     generalOptions     = services.BuildServiceProvider().GetService <IOptions <GeneralOptions> >().Value;
            IdempotencyOptions idempotencyOptions = services.BuildServiceProvider().GetService <IOptions <IdempotencyOptions> >().Value;

            AppSecrets appSecrets = services.BuildServiceProvider().GetService <IOptions <AppSecrets> >().Value;
        }
        catch (OptionsValidationException ex)
        {
            Console.WriteLine($"Error validating {ex.OptionsType.FullName}: {string.Join(", ", ex.Failures)}");
            throw;
        }

        return(services);
    }
Beispiel #10
0
        public IServiceProvider ConfigureTheWorld(AwsOptions awsOptions, QueueOptions queueOptions, WorkerOptions workerOptions)
        {
            IServiceCollection services = new ServiceCollection();

            var configurationBuilder = new ConfigurationBuilder()
                                       .AddJsonFile("appsettings.json")
                                       .AddEnvironmentVariables();

            if (IsDevelopment())
            {
                configurationBuilder.AddUserSecrets <Program>();
            }

            var configuration = configurationBuilder.Build();

            var loggerFactory = configuration.ConfigureSerilog();

            services.AddOptions(configuration, queueOptions);
            services.AddLogging(loggerFactory);
            services.AddAws(awsOptions, queueOptions);
            _disposables.AddRange(services.AddLogic(workerOptions));

            return(services.BuildServiceProvider());
        }
 public MediaStoreUserController(IOptions <AwsOptions> options)
 {
     AwsOptions = options.Value;
 }
        public static IWebHostBuilder InitializeDevonFwAws(this IWebHostBuilder builder, AwsOptions awsOptions)
        {
            builder.InitializeDevonFw();

            builder.ConfigureAppConfiguration((context, configurationBuilder) =>
            {
                if (awsOptions.UseSecrets)
                {
                    configurationBuilder.AddSecretsHandler();
                }
            });

            return(builder);
        }
 public SqsSample(ISqsClientHandler sqsClientHandler, IOptions <AwsOptions> options)
 {
     SqsClientHandler = sqsClientHandler;
     AwsOptions       = options.Value;
 }
 public static void ConfigureDevonFwAws(this IServiceCollection services, IConfiguration configuration)
 {
     AwsOptions = services.GetTypedOptions <AwsOptions>(configuration, "Aws");
 }
 public void GetAwsConfigurationObjects(out AWSCredentials awsCredentials, out AwsOptions awsOptions)
 {
     awsCredentials = AWSCredentials;
     awsOptions     = AwsOptions;
 }