1

I have a .NET Core Worker service using AWS SQS to read messages off a queue. For local development I'm using a default profile with access/secret key stored in that. My appSettings.json is set up as follows:

{
  "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"
  }
}

I'm using DI to set up the services:

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>();
        });

But when I run the program in debug, it fails to read a message off the queue within Worker.cs with the following error:

An exception of type 'Amazon.Runtime.AmazonServiceException' occurred in System.Private.CoreLib.dll but was not handled in user code: 'Unable to get IAM security credentials from EC2 Instance Metadata Service.'

On startup it seems like after a couple of tries along the credentials chain it finds my credentials?

[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

So why is it failing? If I check the immediate window I can see it's picking up my setttings:

?hostContext.Configuration.GetAWSOptions().Profile
"default"
?hostContext.Configuration.GetAWSOptions().ProfilesLocation
"C:\\Users\\JMatson\\.aws\\credentials"
JamesMatson
  • 2,522
  • 2
  • 37
  • 86

0 Answers0