我尝试使用与配置应用程序的AWS凭据不同的AWS凭据,从交互式ruby shell中访问s3存储桶。
我尝试使用其他密钥/密钥手动设置新的s3客户端,但由于呼叫默认使用应用程序的预配置AWS账户,因此我获得了拒绝访问权限。修改应用程序配置的凭据不是一种选择,因为它需要同时访问不同的AWS资源。
这是我在红宝石外壳中尝试的内容:
s3_2 = AWS::S3.new(:access_key_id => "<key>", :secret_access_key => "<secret>")
bucket = s3_2.buckets['<bucket_name>']
bucket.objects.each do |obj|
puts obj.key
end
(测试只是确认访问,如果我在存储桶上使用公共访问,它可以工作,因为它允许任何AWS用户,但是当我限制它并尝试使用具有s3完全访问权限的新临时用户时在帐户上。)
答案 0 :(得分:1)
Rails控制台应该是使用预配置凭据从服务器实例单独运行的应用程序实例。
以下内容应仅更新rails控制台会话的凭据。
Aws.config.update({credentials:Aws::Credentials.new('your_access_key_id','your_secret_access_key')})
答案 1 :(得分:0)
应初始化新的AWS S3客户端:
s3_2 = Aws::S3::Client.new(:access_key_id => "<key>", :secret_access_key => "<secret>")