2016-03-11 122 views
0

我想使用S3作爲我的主機Paperclip上傳的文件。 S3服務器在中國北京地區。回形針與S3 - AWS :: S3 ::錯誤:: InvalidAccessKeyId

# Gemfile 
gem 'aws-sdk', '< 2.0' 
gem 'paperclip', "~> 4.2" 

我已經使用環境變量設置了AWS。

AWS_ACCESS_KEY_ID: <access key> 
AWS_SECRET_ACCESS_KEY: <secret key> 
AWS_REGION: 'cn-north-1' 

AWS的設置應該是成功的,因爲我可以在使用

AWS::S3.new.buckets.create('dns-compat-bucket-name') 

創造Rails的控制檯桶和我的回形針的配置是遵循

# 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::Errors::InvalidAccessKeyId

The AWS Access Key Id you provided does not exist in our records.

+0

你能檢查桶策略的權限嗎? – Shrikant1712

+0

你還把你的ENV varibales放在哪裏? – Shrikant1712

回答

0

如果您使用的YAML文件(settings.yml中)和配置目的ENV變量,那麼你必須使用以下語法

development: 
    access_key_id: <%= ENV['S3_KEY'] %> 
    secret_access_key: <%= ENV['S3_SECRET'] %> 

由於YAML文件可以在ERB格式理解的代碼和Ruby代碼去<%和%之間>

0

它最終被,我在另一文件中的下面的行:

# config/initializers/paperclip.rb 
Paperclip::Attachment.default_options[:s3_host_name] = 's3-ap-northeast-1.amazonaws.com' 

這出於某種原因,將覆蓋development.rb中的設置。

對於誰是面臨着這樣的類似問題的人,下面的故障排除提示可能會有所幫助:

  1. 正如@ Shrikant1712建議,在AWS憑證必須通過經:s3_credentials選項要麼以回形針一個文件路徑或一個哈希。

  2. s3_host_name應該是REST API端點,可以找到here。中國地區的終點列於here

相關問題