在Rails5中,我通过引用https://assist-software.net/snippets/how-save-data-amazon-dynamodb-using-ruby-on-rails和https://readysteadycode.com/howto-access-amazon-dynamodb-with-ruby来使用dynamodb特性
当我尝试加载根页面时,它显示如下错误:
Aws::DynamoDB::Errors::NotFound in Admins::SessionsController#new在session_controller.rb中
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)服务器日志显示错误如下,
Aws::DynamoDB::Errors::NotFound ():
app/controllers/admins/sessions_controller.rb:32:in `login_aws'
app/controllers/admins/sessions_controller.rb:6:in `new'请帮我解决这个问题。
发布于 2018-07-10 06:59:54
您的代码正在尝试连接到在"http://localhost:3000"上运行的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,那么您的意图似乎是改为连接到由亚马逊管理的DynamoDB服务,删除Aws::DynamoDB::Client.new的最后一个参数
dynamodb = Aws::DynamoDB::Client.new(
access_key_id: "xxxx",
secret_access_key: "xxxxx",
region: ENV['AWS_REGION']
)实际上,您的region参数是SDK默认使用的参数,因此您应该能够将客户端初始化块减少为:
dynamodb = Aws::DynamoDB::Client.new(
access_key_id: "xxxx",
secret_access_key: "xxxxx"
)来源:https://docs.aws.amazon.com/sdkforruby/api/Aws/DynamoDB/Client.html
发布于 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“)
https://stackoverflow.com/questions/45562322
复制相似问题