2014-10-31 66 views

回答

15

您使用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 

V2答案:

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

根据需要更改课程的端口号。

+0

我不知道这个答案如何是正确的:AWS :: DynamoDB.new给出了AWS :: DynamoDB'未定义的方法“新”:Module'。 – sheldonh 2015-01-29 07:56:22

+0

哪个版本? – 2015-02-04 18:02:50

+0

aws-sdk-core-2.0.21。适用于我的是'Aws :: DynamoDB :: Client.new(...)'。 – sheldonh 2015-02-05 20:52:48

2

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

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

继承人跑下来的一些简单的代码:

下面是一个简单的命令在内存

#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 

以下运行dynamoDb是一个简单的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版。

2

现在aws-sdk版本2.7抛出一个错误AWS ::错误:: MissingCredentialsError:无法无凭据设置当键不存在签名请求。所以,下面的代码对我的作品

dynamo_db = Aws::DynamoDB::Client.new(
    region: "your-region", 
    access_key_id: "anykey-or-xxx", 
    secret_access_key: "anykey-or-xxx", 
    endpoint: "http://localhost:8080" 
)