일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 백준
- 소수찾기 java
- interface
- spring DI
- Spring Cloud Gateway
- 형상관리
- java
- DI
- TestContainers
- 낙관적 락 롤백
- AccessToken
- S3
- @transactional
- kotest testcontainers
- ObjectOptimisticLockingFailureException
- ObjectOptimisticLockingFailureException 처리
- spring aop
- redissonlock aop
- springsecurity
- 멀티모듈 테스트컨테이너
- jpa
- RefreshToken
- multimodule testcontainers
- netty
- 우아한 테크러닝
- 알고리즘
- 낙관적 락 재시도
- aop
- OptimisticLock
- Invalid property 'principal.username' of bean class
- Today
- Total
조급하면 모래성이 될뿐
S3 파일 업로드 본문
무엇 ?
- 영화 정보를 등록할 때, 포스터 이미지를 로컬서버가 아닌 AWS S3에 저장하기
왜 ?
- EC2에 파일을 저장하는것보다 효과적이기 때문에 S3에 분리해서 저장한다.
- 메모리 공간이나, 파일관리도 S3를 사용하는 것이 더 유용하다.
- S3 특징
어떻게 ?
여기가 그나마 신뢰할 수 있다. 구글에서 1페이지에 포스팅된글은 다 봤는데 버킷 생성하는 부분을 설명한데가 한군데도 없어서 화딱지가 난다.
버킷 정책을 편집해서 Json을 가져다 붙이는데, 왜 붙이는지 설명한곳이 한군데도 없다. 더군다나 이렇게 적용해도 안된다.
없어도 잘 된다.
1. S3 버킷을 생성한다.
- 처음에 객체 소유권에서 ACL을 활성화 하지 않았더니 SpringBoot에서 접근이되지 않았다.
- 퍼블릭 액세스도 모두 풀어버린다.
- 실제 서비스는 보안상 모두 차단하는 것이 좋다.
- 그래서 처음에 다 차단하고 시도했는데.. 계속 막혀서 일단 차단을 푼 버킷으로 다시 만들었다.
버킷 생성은 끝이다.
다음으로 SpringBoot에 S3에 접근하기 위한 의존성 추가해서 사용하면 된다.
처음에 아래 의존성이 계속 추가가 안됐다 ㅡㅡ..
하루종일 삽질하면서 이것저것 다 시도해봤는데 이유는 아직도 못찾았다..
프로젝트를 새로만들고 저 implementation을 적용하니깐 또 그 프로젝트에서는 잘 받아지더라..
그래서 저장소를 다시 clone받아서 해결했다...
* 계속 안되던 프로젝트는 build.gradle을 지워도 External Libraries가 안지워지고.. 추가해도 추가가 안됐다..
implementation 'org.springframework.cloud:spring-cloud-starter-aws:2.2.6.RELEASE'
추가하고 application.yml에 s3정보를 입력해준다. 아래 정보가 중요하다.
- 버킷 이름
- region
- access-key
- secret-key
access-key하고 secret-key는 s3에 접근 가능한 IAM 사용자의 정보이다. AmazonS3FullAccess 권한을 가진 사용자를 새롭게 만들면 access-key, secret-key가 발급되고 그 정보를 기입해주면된다.
그리고 2개의 key는 노출되면 안되니깐 별도로 분리해서 github에는 푸시하지 않는다.
key정보 분리하기 위해서 yml을 분리했다. 분리한 yml은 .gitignore에 등록해주었다.
이 블로그를 참조해서 설정하자
배포 후, ec2접속해서 직접 application.yml에 2개의 key정보를 수기로 입력해주었다.
S3접속하기 위한 코드는 여기서 그대로 가져다썼다.
'TroubleShooting > 데브코스' 카테고리의 다른 글
CodeDeploy 적용기 (0) | 2022.07.26 |
---|---|
Service에서 DataIntegrityViolationException을 Catch 못함 (0) | 2022.07.14 |
Service에서 다른 Service를 의존하게 된다면 ? (0) | 2022.07.06 |
N + 1 직접 만났다 (0) | 2022.07.01 |
Spring Data Jpa Insert 할 때 Select가 나가네.. (0) | 2022.07.01 |