Amazon 的文档提供了如何使用 DynamoDB Local 的 Java、.NET 和 PHP 示例。您如何使用AWS Ruby 开发工具包做同样的事情?
我的猜测是您在初始化期间传入了一些参数,但我无法弄清楚它们是什么。
dynamo_db = AWS::DynamoDB.new(
:access_key_id => '...',
:secret_access_key => '...')
Amazon 的文档提供了如何使用 DynamoDB Local 的 Java、.NET 和 PHP 示例。您如何使用AWS Ruby 开发工具包做同样的事情?
我的猜测是您在初始化期间传入了一些参数,但我无法弄清楚它们是什么。
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')
当然根据需要更改端口号。
现在aws-sdk
版本2.7
抛出一个错误,因为Aws::Errors::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"
)
我编写了一个简单的要点,展示了如何启动、创建、更新和查询本地 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 版。