Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 带S3的回形针--AWS::S3::错误::InvalidAccessKeyId_Ruby On Rails_Ruby On Rails 4_Amazon S3_Paperclip_Aws Sdk - Fatal编程技术网

Ruby on rails 带S3的回形针--AWS::S3::错误::InvalidAccessKeyId

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

我正在尝试使用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.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
中的设置

对于面临类似问题的人员,以下故障排除提示可能会有所帮助:

  • 正如@Shrikant1712所建议的,aws凭证必须通过
    :s3_凭证
    选项作为文件路径或散列传递给曲别针

  • s3\u主机名
    应该是可以找到的RESTAPI端点。列出了中国区域的端点


  • 结果是,我在另一个文件中有以下行:

    # config/initializers/paperclip.rb
    Paperclip::Attachment.default_options[:s3_host_name] = 's3-ap-northeast-1.amazonaws.com'
    
    出于某种原因,这会覆盖
    development.rb
    中的设置

    对于面临类似问题的人员,以下故障排除提示可能会有所帮助:

  • 正如@Shrikant1712所建议的,aws凭证必须通过
    :s3_凭证
    选项作为文件路径或散列传递给曲别针

  • s3\u主机名
    应该是可以找到的RESTAPI端点。列出了中国区域的端点


  • 你能检查bucket策略中的权限吗?你把你的环境变量放在哪里了?你能检查bucket策略中的权限吗?你把你的环境变量放在哪里了