如何将DynamoDB Local与AWS Ruby SDK一起使用?

时间:2014-10-31 17:47:03

标签: ruby amazon-dynamodb aws-sdk

亚马逊的documentation提供了Java,.NET和PHP中有关如何使用DynamoDB Local的示例。你如何使用AWS Ruby SDK做同样的事情?

我的猜测是你在初始化期间传递了一些参数,但我无法弄清楚它们是什么。

dynamo_db = AWS::DynamoDB.new(
  :access_key_id => '...',
  :secret_access_key => '...')

3 个答案:

答案 0 :(得分:16)

您使用的是SDK的v1还是v2?你需要找到它;从上面的简短片段,它看起来像v2。我已经包含了两个答案,以防万一。

v1回答:

AWS.config(use_ssl: false, dynamo_db: { api_verison: '2012-08-10', endpoint: 'localhost', port: '8080' })
dynamo_db = AWS::DynamoDB::Client.new

回答:

require 'aws-sdk-core'
dynamo_db = Aws::DynamoDB::Client.new(endpoint: 'http://localhost:8080')

当然需要更改端口号。

答案 1 :(得分:3)

现在var newGallery = new PhotoSwipe(pswpElement, PhotoSwipeUI_Default, window[thisRoom], options); 版本aws-sdk会因 Aws :: Errors :: MissingCredentialsError:在没有密钥时无法签名请求而抛出错误。所以下面的代码适用于我

2.7

答案 2 :(得分:2)

我写了一个简单的要点,展示如何启动,创建,更新和查询本地dynamodb实例。

https://gist.github.com/SundeepK/4ffff773f92e3a430481

下面是一些简单的代码:

下面是一个在内存中运行dynamoDb的简单命令

#Assuming you have downloading dynamoDBLocal and extracted into a dir called dynamodbLocal
java -Djava.library.path=./dynamodbLocal/DynamoDBLocal_lib -jar ./dynamodbLocal/DynamoDBLocal.jar -inMemory -port 9010

下面是一个简单的ruby脚本

require 'aws-sdk-core'

dynamo_db = Aws::DynamoDB::Client.new(region: "eu-west-1", endpoint: 'http://localhost:9010')
    dynamo_db.create_table({
    table_name: 'TestDB',
    attribute_definitions: [{
        attribute_name: 'SomeKey',
        attribute_type: 'S'
    },
    {
        attribute_name: 'epochMillis',
        attribute_type: 'N'
    }
    ],
    key_schema: [{
        attribute_name: 'SomeKey',
        key_type: 'HASH'
    },
    {
        attribute_name: 'epochMillis',
        key_type: 'RANGE'
    }
    ],
    provisioned_throughput: {
        read_capacity_units: 5,
        write_capacity_units: 5
    }
    })
dynamo_db.put_item( table_name: "TestDB",
    item: { 
    "SomeKey" => "somevalue1", 
    "epochMillis" => 1
})
puts dynamo_db.get_item({
    table_name: "TestDB",
    key: { 
    "SomeKey" => "somevalue",
    "epochMillis" => 1
}}).item

上面将创建一个带有范围键的表,还可以添加/查询添加的相同数据。不是你必须已经安装了aws gem的第2版。