DynamoDB - Aws :: DynamoDB :: Errors :: NotFound

时间:2017-08-08 07:47:54

标签: ruby-on-rails ruby amazon-web-services amazon-dynamodb

在rails 5中,我通过引用https://assist-software.net/snippets/how-save-data-amazon-dynamodb-using-ruby-on-railshttps://readysteadycode.com/howto-access-amazon-dynamodb-with-ruby

来使用dynamodb功能

当我尝试加载根页面时,它会显示错误,如

pub extern

在session_controller.rb

Aws::DynamoDB::Errors::NotFound in Admins::SessionsController#new

我的宝石是,

def new
  login_aws
end
def login_aws
  ENV['AWS_REGION'] = "us-east-1"
  dynamodb = Aws::DynamoDB::Client.new(access_key_id: "xxxx", secret_access_key: "xxxxx", region: ENV['AWS_REGION'], endpoint: "http://localhost:3000")
  response = dynamodb.scan(table_name: 'admin')
  @admin = response.items.take(1).inject(:merge)
end

服务器日志显示错误,如

 aws-sdk (2.10.19, 1.67.0)
 aws-sdk-core (2.10.19)
 aws-sdk-resources (2.10.19)
 aws-sdk-v1 (1.67.0)

请帮我解决这个问题。

2 个答案:

答案 0 :(得分:0)

您的代码正在尝试连接到运行在ZipEntry上的DynamoDB实例:

ZipFile

鉴于您将ZipEntry环境变量设置为"http://localhost:3000",看来您的意图是改为连接到Amazon管理的DynamoDB服务,删除dynamodb = Aws::DynamoDB::Client.new( access_key_id: "xxxx", secret_access_key: "xxxxx", region: ENV['AWS_REGION'], endpoint: "http://localhost:3000" ) 的最后一个参数:

AWS_REGION

实际上,您的us-east-1参数是SDK默认使用的参数,因此您应该可以将客户端初始化块减少为:

Aws::DynamoDB::Client.new

来源:https://docs.aws.amazon.com/sdkforruby/api/Aws/DynamoDB/Client.html

答案 1 :(得分:0)

您正在尝试从本地主机。然后,您需要在本地设置AWS sam,可以在本地测试API,然后不需要秘密密钥和访问密钥。但是您从AWS CLI使用,则需要以这种方式要求密钥和访问密钥 在此模块中,您需要定义区域

dynamodb = Aws :: DynamoDB :: Client.new(    access_key_id:“ xxxx”,    secret_access_key:“ xxxxx”,    区域:ENV ['AWS_REGION'],    端点:“ http://localhost:3000” )