Как установить учетные данные в AWS SDK на NET Core?

Я новичок в AWS SDK, и я стараюсь следовать документации AWS но практически не дает мне то, что мне нужно для настройки.

Официальные документы говорят мне добавить это в appsettings.json:

{
  "AWS": {
    "Profile": "local-test-profile",
    "Region": "us-west-2"
  }
}

И затем создайте клиента:

var options = Configuration.GetAWSOptions();
IAmazonS3 client = options.CreateServiceClient<IAmazonS3>();

Это вызывает исключение, говорящее, что оно не может найти учетные данные. Где я могу поместить идентификатор Api и ключ? Что это за профиль?

Пожалуйста, имейте в виду, что у меня нет никаких предпочтений в отношении того, как это установить. Я просто пытаюсь следовать официальной документации для .NET Core, и их единственный пример не работает. Документы, похоже, подразумевают, что я должен иметь предварительное знание многих своих условий и настроек или что я переношу существующее приложение и уже настроил все настройки.

Может ли кто-нибудь указать мне, чего не хватает в этом примере, только чтобы API правильно подключился к AWS?

Ответ 1

Файл json - это $"appsettings. {env.EnvironmentName}.json", поэтому вы должны вызвать его appsettings.Development.json и установить переменную окружения.

Вы указали свой профиль "local-test-profile" в файле учетных данных AWS.

Должно быть в C:\Users\{USERNAME} \. aws\credentials

[local-test-profile]
aws_access_key_id = your_access_key_id
aws_secret_access_key = your_secret_access_key

Если вы не хотите, чтобы он находился в папке по умолчанию, вы можете установить конфигурационный файл javascript "ProfilesLocation".

Ответ 2

Возможно, это слишком поздно для вас, но если вы используете докер или имеете какую-то другую среду/настройку, где невозможно/легко использовать профили AWS, вы все равно можете использовать окружения vars. Например:

var awsOptions = Configuration.GetAWSOptions(); awsOptions.Credentials = new EnvironmentVariablesAWSCredentials(); services.AddDefaultAWSOptions(awsOptions); services.AddAWSService<IAmazonS3>();

Затем установите в вашей среде AWS_ACCESSS_KEY_ID и AWS_SECRET_ACCESS_KEY и AWS_REGION.

Кажется, что Amazon сделал это труднее найти в документах, чем это должно быть.

Запуск в AWS для реалов - это нормально, потому что вы должны использовать роль, но если вы используете докер для dev, тогда настройка профиля в контейнере - это PITA.

Ответ 3

В той же документации также содержится раздел для настройки учетных данных. Посмотрите здесь http://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/net-dg-config-creds.html

В нем нет примера настройки учетных данных с помощью файла appSettings.json, поскольку они не считают это правильным (безопасным) способом его выполнения.

Вот из вводной части раздела о настройке учетных данных:

Не помещайте лимитированные ключи доступа в приложение, включая проект App.config или файл Web.config. Если вы это сделаете, вы создадите риск случайно выставлять свои учетные данные, если, например, вы загружаете проект в общедоступный репозиторий.