ReSeller 프로젝트는 브랜드를 생성할 때 해당하는 이미지 파일도 함께 업로드해야 한다.
이번 포스팅에서는 AWS S3를 이용하여 이미지 파일을 저장하는 방법을 알아보자.
둘 중에 아무 버튼이나 클릭해도 된다.
AWS 리전은 서울로 지정해주고 원하는 버킷 이름을 입력한다.
ACL 활성화시키고, 경고 메시지인 ACL이 복원된다는 것을 확인합니다
를 체크해 주자.
위 설정을 하지 않으면 아래와 같은 오류가 발생한다.
모든 퍼블릭 액세스 차단을 해제하기 때문에 버킷 정책 설정이 필요하다.
생성된 버킷을 클릭한 후 권한 탭으로 이동하면 버킷 정책을 설정할 수 있다.
{
"Version": "2012-10-17",
"Id": "Policy1577077078140",
"Statement": [
{
"Sid": "Stmt1577076944244",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::{버킷명}/*"
}
]
}
lAM 사용자를 등록해 S3에 접근할 수 있도록 해보자.
사용자
👉 사용자 추가
클릭
사용자 이름 입력 후 AWS 자격 증명 유형 선택
을 체크하자.
AmazonS3FullAccess
를 체크하면 S3 사용 권한을 부여할 수 있다.
포스팅에서는 가려놨지만 생성된 accessKey
와 secretKey
를 yml 파일
에서 사용할 것이다.
당연히 secretKey
는 외부에 노출돼서는 안된다.
dependencies {
...
implementation group: 'com.amazonaws', name: 'aws-java-sdk-s3', version: '1.11.964'
runtimeOnly group: 'org.springframework.cloud', name: 'spring-cloud-dependencies', version: 'Hoxton.SR10', ext: 'pom'
implementation group: 'org.apache.tika', name: 'tika-parsers', version: '1.25'
...
}
cloud:
aws:
credentials:
accessKey: accessKey 입력
secretKey: secretKey 입력
s3:
brand: hongjungwan-resell
region:
statics: ap-northeast-2
stack:
auto: false
bransService.saveBrand()
를 통해 등록할 브랜드 정보와 MultipartFile
을 전달받아 DB
와 S3
에 등록된다.
Postman을 이용해 요청을 보내면 AWS S3 버킷에 적절한 파일명으로 업로드된 것을 확인할 수 있다.
DB에도 브랜드 정보와 이미지 경로가 잘 저장된 것을 확인할 수 있다.