首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DynamoDB -Aws::DynamoDB::Error::NotFound

DynamoDB -Aws::DynamoDB::Error::NotFound
EN

Stack Overflow用户
提问于 2017-08-08 15:47:54
回答 2查看 202关注 0票数 1

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

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

代码语言:javascript
复制
Aws::DynamoDB::Errors::NotFound in Admins::SessionsController#new

在session_controller.rb中

代码语言:javascript
复制
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

我的秘诀是,

代码语言:javascript
复制
 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)

服务器日志显示错误如下,

代码语言:javascript
复制
 Aws::DynamoDB::Errors::NotFound ():

 app/controllers/admins/sessions_controller.rb:32:in `login_aws'
 app/controllers/admins/sessions_controller.rb:6:in `new'

请帮我解决这个问题。

EN

回答 2

Stack Overflow用户

发布于 2018-07-10 06:59:54

您的代码正在尝试连接到在"http://localhost:3000"上运行的DynamoDB实例

代码语言:javascript
复制
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,那么您的意图似乎是改为连接到由亚马逊管理的DynamoDB服务,删除Aws::DynamoDB::Client.new的最后一个参数

代码语言:javascript
复制
dynamodb = Aws::DynamoDB::Client.new(
   access_key_id: "xxxx", 
   secret_access_key: "xxxxx", 
   region: ENV['AWS_REGION']
)

实际上,您的region参数是SDK默认使用的参数,因此您应该能够将客户端初始化块减少为:

代码语言:javascript
复制
dynamodb = Aws::DynamoDB::Client.new(
   access_key_id: "xxxx", 
   secret_access_key: "xxxxx"
)

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

票数 1
EN

Stack Overflow用户

发布于 2018-12-19 14:14:38

您正在从localhost尝试。然后你需要设置AWS sam本地,你可以在本地测试你的API,这样你就不需要密钥和访问密钥了。但是您使用的是来自AWS cli的,那么您需要以这种方式需要密钥和访问密钥,并且在此模块中,您需要定义区域

dynamodb = Aws::DynamoDB::Client.new( access_key_id:"xxxx",secret_access_key:"xxxxx",region: ENV‘’AWS_REGION‘,endpoint:"http://localhost:3000“)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45562322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档