2016-11-15 4 views
1

У нас есть веб-приложение, которое использует Amazon S3 повсюду, и для облегчения обслуживания мы настроили отдельного пользователя IAM с соответствующими разрешениями на ведро и т. Д. Мы предварительно установили учетные данные для этого пользователь в разделе инициализации нашего приложения рубин/Sinatra, так как при:Переопределение учетных данных по умолчанию в AWS-SDK

# MyS3UserIAM 
Aws.config.update({ 
     :region => 'us-east-1', 
     :credentials => Aws::Credentials.new(ENV['AWS_S3_KEY'],ENV['AWS_S3_SECRET']) 
}) 

Это прекрасно работает, потому что мы можем создать экземпляр S3 все объекты в нашем коде без необходимости повторно указать учетные данные каждый раз.

Проблема заключается в том, что теперь мы добавили небольшую подпрограмму в подраздел нашего сайта, который должен использовать Amazon DynamoDB всего за два вызова. Мы создали отдельный IAM с правами доступа к таблицам DynamoDB, и мы создаем объект как, таким образом, в рамках подпрограммы:

# MyDynamoUserIAM 
mydynamodb = Aws::DynamoDB::Client.new(
    access_key_id: ENV['AWS_DYNAMO_KEY'], 
    secret_access_key: ENV['AWS_DYNAMO_SECRET'] 
) 

Проблема заключается в том, что, когда мы пытаемся сделать любой запрос, используя mydynamodb, мы получаем отказ доступа, заявляя, что MyS3UserIAM не имеет разрешений на наши таблицы DynamoDB.

(На самом деле, ошибка сбивает с толку, потому что сообщение об ошибке дает нашим MyDynamoUserIAM ARN в строке ошибки, но отображает MyS3UserIAM как имя IAM!)

я бы подумал, что указав учетные данные во время создания Aws::Object будут отменять настройки Aws.config, но, похоже, это не так. Есть ли способ обойти это?

ответ

1

Задание явных учетных данных при построении Aws Client переопределит параметры Aws.config. Что-то еще идет не так.

Я подозреваю, что переменные env AWS_DYNAMO_KEY/AWS_DYNAMO_SECRET разрешают nil в вашей среде. Если вы передадите access_key_id: nil при создании клиента, SDK будет рассматривать его так, как если бы вы не предоставили этот параметр и не возвращались в цепочку поставщиков учетных данных, чтобы найти учетные данные. Двойная проверка того, что значения, которые вы получаете, соответствуют тем, что вы ожидаете.

Также возможно, что политики IAM, связанные с этим пользователем IAM, имеют проблемы. Если переменные окружения имеют правильные значения, отправьте свою измененную политику IAM, чтобы мы могли ее просмотреть.

 Смежные вопросы

  • Нет связанных вопросов^_^