【问题标题】:AWS SDK Ruby DynamoDB session_token invalidAWS 开发工具包 Ruby DynamoDB session_token 无效
【发布时间】:2013-03-03 12:39:55
【问题描述】:

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

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

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

【问题讨论】:

  • 请注意,在 irb 中,DynamoDB.new 的启动仅适用于 :access_key_id 和 :secret_access_key。不需要 session_key。同样,在代码中,我可以使用“ddb”句柄。

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    经过反复试验,我发现以下工作。

    cred = {:access_key_id => 'xxxx', 
    :secret_access_key => 'yyyy', :session_token => nil}
    
    ddb = AWS::DynamoDB.new(cred)
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-22
      • 2013-07-19
      • 1970-01-01
      • 2019-04-17
      • 1970-01-01
      • 2014-12-05
      • 1970-01-01
      相关资源
      最近更新 更多