AWS开发工具包Ruby DynamoDB session_token无效

时间:2013-02-26 15:51:35

标签: ruby session amazon-web-services amazon-dynamodb

我得到:请求中包含的安全令牌无效

我从哪里获得会话令牌?目前的文档令人困惑。一方面它说:

如果您使用具有长期凭据的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

2 个答案:

答案 0 :(得分:0)

文档不正确/旧(在GitHub中的主分支上已更改)。您不再需要会话凭据来使用DynamoDB。您应该只能配置:access_key_id:secret_access_key

如果您确实需要会话凭据,可以从AWS::STS获取它们。

答案 1 :(得分:0)

经过一些反复试验,我发现以下情况有效。

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

ddb = AWS::DynamoDB.new(cred)

在我的原始示例中,ddb句柄适用于某些操作,但不适用于batch_write。传递'nil'的作品。文档不清楚,API在当前版本中不一致。