using Amazon.XRay.Recorder.Core;
using Amazon.XRay.Recorder.Handlers.AwsSdk;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Amazon.Lambda.Core;
using Amazon.Lambda.APIGatewayEvents;
using Amazon.CloudWatch.Model;
using Amazon.SQS;
using Amazon.SQS.Model;
using Amazon.ECS;
using Amazon.CloudWatch;
using Amazon.Lambda.CloudWatchEvents;
namespace CustomMetric;
///
/// Class which provides DI.
///
internal class Startup
{
public Startup()
{
IConfiguration baseConfiguration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddEnvironmentVariables()
.Build();
Configuration = new ConfigurationBuilder()
.AddConfiguration(baseConfiguration)
.Build();
}
///
/// Configure the DI container.
///
/// Service Provider.
public IServiceProvider Configure()
{
IConfiguration configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddEnvironmentVariables()
.Build();
AWSXRayRecorder.InitializeInstance(Configuration);
IServiceProvider provider = ConfigureServices(Configuration);
return provider;
}
public IConfiguration Configuration { get; }
///
/// Configure Services.
///
/// The configuration.
/// Service Provider.
private IServiceProvider ConfigureServices(IConfiguration configuration)
{
var services = new ServiceCollection();
services.AddSingleton(Configuration);
services.AddTransient();
services.AddTransient();
services.AddTransient();
services.AddSingleton();
return services.BuildServiceProvider();
}
}