2011-04-11 55 views
4

我試圖讓我的煉油廠CMS圖像存儲到Amazon S3,我按照本指南:麻煩S3在Rails的設立煉油廠3 CMS應用

http://refinerycms.com/guides/how-to-use-amazon-s3-for-storage

但我阻止在這裏:

有許多的方法來設置這些 使用您的憑據,包括 UNIX變量或使用ENV的設置將其 通過手動紅寶石。

如何定義這些憑證。我是否在我的environments.rb文件中加入瞭如下內容:S3_KEY => 「my_key」?我試過這個,但沒有奏效。 我也試過這個:

AWS::S3::Base.establish_connection!(
:access_key_id  => ENV['S3_KEY'] || 'key_goes_here', 
:secret_access_key => ENV['S3_SECRET'] || 's3_secret_key_here', 
) 

想不出如何做到這一點。任何想法,不勝感激。

+0

默認密鑰的方法應該工作。您的示例代碼中有一個額外的逗號。 – ghoppe 2011-04-11 01:30:12

回答

6

最安全的方法是將它們指定爲環境變量,因此它們不包含在源代碼中。如果你是唯一可以訪問源代碼的人,那麼按你所描述的那樣指定他們應該是可行的。

您可以在~/.bashrc

export S3_KEY=mykey 
export S3_SECRET=mysecret 

指定它們或者如果你只是測試本地您可以將其前面加上你的rails命令。

$ S3_KEY=mykey S3_SECRET=mysecret rails server 

如果你不想/不能使用環境變量,另一種方法是使用initializer to load credentials from a yml fileconfig/initializers/s3_credentials.rb

# Load AWS::S3 configuration values 
# 
S3_CREDENTIALS = \ 
    YAML.load_file(File.join(Rails.root, 'config/s3_credentials.yml'))[Rails.env] 

# Set the AWS::S3 configuration 
# 
AWS::S3::Base.establish_connection! S3_CREDENTIALS['connection'] 

config/s3_credentials.yml

development: &defaults 
connection: 
    :access_key_id: AAAAAA_your-key-here 
    :secret_access_key: 4rpsi235js_your-secret-here 
    :use_ssl: true 
    bucket: project-development 
    acl: public-read 

production: 
    <<: *defaults 
    bucket: project 
+0

謝謝,它看起來像加載yaml文件是一個更好的方式來做到這一點,但我通過將這些行添加到我的config/environment.rb ENV ['S3_KEY'] ='XXXXXXXXXXXXXXXXXXX' ENV ['S3_SECRET '] ='XXXXXXXXXXXXXXXXXXX' ENV ['S3_BUCKET'] ='my_bucket_name_' – 2011-04-12 13:51:13

+0

您能告訴我可以輸入'mykey'和'mysecret'任何我想要的,或者我必須在某處找到這些值嗎?如果我必須找到它們,我可以在哪裏找到它們。此外,當所有設置完成後,接下來會發生什麼?我必須重新啓動某些東西,執行一些命令還是其他的東西?這個功能將如何?我的網站現在應該有所有圖片......對嗎?這非常混亂。請幫忙 – Dantes 2012-08-11 18:32:52

+0

我希望你現在能夠找到這個,但是關鍵和祕密值來自Amazon S3:https://portal.aws.amazon.com/gp/aws/securityCredentials – Dreyfuzz 2013-04-15 01:47:33

相關問題