質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Amazon S3

Amazon S3 (Simple Storage Service)とはアマゾン・ウェブ・サービスが提供するオンラインストレージサービスです。

Q&A

解決済

1回答

2183閲覧

LaravelでS3に画像をアップロードしたい

退会済みユーザー

退会済みユーザー

総合スコア0

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Amazon S3

Amazon S3 (Simple Storage Service)とはアマゾン・ウェブ・サービスが提供するオンラインストレージサービスです。

0グッド

0クリップ

投稿2020/05/29 06:11

前提・実現したいこと

  • 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でエラーが出ているので、アクセス権限等をがおかしいと思い、
ネットで検索しながら上記を試して修正しておりますが改善できません。
他にどこを確認すれば良いでしょうか。
よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答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>

を見る限り、The AWS Access Key Id you provided (truncated...) InvalidAccessKeyId (client)
って書いてるのでアクセスキーが間違ってるんじゃないかな(AWS_ACCESS_KEY_ID=IAMユーザーのID…ユーザーIDを指定するのではないはず)

アクセスキーIDの場所

投稿2020/05/29 06:20

編集2020/05/29 06:32
rururu3

総合スコア5545

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/05/29 06:39

ありがとうございます。 すみません、記述の仕方が悪かったです。。 ローカルも本番環境も.envファイルにはアクセスキーIDを入力しておりました。
退会済みユーザー

退会済みユーザー

2020/05/29 06:39

解決しました! やっぱりキー周りがおかしいよな?と思ってアクセスキーを再発行したら正常に動きました! そうなるとローカル環境のアクセスキーも間違っているはずなのにアップロードできていたのですが原因わかりますでしょうか。
rururu3

2020/05/29 06:41

コンフィグのキャッシュクリアとかしてなかったとかかなぁ
退会済みユーザー

退会済みユーザー

2020/05/29 06:51

キャッシュクリアしてた認識なのですが、出来てなかったのですかね。。 わかりました! 何度も解決して頂きありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問