2013-02-26 3 views
0

я получаю: Маркер безопасности включен в запрос недействителенAWS SDK рубин DynamoDB session_token недействителен

Где я могу получить маркер сеанса? Текущая документация сбивает с толку. С одной стороны, он говорит:

Если вы делаете запрос с использованием AWS :: DynamoDB с долгосрочными учетными данными, запрос на временные учетные данные Amazon STS выполняется. Они будут кэшироваться в процессе и повторно использоваться.

и рядом он говорит:

Amazon DynamoDB требует, чтобы все запросы сделаны с краткосрочными учетными данными (например, требуется маркер сеанса).

так точно, откуда происходит session_token, если я его не предоставил? И если вызов обеспечивает его, почему он будет недействительным?

requires 'aws-sdk' 

cred = {:access_key_id => 'xxxx', 
:secret_access_key => 'yyyy'} 

#:session_token => ''} 

ddb = AWS::DynamoDB.new(cred) 
items = {...} 
ddb.batch_write do |batch| 
    batch.put('my_mappings', items) 
end 
+0

Обратите внимание, что в irb инициализация DynamoDB.new работает нормально только с помощью: access_key_id и: secret_access_key. Нет session_key. Кроме того, в коде я могу работать с дескриптором 'ddb'. – dcvii

ответ

0

Документация неправильная/старая (ее изменения были изменены на главной ветке в GitHub). Вы больше не требуете учетных данных сеанса для использования DynamoDB. Вы должны иметь возможность настроить только ваши :access_key_id и :secret_access_key.

Если вам нужны учетные данные, вы можете получить их от AWS::STS.

0

После некоторых проб и ошибок, я обнаружил, что следующие работы.

cred = {:access_key_id => 'xxxx', 
:secret_access_key => 'yyyy', :session_token => nil} 

ddb = AWS::DynamoDB.new(cred) 

В моем первоначальном примере дескриптор ddb будет работать для определенных операций, но не для batch_write. Передача «ноль» работает. Документация неясна, и API несовместим в текущей версии.

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