LoginSignup
0
0

More than 3 years have passed since last update.

AWS S3 Laravel 画像ファイルアップロード時にエラーが発生する

Last updated at Posted at 2020-06-19

目的

  • 画像ファイルのアップロード時にpublic指定してアップロードしたところ

実施環境

  • ハードウェア環境
項目 情報
OS macOS Catalina(10.15.5)
ハードウェア MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports)
プロセッサ 2 GHz クアッドコアIntel Core i5
メモリ 32 GB 3733 MHz LPDDR4
グラフィックス Intel Iris Plus Graphics 1536 MB
項目 情報 備考
AWS EC2インスタンス AmazonLinux2 こちらの方法を用いてイメージからインスタンスを作成→AWS EC2 をMacで使ってみよう!
PHP 7.4.5 こちらの方法でインストール→AWS EC2 AmazonLinux2 PHPをインストールする
composer 1.10.7 こちらの方法でインストール→AWS EC2 AmazonLinux2 composerをインストールする
MySQL 8.0.20 for Linux on x86_64 こちらの方法でインストール→AWS EC2 AmazonLinux2 MySQLを使えるようにする

問題までの経緯

  1. 下記の方法にてS3に対する画像アップロード処理を実装した。
  2. 画像アップロード時の処理を下記の様に修正してpublic状態でアップロードできる様にした。

    • 修正前

      アプリ名ディレクトリ/app/Http/Controllers/ImageController.php
       Storage::disk('s3')->putFile('/test', $request->file('file'));
      
    • 修正後

      アプリ名ディレクトリ/app/Http/Controllers/ImageController.php
       Storage::disk('s3')->putFile('/test', $request->file('file'), 'public');
      
  3. 処理の動作を確認するためブラウザから画像のアップロードを行った。

問題

  • 下記エラーが発生する。

     Error executing "PutObject" on "https://S3のバケットURL/test/8iPIwmDI2VX6qOZwUq9XCJSLPGxGox2kxpfcOAkT.png"; AWS HTTP error: Client error: `PUT https://S3のバケットURL/test/8iPIwmDI2VX6qOZwUq9XCJSLPGxGox2kxpfcOAkT.png` resulted in a `403 Forbidden` response: <?xml version="1.0" encoding="UTF-8"?> <Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>5D23B7 (truncated...) AccessDenied (client): Access Denied - <?xml version="1.0" encoding="UTF-8"?> <Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>5D23B7FF0F008DAE</RequestId><HostId>PETGLYLAydwTGLlN6wskfKQpjULz1bGIQqWZc12NaJvZfCN++WYmjIFJrVoA2V8LNUK+fQwwoJk=</HostId></Error>
    
  • ブラウザでのエラー画面の表示を下記に記載する。

    🧨_Error_executing__PutObject__on__https___image-upload-miriwo_s3_ap-northeast-1_amazonaws_com_test_8iPIwmDI2VX6qOZwUq9XCJSLPGxGox2kxpfcOAkT_png___AWS_HTTP_error__Client_error__`PUT_https___image-upload-miriwo_s3_ap-northeast-1_amazonaws_co.png

問題解決までの経緯

  1. AWSのコンソールにログインしてS3のコンソールを開く。
  2. アップロードを行うバケット名をクリックする。

    S3_Management_Console.png

  3. 「アクセス権限」をクリックする。

    S3_Management_Console.png

  4. 「パブリックアクセス」の「編集」をクリックする。

    S3_Management_Console.png

  5. 各チェックを外し「保存」をクリックする。

    S3_Management_Console.png

  6. ブラウザから画像アップロードを実施したところエラーが解消され画像ファイルがアップロードされた。

参考文献

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0