2017-08-18 7 views
1

私は、PostgreSQLをデータベースとして使用し、S3バケットをイメージ用のストレージとして使用するSpringブートアプリケーションに取り組んでいます。私はS3のバケットに画像をアップロードし、DBにその名前を保存している新しいエントリを保存するとき。私はこのようなビューのURLパターンを付加する必要がS3バケットからの画像取得するには、次のSpring Bootを使用してAWS S3からファイルを取得する最も良い方法は?

<img th:src="@{'https://s3.us-east-2.amazonaws.com/MYBUCKETNAME/test/'+${entry.image}}" height="256" width="256"/> 

をしかし、私はS3に新しいポリシーを追加することによって、「テスト」フォルダ公共のためのすべての着信ファイルを作成する必要が画像を見て

{ 
"Version": "2008-10-17", 
"Statement": [ 
    { 
     "Sid": "AllowPublicRead", 
     "Effect": "Allow", 
     "Principal": { 
      "AWS": "*" 
     }, 
     "Action": "s3:GetObject", 
     "Resource": "arn:aws:s3:::MYBUCKETNAME/test/*" 
    } 
] 

}

質問:このようなバケット

  1. これは、保存的なアプローチですか?
  2. 別の方法でファイルを取得できますか?

答えて

1

以下のリンクからより多くの情報を得ることができます。あなたが確認する必要があるのは、バケットの内容を一覧表示する許可を与えないことだけです。ブラウザで https://s3.us-east-2.amazonaws.com/MYBUCKETNAME/test/ と入力すると、このフォルダ内のすべてのファイル名をリストするべきではありません。

Mohan;ファイルを取得するためにCDN(s3バケットの前に)を設定することもできます。しかしそれはあなたの顧客のための積み込み時間を改善することだけです。それは余分な構成と費用であり、地理的に分散した顧客がたくさんある場合にのみ役立ちます。

+1

https://s3.us-east-2.amazonaws.com/MYBUCKETNAME/test/と入力したときにAccessDeniedと表示されていますが、今は問題ありません))今後の改善のヒント! –

+0

すごい..全部ベスト – Deepak

1

S3バケットにCDNを設定し、Edge Locationから直接イメージを配信できます。

AWS CDN

https://aws.amazon.com/caching/cdn/

についての記事を読むあなたはCloudFrontの分布を作成し、この配信のためのオリジンサーバとしてMYBUCKETNAME.s3.amazonaws.comを指定します。 CloudFrontはs3バケットのURLとしてd111111abcdef8.cloudfront.netを返します。あなたはうまくやっている

http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/LinkFormat.html#Format_BasicLinks

関連する問題