Net Core 2.0 AmazonServiceException: невозможно найти учетные данные - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть следующий код:

public void ConfigureServices(IServiceCollection services)
{
    // AWS Options
    var awsOptions = Configuration.GetAWSOptions();
    services.AddDefaultAWSOptions(awsOptions);

    var client = awsOptions.CreateServiceClient<IAmazonDynamoDB>();
    var dynamoDbOptions = new DynamoDbOptions();
    ConfigurationBinder.Bind(Configuration.GetSection("DynamoDbTables"), dynamoDbOptions);

    services.AddScoped<IDynamoDbManager<MyModel>>(provider => new DynamoDbManager<MyModel>(client, dynamoDbOptions.MyModel));
}

public class DynamoDbManager<T> : DynamoDBContext, IDynamoDbManager<T> where T : class
{
    private DynamoDBOperationConfig _config;

    public DynamoDbManager(IAmazonDynamoDB client, string tableName) : base(client)
    {
        _config = new DynamoDBOperationConfig()
        {
            OverrideTableName = tableName
        };
    }       
}

Мой Appsettings.json как:

{
    "AWS": {
        "Region": "us-east-1",
        "AwsId": "xxx",
        "AwsPassword": "xxx"
    },
    "DynamoDbTables": {
        "MyModel": "MyTable"
    }
}

Когда я запускаю свой код, я получаю сообщение об ошибке:

AmazonServiceException: Unable to find credentials

Исключение 1 из 3: Amazon.Runtime.AmazonClientException: не удалось найти профиль «по умолчанию» в CredentialProfileStoreChain. в Amazon.Runtime.FallbackCredentialsFactory.GetAWSCredentials (источник ICredentialProfileSource) в E: \ JenkinsWorkspaces \ v3-trebuchet-release \ AWSDotNetPublic \ sdk \ src \ Core \ Amazon.Runtime \ Credentials \ FallbackCredentialsF 72

Исключение 2 из 3: System.InvalidOperationException: переменные среды AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY / AWS_SESSION_TOKEN не были установлены с учетными данными AWS.

Исключение 3 из 3: System.Net.Http.HttpRequestException: при отправке запроса произошла ошибка. ---> System.Net.Http.WinHttpException: тайм-аут операции в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw ()

Я перепробовал много вещей, но не смог заставить это работать.

Я пытался:

Настройка профиля как: Amazon.Runtime.AmazonServiceException: невозможно найти учетные данные

А также попытался настроить переменные окружения:

https://github.com/aws/aws-sdk-net/issues/499

Но все еще не может обойти эту ошибку.

1 Ответ

0 голосов
/ 09 ноября 2018

Поэтому, когда мы используем AWS SDK, нам нужно настроить и предоставить ключ доступа AWS и секретный ключ. И из того, с чем я сталкивался, не читается напрямую из настроек приложения. Итак, я обнаружил ниже два рабочих метода, с помощью которых вы можете установить эти учетные данные.

Метод 1 - Использование файла учетных данных

Вы можете создать файл учетных данных и хранить там свои учетные данные. Ниже приведен формат файла.

[default]
aws_access_key_id = your id goes here
aws_secret_access_key = your password goes here

В приведенном выше файле "default" - это имя вашего профиля.

После создания вышеуказанного файла вам необходимо указать в файле Appsettings.json то же самое, что и:

"AWS": {
    "Profile": "default",
    "ProfilesLocation": "C:\\filelocation\\awscredentials",
    "Region": "us-east-1",
   }

Метод 2 - Установка и чтение из переменных среды

Мы можем установить переменные окружения в нашем файле startup.cs, как показано ниже:

Environment.SetEnvironmentVariable("AWS_ACCESS_KEY_ID", Configuration["AWS:AwsId"]);
Environment.SetEnvironmentVariable("AWS_SECRET_ACCESS_KEY", Configuration["AWS:AwsPassword"]);
Environment.SetEnvironmentVariable("AWS_REGION", Configuration["AWS:Region"]); 

И прочитайте эти переменные из нашего файла appSettings.json как:

AWS": {
        "Region": "us-east-1",
        "AwsId": "xxxx",
        "AwsPassword": "xxxx"
      }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...