前提・実現したいこと
Laravelにて単にAWS S3に保存されてある画像を表示するプログラムを作成しています。
しかし、画像が表示されません。
Chromeブラウザ内の「ページのソースを表示」という項目のソースを見ても、ちゃんとS3のURLが表示されているが、URLをクリックすると「AccessDenied」と表示されており、画像をアクセスするための権限が付与されていないエラーかと思われます。
ネット上で解決方法を調べましたが、今の所解決に至っておりません。
画像を表示させるにはどうすれば良いか、ご教授お願いします。
発生している問題・エラーメッセージ
ページのソースにある
<img src="https://*************.s3.ap-northeast-1.amazonaws.com/aaaa/000001.jpg">
のURLをクリックすると以下が表示される。
<Error> <script/> <Code>AccessDenied</Code> <Message>Access Denied</Message> <RequestId>****************</RequestId> <HostId>****************</HostId> </Error>
該当のソースコード
PHP
1[web.php] 2Route::get('/image/{filename}', 'ShowController@show'); 3
PHP
1[show.blade.php] 2<img src="{{$path}}"> 3
PHP
1[ShowController.php] 2<?php 3 4namespace App\Http\Controllers; 5 6use Illuminate\Http\Request; 7use Storage; 8 9class ShowController extends Controller 10{ 11 12 public function show() { 13 $disk = Storage::disk('s3'); 14 $path = $disk->url('aaaa/000001.jpg'); 15 return view('show', compact('path')); 16 } 17} 18 19
試したこと
.envには以下のようにアクセスキーやバケットを設定済み
AWS_ACCESS_KEY_ID=******** AWS_SECRET_ACCESS_KEY=******** AWS_DEFAULT_REGION=******** AWS_BUCKET=********
・バケットの「ブロックパブリックアクセス (バケット設定)」は全てオフ
・IAMの操作ユーザのアクセス権限に「AmazonS3FullAccess」を設定
・「aaaa/000001.jpg」の画像がバケット内にあることを確認
回答1件
あなたの回答
tips
プレビュー