안녕하세요 주갬입니다.
저는 포스팅 에디터로 summernote를 사용하려고 찾아보던 중 서머노트의 이미지 업로드 방식은 base64 방식으로 인코딩되어 DB부하가 걸리기 쉽다는 사실을 알게 되었습니다.
그래서 더 좋은 방법이 없을까 찾아보던 중 이미지를 인코딩 없이 S3 버킷에 업로드한 후 불러오는 방식으로 구현한다면 좀 더 효율적이지 않을까 싶어 summernote와 S3를 연결해보려고 합니다.
이번 시간에는 사전 환경 구축에 대해서만 다루고 다음시간부터 본격적인 연동 작업을 보여드리도록 하겠습니다.
- php73 artisan storage:link 실행
- laravel에 league/flysystem-aws-s3-v3 설치
- AWS 콘솔에서 S3버킷 생성 & 키 생성
- laravel .env파일에 나의 S3버킷 정보 입력
을 해줘야 합니다.
- php73 artisan storage:link를 실행하면
다음과 같이 링크가 생성됩니다.
2. laravel에 league/flysystem-aws-s3-v3 설치
composer require league/flysystem-aws-s3-v3
명령어를 사용해 laravel과 S3연동에 필요한 패키지를 설치해 줍니다.
이 설치 과정에서 이슈가 하나 발생했는데요,
검색 끝에 다행히 stackoverflow에서 이유를 찾아냈습니다!!!
이유는 league/flysystem v2
가 글 작성 시점으로부터 5개월 밖에 안된 따끈한 패키지여서
spatie/laravel-backup
패키지와 호환이 안되어 발생하는 문제였습니다.
league/flysystem-aws-s3-v3:"^1.0"
명령어로 1.0 구 버전을 설치하는 것으로 문제를 해결했습니다!!
따봉 구선생아 고마워!
3. AWS 콘솔에서 S3 버킷 생성 & 키 생성
AWS management console에 들어가 S3버킷을 생성합니다.
버킷을 만들 때 버킷명(S3 명)을 지정해 주고 나서 퍼블릭 엑세스 차단을 해제해줍니다. 퍼블릭한 접근을 허용해 준다는 뜻이겠죠? 이 두가지 설정을 제외하고는 다음만 계속 누르시면 됩니다.
퍼블릭 읽기 권한을 추가 하기 위해 이어서 권한 편집을 해보도록 하겠습니다.
권한 탭에 들어가서 ACL(엑세스 제어 목록) 을 편집합니다.
퍼블릭 엑세스 부분에 읽기 권한을 추가해줍니다.
버킷 정책을 편집해보겠습니다.
Add Statement 를 누르면 다음과 같이 Policy에 대한 요약이 생성되고 Generate Policy를 누르면 편집된 json을 확인할 수 있습니다.
위 내용으로 편집을 했을 때 오류가 난다면 아래 내용과 같이 "Resource"의 끝부분에 /* 를 넣어주시면 됩니다.
그리고 '내 보안 자격 증명' 에 들어가 IAM키를 만들어 줍니다.
AWSAccessKeyId, AWSSecretKey 두 가지를 다음 단계에서 사용하게 됩니다.
4. laravel .env파일에 나의 S3버킷 정보 입력
/config/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'),
'url' => env('AWS_URL'),
'endpoint' => env('AWS_ENDPOINT'),
],
...
env파일에 자세한 내용을 담고 있네요!
...
AWS_ACCESS_KEY_ID= AKIAYM23OC5QYDDN3ECK
AWS_SECRET_ACCESS_KEY= ~
AWS_DEFAULT_REGION=ap-northeast-2
AWS_BUCKET= laravel-blog-yj
...
앞 단계에서 생성한 AWS 키와 리전, 버킷이름을 적어주었습니다.
AWS_SECRET_ACCESS_KEY
는 말그대로 본인만 알고 있어야하는 비밀키이므로 잘 관리하시기 바랍니다.
위와 같이 설정을 끝냈다면 다음 시간에는 연동이 잘 되고 있는지 확인해보록 합시다.
다음 블로그를 참조했습니다.
https://jjong-factory.tistory.com/38
'Laravel Blog' 카테고리의 다른 글
[Laravel] Mac에 라라벨 설치 A-Z (0) | 2022.12.12 |
---|---|
[Back] Laravel AWS S3와 연결해 이미지 업로드하기 - 2. 파일 연동 (0) | 2021.07.30 |
[Back] 게시글 좋아요 기능 만들기 - 4. 초기화면 로그인 여부에 따라 다르게 구성하기 (0) | 2021.06.18 |
[Back] Laravel Middleware - Auth (1) (0) | 2021.06.01 |
[Back] 게시글 좋아요 기능 만들기 - 3. 모델과 마이그레이션 (0) | 2021.05.26 |