前提・実現したいこと
- PHP,Laravelを用いてwebアプリを作成しており、AWSのS3に画像をアップロードしたい。
- ローカル環境では正常にバケットに画像が保存されるが、本番環境ではエラーが発生する。
本番環境でもアップロードできる様にしたい。
- "league/flysystem-aws-s3-v3": "^1.0"はインストールしている
発生している問題・エラーメッセージ
Aws\S3\Exception\S3Exception Error executing "PutObject" on "オブジェクトURL"; AWS HTTP error: Client error: `PUT オブジェクトURL` resulted in a `403 Forbidden` response: <?xml version="1.0" encoding="UTF-8"?> <Error><Code>InvalidAccessKeyId</Code><Message>The AWS Access Key Id you provided (truncated...) InvalidAccessKeyId (client): The AWS Access Key Id you provided does not exist in our records. - <?xml version="1.0" encoding="UTF-8"?> <Error>
該当のソースコード
controller
1<?php 2 3namespace App\Http\Controllers\Auth; 4 5use App\Http\Controllers\Controller; 6use Illuminate\Http\Request; 7use App\Post; 8use App\Food; 9use Illuminate\Support\Facades\Auth; 10use Illuminate\Support\Facades\Storage; 11 12class PostController extends Controller 13{ 14 public function postArticle(Request $request) 15 { 16 if ($request->isMethod('POST')) { 17 $image = $request->file('image'); 18 $path = Storage::disk('s3')->put('myprefix', $image, 'public'); 19 $article = Post::create([ 20 'user_id' => Auth::user()->id, 21 'title' => $request->title, 22 'image' => basename($path), 23 'material' => Auth::user()->id, 24 'body' => $request->body, 25 ]); 26 27 } 28 29 return redirect("/posts/{$article->id}")->with(['success' => 'ファイルを保存しました']); 30 } 31 return view('posts.new'); 32 }
.envファイル
PHP
1AWS_ACCESS_KEY_ID=IAMユーザーのID 2AWS_SECRET_ACCESS_KEY=IAMユーザーのシークレットキー 3AWS_DEFAULT_REGION=ap-northeast-1 4AWS_BUCKET=バケット名
試したこと
- .envファイルが間違っているかと思い、ローカル環境と本番環境で見比べたが、awsキーは相違ない
- ローカルの.envファイルをわざと間違いのキーを入力したら、本番環境と同様のエラーが出るかと思ったがエラーは出ずS3へ保存できる
- IAMユーザー、S3のポリシーをフルアクセスに変更してみたが、改善せず(ローカルでは保存できるということはここは間違っていない?)
putObjectでエラーが出ているので、アクセス権限等をがおかしいと思い、
ネットで検索しながら上記を試して修正しておりますが改善できません。
他にどこを確認すれば良いでしょうか。
よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/05/29 06:39
退会済みユーザー
2020/05/29 06:39
2020/05/29 06:41
退会済みユーザー
2020/05/29 06:51