Почему я не могу ничего регистрировать из приложения .NET Core, работающего на AWS ECS?

#.net #asp.net-core #logging #amazon-ecs #amazon-cloudwatch

Вопрос:

У меня есть приложение, написанное на .NET Core 3.1, докеризованное и развернутое в AWS ECS. Мое определение задачи настроено для отправки журналов в CloudWatch.

Независимо от того, что я делаю, я не могу настроить ведение журнала в своем приложении для отправки пользовательских журналов.

Program.cs

 public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureLogging(o =>
                {
                    o.AddAWSProvider();
                    o.SetMinimumLevel(LogLevel.Debug);
                })
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });
 

MyService.cs

 [ServiceContract]
    public class HealthCheckService
    {
        private readonly ILogger<HealthCheckService> _logger;

        public HealthCheckService(ILogger<HealthCheckService> logger)
        {
            _logger = logger;
        }

        [OperationContract]
        public string HealthCheck(string input)
        {
            _logger.LogInformation("test from health check");
            return input;
        }
    }
 

Конечная точка службы работает. Я могу позвонить туда и получить хороший ответ. Но в CloudWatch я не вижу ничего, кроме тех же нескольких основных журналов.

Разве ведение журнала не должно быть глупо простым? Возможно, так оно и есть, и мне просто должно быть очень плохо о себе…

Ответ №1:

  1. Проверьте, имеет ли ваша задача достаточные разрешения для записи в журналы CloudWatch. Роль, которая управляет вашими разрешениями, — это роль задачи (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html) Роль задачи

Я тестирую политику CloudWatchFullAccess Разрешения

  1. Проверьте, находитесь ли вы в правильном регионе. Моя конфигурация выглядит следующим образом(https://github.com/aws/aws-logging-dotnet#aspnet-core-logging)
      "Logging": {
         "IncludeCategory": true,
         "IncludeEventId": false,
         "IncludeException": true,
         "IncludeLogLevel": true,
         "IncludeNewline": true,
         "IncludeScopes": false,
         "LogGroup": "AspNetCore.WebSample",
         "LogLevel": {
           "Default": "Debug",
           "System": "Information",
           "Microsoft": "Information"
         },
        "Region": "eu-central-1"
    }
     

    Мои журналы облачных часов находятся в Европе (Франкфурт) eu-central-1

Ничто не бывает так просто, как должно быть, так что не волнуйтесь, если с первого раза что-то не получится.

Комментарии:

1. Спасибо, не хватало роли задачи с соответствующими разрешениями.