AWS S3 Laravel 이미지 파일 업로드 중 오류 발생

목적


  • 이미지 파일 업로드시 public 지정하여 업로드한 곳

  • 구현 환경


  • 하드웨어 환경



  • 품목
    정보


    OS
    macOS Catalina(10.15.5)

    하드웨어
    MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports)

    프로세서
    2GHz 쿼드 코어Intel Core i5

    메모리
    32GB 3733MHz LPDDR4

    그래픽
    Intel Iris Plus Graphics 1536 MB


  • 소프트웨어 환경 (AWS EC2 AmazonLinux2 내에 다음 환경을 구축, 구축하는 방법은 여기 → AWS EC2 AmazonLinux2에서만 Laravel 앱 배포)



    품목
    정보
    비고


    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 사용 가능



    문제까지의 경위


  • 이하의 방법으로 S3에 대한 화상 업로드 처리를 구현했다.
  • AWS S3 Laravel 앱에서 이미지 파일 업로드


  • 이미지 업로드시의 처리를 아래와 같이 수정하여 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');
    


  • 처리 동작을 확인하기 위해 브라우저에서 이미지를 업로드했습니다.

  • 문제



  • 다음 오류가 발생합니다.
     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>
    

  • 브라우저에서의 에러 화면의 표시를 이하에 기재한다.



  • 문제 해결까지의 경위


  • AWS 콘솔에 로그인하여 S3 콘솔을 엽니다.

  • 업로드할 버킷 이름을 클릭합니다.



  • 액세스 권한을 클릭합니다.



  • 공용 액세스에서 편집을 클릭합니다.



  • 각 체크를 해제하고 [저장]을 클릭합니다.


  • 브라우저에서 이미지 업로드를 실시했는데 에러가 해소되어 이미지 파일이 업로드되었다.

  • 참고문헌


  • htps : // 아 ws. 아마존. 이 m / jp / p 레미 m 쏘 rt / k의 w ㎇ d 굳어 r / s3 - t 브 ぇ 쇼오 t-403 /
  • htps : // 아 ws. 아마존. 이 m / jp / p 레미 m 쏘 rt / k의 w ぇd 굳어서 r / s3 - 403 - 훗 r 힛덴 - 에로 r /
  • 좋은 웹페이지 즐겨찾기