Aws SDK Ruby - автоматическое получение учетных данных при настройке Фарадея - PullRequest
0 голосов
/ 14 апреля 2020

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

AWS SDK для Ruby ищет учетные данные [...]

Есть ли какой-нибудь способ получить код, который делает это для настройки Фарадея с AWS? Чтобы настроить Фарадея, мне нужно что-то вроде

faraday.request(:aws_sigv4,
      service: 'es',
      credentials: credentials,
      region: ENV['AWS_REGION'],
    )

Теперь я хотел бы, чтобы эти учетные данные выбирались «автоматически», как в aws sdk v3. Как я могу это сделать?

(ie где находится код в AWS SDK v3, который делает что-то вроде

credentials = Aws::Credentials.new(ENV['AWS_ACCESS_KEY_ID'], ENV['AWS_SECRET_ACCESS_KEY'])
unless credentials.set?
  credentials = Aws::InstanceProfileCredentials.new
end
...

1 Ответ

0 голосов
/ 14 апреля 2020

Класс Aws::CredentialProviderChain отвечает за разрешение учетных данных, но он помечен как @api private, поэтому в настоящее время нет никакой гарантии, что он останется там после обновлений (я открыл обсуждение, чтобы опубликовать его c).

Если вы можете использовать его, вы можете разрешить учетные данные, как это. Я собираюсь протестировать его в CI (кредиты ENV), разработке (Aws конфигурации кредитов) и промежуточных / производственных средах (кредиты профиля экземпляра).

Aws::CredentialProviderChain.new.resolve

Вы может использовать его в промежуточном программном обеспечении, как это (например, при настройке Elasticsearch / Faraday)

faraday.request(:aws_sigv4,
  service: 'es',
  credentials: Aws::CredentialProviderChain.new.resolve,
  region: ENV['AWS_REGION'],
)
end
...