0

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

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

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

2 回答 2

0

经过一些试验和错误,我发现以下工作。

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

ddb = AWS::DynamoDB.new(cred)

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

于 2013-03-03T04:39:55.053 回答
0

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

如果您确实需要会话凭据,可以从AWS::STS.

于 2013-03-02T20:51:58.250 回答