在rails 5中,我通过引用https://assist-software.net/snippets/how-save-data-amazon-dynamodb-using-ruby-on-rails和https://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)
请帮我解决这个问题。
答案 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” )