2013-02-26 78 views
0

我得到:请求中包含的安全令牌无效AWS SDK Ruby DynamoDB session_token无效

我在哪里获得会话令牌?目前的文件很混乱。一方面它说:

如果您使用具有长期凭据的AWS :: DynamoDB发出请求,则会向Amazon STS请求临时会话凭证。这些将被缓存在过程中并重新使用。

和未来,它说:

亚马逊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 2013-02-26 15:55:14

回答

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不一致。