前提・実現したいこと
laravelで構築したサイトを本番環境で運用しています。
その中でS3を使って画像をアップロードしたいです。
発生している問題・エラーメッセージ
ローカル環境では問題なく画像をアップロードできているのですが、
本番環境(ec2)を使用した際にエラーが発生していまいます。
下記がエラーメッセージになります。
GuzzleHttp\Exception\ClientException Client error: `GET http://169.254.169.254/latest/meta-data/iam/security-credentials/` resulted in a `404 Not Found` response: <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www. (truncated...)
return new $className($message, $request, $response, $previous, $ctx); } /** * Get a short summary of the response * * Will return `null` if the response is not printable. * * @param ResponseInterface $response * * @return string|null
Controllerの内容
use Storage; --略 public function create(Request $request) { $this->validate($request, News::$rules); $news = new News; $form = $request->all(); if (isset($form['image'])) { $path = Storage::disk('s3')->putFile('/',$form['image'],'public'); $news->image_path = Storage::disk('s3')->url($path); } else { $news->image_path = null; } unset($form['_token']); unset($form['image']); $news->fill($form); $news->save(); return redirect('news/create');
viewの内容
@extends('layouts.news') @section('title','新規ニュースの作成') @section('content') <div class="container"> <div class="row"> <div class="col-md-8 mx-auto"> <h2>新規ニュースの作成</h2> <form action="{{ action('NewsController@create') }}" method="post" enctype="multipart/form-data"> @if (count($errors) > 0) <ul> @foreach($errors->all() as $e) <li>{{ $e }}</li> @endforeach </ul> @endif <div class="form-group row"> <label class="col-md-2" for="title">タイトル</label> <div class="col-md-10"> <input type="text" class="form-control" name="title" value="{{ old('title') }}"> </div> </div> <div class="form-group row"> <label class="col-md-2" for="body">本文</label> <div class="col-md-10"> <textarea class="form-control" name="body" rows="20">{{ old('body') }}</textarea> </div> </div> <div class="form-group row"> <label class="col-md-2" for="title">画像</label> <div class="col-md-10"> <input type="file" class="form-control-file" name="image"> </div> </div> {{ csrf_field() }} <input type="submit" class="btn btn-primary" value="更新"> <a href="{{ action('HomeController@browse') }}" role="button" class="btn btn-primary">TOPへ戻る</a> </form> </div> </div> </div> @endsection
filesystems.php
's3' => [ 'driver' => 's3', 'key' => env('AWS_ACCESS_KEY_ID'), 'secret' => env('AWS_SECRET_ACCESS_KEY'), 'region' => env('AWS_DEFAULT_REGION'), 'bucket' => env('AWS_BUCKET'), ],
.env
AWS_ACCESS_KEY_ID=****************** AWS_SECRET_ACCESS_KEY=*************** AWS_DEFAULT_REGION=ap-northeast-1 AWS_BUCKET=portfolio-salon
試したこと
S3バケットのアクセス許可(アカウント、バケット)をオフ。
###考えたこと
エラーが404だったので記述ミスも考えたのですが、ローカルで通っていたので本番用の設定に
何かミスがあるのではないかと考えています。
すみません、どなたかアドバイスあればお願いします。
補足情報(FW/ツールのバージョンなど)
Laravel 6.2.0
PHP 7.2.19
cloud 9(ローカル環境)
ec2(本番環境)
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。