AWS. NET Базовая рабочая служба, использующая AWS локальный профиль для разработки, пытается получить доступ к учетным данным IAM из профиля экземпляра? - PullRequest
1 голос
/ 10 апреля 2020

У меня есть служба. NET Core Worker, использующая AWS SQS для чтения сообщений из очереди. Для локальной разработки я использую профиль по умолчанию, в котором хранится секретный ключ доступа. Мои appSettings. json настроены следующим образом:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    },
    "TargetCloudWatchGroup": "/aws/insite/workers"
  },
  "App": {
    "TaskProcessDelay": 10000,
    "Environment": "NA",
    "WorkerType": "INCOMING"
  },
  "AWS": {
    "Region": "ap-southeast-2",
    "Profile": "default",
    "ProfilesLocation": "C:\\Users\\JMatson\\.aws\\credentials",
    "AwsQueueLongPollTimeSeconds": 5,
    "QueueUrl": "https://sqs.ap-southeast-2.amazonaws.com/712510509017/insite-incoming-dev"
  }
}

Я использую DI для настройки служб:

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureServices((hostContext, services) =>
        {
            //var options = hostContext.Configuration.GetAWSOptions();
            services.AddDefaultAWSOptions(hostContext.Configuration.GetAWSOptions());
            services.AddHostedService<Worker>();
            services.AddSingleton<ILogger, Logger>(); // Using my own basic wrapper around NLog for the moment, pumped to CloudWatch.
            services.AddAWSService<IAmazonSQS>();
        });

Но когда я запускаю программу в режиме отладки, он не может прочитать сообщение из очереди в Worker.cs со следующей ошибкой:

Исключение типа 'Amazon.Runtime.AmazonServiceException' произошло в System.Private.CoreLib.dll, но не было обработано в коде пользователя: «Невозможно получить учетные данные безопасности IAM из службы метаданных экземпляра EC2».

При запуске кажется, что после нескольких попыток в цепочке учетных данных он находит мои учетные данные?

[40m[32minfo[39m[22m[49m: AWSSDK[0]
      Failed to find AWS credentials for the profile default
AWSSDK: Information: Failed to find AWS credentials for the profile default
[40m[32minfo[39m[22m[49m: AWSSDK[0]
      Found credentials using the AWS SDK's default credential search
AWSSDK: Information: Found credentials using the AWS SDK's default credential search

Так почему же он не работает? Если я проверяю ближайшее окно, я вижу, что оно собирает мои расчеты:

?hostContext.Configuration.GetAWSOptions().Profile
"default"
?hostContext.Configuration.GetAWSOptions().ProfilesLocation
"C:\\Users\\JMatson\\.aws\\credentials"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...