Я пытаюсь использовать AWS CloudWatch Logs в качестве места назначения для ведения журналов в моем приложении ASP.NET Core.Я использую официальный пакет AWS NuGet AWS.Logger.AspNetCore
.
Я создал роль IAM со следующей политикой и прикрепил ее к своему экземпляру EC2:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents",
"logs:DescribeLogGroups"
],
"Resource": [
"arn:aws:logs:*:*:*"
]
}
]
}
В своем appsettings.json
я добавил следующее:
{
"AWS.Logging": {
"Region": "ap-southeast-2",
"LogGroup": "<my app>",
"LogLevel": {
"Default": "Warning",
"System": "Warning",
"Microsoft": "Warning"
}
}
}
В моем файле Startup.cs
я добавил следующее в метод Configure
:
loggerFactory.AddAWSProvider(this.Configuration.GetAWSLoggingConfigSection());
При запуске приложения я получаю следующую ошибку:
Application startup exception
System.NullReferenceException: Object reference not set to an instance of an object.
at <My.Application>.Startup.Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) in <My.Application>/Startup.cs:line 81
End of stack trace from previous location where exception was thrown ---
at Microsoft.AspNetCore.Hosting.ConventionBasedStartup.Configure(IApplicationBuilder app)
at Microsoft.AspNetCore.HostFilteringStartupFilter.<>c__DisplayClass0_0.<Configure>b__0(IApplicationBuilder app)
at Microsoft.AspNetCore.Hosting.Internal.AutoRequestServicesStartupFilter.<>c__DisplayClass0_0.<Configure>b__0(IApplicationBuilder builder)
at Microsoft.AspNetCore.Hosting.Internal.WebHost.BuildApplication()
Startup.cs:81
содержит:
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
Мне удалось успешно выполнить все эти операции с журналами CloudWatch внутри моего экземпляра EC2 с помощью интерфейса командной строки AWS.
Требуется ли для библиотеки AWS.Logger.AspNetCore
дополнительные разрешения?