亚马逊的documentation提供了Java,.NET和PHP中关于如何使用DynamoDB Local的示例。你如何对AWS Ruby SDK做同样的事情?您如何在AWS Ruby SDK中使用DynamoDB Local?
我的猜测是你在初始化过程中传递了一些参数,但我无法弄清楚它们是什么。
dynamo_db = AWS::DynamoDB.new(
:access_key_id => '...',
:secret_access_key => '...')
亚马逊的documentation提供了Java,.NET和PHP中关于如何使用DynamoDB Local的示例。你如何对AWS Ruby SDK做同样的事情?您如何在AWS Ruby SDK中使用DynamoDB Local?
我的猜测是你在初始化过程中传递了一些参数,但我无法弄清楚它们是什么。
dynamo_db = AWS::DynamoDB.new(
:access_key_id => '...',
:secret_access_key => '...')
您使用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')
根据需要更改课程的端口号。
我写了一个简单的要点,说明如何启动,创建,更新和查询本地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版。
现在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"
)
我不知道这个答案如何是正确的:AWS :: DynamoDB.new给出了AWS :: DynamoDB'未定义的方法“新”:Module'。 – sheldonh 2015-01-29 07:56:22
哪个版本? – 2015-02-04 18:02:50
aws-sdk-core-2.0.21。适用于我的是'Aws :: DynamoDB :: Client.new(...)'。 – sheldonh 2015-02-05 20:52:48