我得到:请求中包含的安全令牌无效
我从哪里获得会话令牌?目前的文档令人困惑。一方面它说:
如果您使用具有长期凭据的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 :(得分: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在当前版本中不一致。