Как загрузить конфигурацию из ~/.aws/config

журнал изменений говорит: Load config from ~/.aws/config if AWS_SDK_LOAD_CONFIG is set. Не удалось найти примеры или документация о том, как загрузить конфиг. Любая помощь!


person sreenivas    schedule 08.06.2017    source источник
comment
Если вы установите AWS_SDK_LOAD_CONFIG в истинное значение, SDK автоматически загрузит файл ~/.aws/config так же, как это сделал бы интерфейс командной строки AWS. Какой пример вы ищете?   -  person giaour    schedule 08.06.2017
comment
В nodejs я могу установить для переменной env истинное значение с помощью process.env.AWS_SDK_LOAD_CONFIG = true; Как я могу получить значение региона в конфигурации? Не могли бы вы поделиться некоторым кодом?   -  person sreenivas    schedule 09.06.2017


Ответы (3)


В том, как aws-sdk загружает конфигурацию, есть немного волшебства.

либо установите переменную env

export AWS_SDK_LOAD_CONFIG="true"

или перед загрузкой набора aws-sdk

process.env.AWS_SDK_LOAD_CONFIG = true; 

Затем загрузите модуль aws;

var AWS = require('aws-sdk');

Вы можете получить доступ к региону напрямую,

AWS.config.region
person sreenivas    schedule 22.06.2017

Ответ sreenivas правильный. Это также кажется единственным способом сделать это без написания пользовательской функции.

Я проследил это в исходный код и способ загрузки ~/.aws/config похож на этот псевдокод:

if process.env.AWS_SDK_LOAD_CONFIG:
  return load('~/.aws/credentials').overwrite('~/.aws/config')
else:
  return load('~/.aws/credentials')

Это также означает, что вы можете установить переменную среды после require('aws-sdk'), если вы сделаете это до new SharedIniFileCredentials({..}) или credentials.refresh(). Имейте в виду, что credentials.get() не будет работать, пока не истечет срок действия маркера сеанса.

person Toon Vanvreckem    schedule 14.06.2019

Для этого есть документация:

Я бы рекомендовал установить инструмент awscli, чтобы настроить его, а затем запустить aws configure в своем терминале. По умолчанию все, что вы запускаете на своем локальном хосте, будет использовать учетные данные, указанные в вашем файле config, если не указано, что вы используете другой профиль.

Пример из первой ссылки:

AWS.config.credentials = new AWS.SharedIniFileCredentials( { profile: 'work-account' } );

Если вы используете CLI для запуска скрипта:

AWS_PROFILE=work-account node script.js

Если вы используете только инструмент CLI, а не JavaScript:

aws s3 ls --profile work-account

Обновление:

config и credentials создаются и упоминаются в одно и то же время. Когда вы запускаете aws configure, он создает два файла. Файл credentials, содержащий AccessKey и SecretKey, и файл config, содержащий тип ответа и регион. НЕТ необходимости явно определять или ссылаться на файл config.

person iSkore    schedule 08.06.2017
comment
Я ищу «конфигурацию», а не «учетные данные». - person sreenivas; 09.06.2017
comment
Они сделаны одновременно. Когда вы запускаете aws configure, он создает два файла. Файл credentials, содержащий AccessKey и SecretKey, и файл config, содержащий тип ответа и регион. НЕТ необходимости явно определять или ссылаться на файл config - person iSkore; 09.06.2017