Ruby on rails 带S3的回形针--AWS::S3::错误::InvalidAccessKeyId
我正在尝试使用S3作为回形针上传文件的主机。S3服务器位于中国北京地区Ruby on rails 带S3的回形针--AWS::S3::错误::InvalidAccessKeyId,ruby-on-rails,ruby-on-rails-4,amazon-s3,paperclip,aws-sdk,Ruby On Rails,Ruby On Rails 4,Amazon S3,Paperclip,Aws Sdk,我正在尝试使用S3作为回形针上传文件的主机。S3服务器位于中国北京地区 # Gemfile gem 'aws-sdk', '< 2.0' gem 'paperclip', "~> 4.2" 我的回形针配置如下 # config/environments/development.rb config.paperclip_defaults = { :storage => :s3, :s3_host_name => 's3.cn-north-1.amazonaws.co
# Gemfile
gem 'aws-sdk', '< 2.0'
gem 'paperclip', "~> 4.2"
我的回形针配置如下
# config/environments/development.rb
config.paperclip_defaults = {
:storage => :s3,
:s3_host_name => 's3.cn-north-1.amazonaws.com.cn',
:bucket => 'superayi-prod-beijing'
}
但是,我仍然得到错误:
AWS::S3::错误::InvalidAccessKeyId
您提供的AWS访问密钥Id在我们的记录中不存在。
如果您使用YAML文件(settings.yml)和ENV变量进行配置,则必须使用以下语法
development:
access_key_id: <%= ENV['S3_KEY'] %>
secret_access_key: <%= ENV['S3_SECRET'] %>
开发:
访问密钥id:
机密\u访问\u密钥:
由于YAML文件可以理解ERB格式的代码,而ruby代码介于之间,因此如果出于配置目的使用YAML文件(settings.yml)和ENV变量,则必须使用以下语法
development:
access_key_id: <%= ENV['S3_KEY'] %>
secret_access_key: <%= ENV['S3_SECRET'] %>
开发:
访问密钥id:
机密\u访问\u密钥:
由于YAML文件可以理解ERB格式的代码,而ruby代码介于之间,因此我在另一个文件中有以下行:
# config/initializers/paperclip.rb
Paperclip::Attachment.default_options[:s3_host_name] = 's3-ap-northeast-1.amazonaws.com'
出于某种原因,这会覆盖development.rb
中的设置
对于面临类似问题的人员,以下故障排除提示可能会有所帮助:
:s3_凭证
选项作为文件路径或散列传递给曲别针s3\u主机名
应该是可以找到的RESTAPI端点。列出了中国区域的端点结果是,我在另一个文件中有以下行:
# config/initializers/paperclip.rb
Paperclip::Attachment.default_options[:s3_host_name] = 's3-ap-northeast-1.amazonaws.com'
出于某种原因,这会覆盖development.rb
中的设置
对于面临类似问题的人员,以下故障排除提示可能会有所帮助:
:s3_凭证
选项作为文件路径或散列传递给曲别针s3\u主机名
应该是可以找到的RESTAPI端点。列出了中国区域的端点你能检查bucket策略中的权限吗?你把你的环境变量放在哪里了?你能检查bucket策略中的权限吗?你把你的环境变量放在哪里了