6

Amazon 的文档提供了如何使用 DynamoDB Local 的 Java、.NET 和 PHP 示例。您如何使用AWS Ruby 开发工具包做同样的事情?

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

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

3 回答 3

17

您使用的是 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')

当然根据需要更改端口号。

于 2014-11-04T20:32:44.320 回答
6

现在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"
)
于 2017-01-24T12:53:24.770 回答
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 版。

于 2015-07-22T21:25:16.467 回答