ファイルをAWS S3バケットにアップロードするdjangoプロジェクトがあります。アップロードされたファイルとスタティックファイルは、たとえば{% static %}
タグを使用してテンプレートにレンダリングされた場合、正しく表示されます。しかし、model_object.image.url
を使用してJavaScriptコードで画像にアクセスする場合、画像は表示されません。私はそれが私にこのエラーを与え、JSコードでレンダリングし、ブラウザ上でそれを貼り付けたURLを取り、コードを検査:バケツに保存された画像にJavaScriptでアクセスできません。
<Error>
<Code>AccessDenied</Code>
<Message>Query-string authentication requires the Signature, Expires and AWSAccessKeyId parameters</Message>
<RequestId>xxxx</RequestId><HostId>xxx</HostId>
</Error>
役に立つかもしれないいくつかのより多くの情報:
をユーザーが画像をアップロードした後、画像をトリミングすることができます。
$('.div').croppie({
url: '{{ model_object.image.url }}',
});
すべてがローカルに動作します。私はそれがこのような画像のURLを使用するJSライブラリで、このためにCroppieを使用しています。 AWSの問題ですが、わかりません。
はsolarissmoke
コメントに続いて、私は私のバケットにこのバケットポリシーを追加しました:
{
"Version": "2012-10-17",
"Id": "Policy1468082822770",
"Statement": [
{
"Sid": "Stmt1468082812651",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::criptolibertad/*"
}
]
}
しかし、それはまだ動作しません。私はこのようなルックスを動作しませんテンプレートでレンダリングされたURLに気づいた:
https://criptolibertad.s3.amazonaws.com/Django/0_squashmigrations.jpeg?Signature=HFDdOYvrfqz5DG ...
私はバケツから直接リソースを開いた場合、URLは次のようになります。私も右
https://s3-us-west-2.amazonaws.com/criptolibertad/Django/0_squash+migrations.jpeg?X-Amz-Date=201607 ...
フォルダをクリックし、ちょうどの場合のためにMake Public
を選択しました。
アドバイスは役に立ちます。
S3バケット/オブジェクトは、公開されていないように見えます.S3バケット/オブジェクトは、認証なしでアクセスする必要があります。いくつかのアイデアについては、[この質問](http://stackoverflow.com/questions/19176926/how-to-make-all-objects-in-aws-s3-bucket-public-by-default)を参照してください。 – solarissmoke
@solarissmokeコメントをいただき、ありがとうございました。しかし、それはまだ動作しません。 – alejoss