2012-10-07 11 views
5

私は、FileFieldとImageFieldのアップロード用にHerokuとAWS S3を連携させる方法を研究してきました。しかし、私はそれを働かせることに失敗してきました。Django + Heroku + S3

計画は、いくつかのファイルをアップロードする

  1. 使用FileFieldにしています。
  2. プロフィール写真にはImageFieldを使用してください。
  3. これらの画像のサイズを変更するには、サムネイルを使用します。

私はthisの記事に続きましたが、動作していないようです。 私には何かがありますか? 可能な限り無痛なファイルアップロードが欲しいです。より多くのdjangoとheroku AWSよりもフレンドリーな良い選択肢はありますか?この点についての助力は高く評価されます。

答えて

5

S3の静的ファイルを管理するためにDjango Storagesを使用してください。その後、Heroku Static assets guide when deployingに従ってください。

まず、AWS Consoleまたはお気に入りのツールのいずれかを使用して、S3でバケットを作成します。次に、あなたのsettings.pyを修正し、次の値を追加します。私たちはAWSのアクセスキーと秘密鍵を格納するために、環境変数を使用している

import os 

AWS_ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID') 
AWS_SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY') 
AWS_STORAGE_BUCKET_NAME = '<YOUR BUCKET NAME>' 

STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage' 
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage' 

STATIC_URL = 'http://' + AWS_STORAGE_BUCKET_NAME + '.s3.amazonaws.com/' 
ADMIN_MEDIA_PREFIX = STATIC_URL + 'admin/' 

注意してください。このトピックについては、展開しているDjangoアプリケーションをソースをオープンする予定の場合は、SECRET_KEYを環境変数に格納することも検討してください。

上記はhere

+0

です。これは素晴らしいです!ありがとう!あなたが望むかもしれない唯一のことは、このアプローチがBotoなので、このアプローチを使用する人は誰でも[Boto](http://pypi.python.org/pypi/boto)もインストールする必要があるということです。 私はあなたのために別の質問をしました。アクセス制御ポリシーをpublic-readに追加するにはどうすればよいですか?私はsettings.pyにacl = 'public-read'を追加しようとしましたが、うまくいきませんでした。 – Jonathan

+0

Google Docsビューアでアップロードするファイルにアクセスできるようにします。それを実現させる方法はありますか? – Jonathan

+0

おそらくhttp://aws.amazon.com/s3/faqs/#How_can_I_control_access_to_my_data_stored_on_Amazon_S3は助けますか? –

関連する問題