[ReSeller Project] AWS S3에 이미지 파일을 업로드해 보자 ❗

홍정완·2022년 9월 25일
0

ReSeller Project

목록 보기
11/15
post-thumbnail

ReSeller 프로젝트는 브랜드를 생성할 때 해당하는 이미지 파일도 함께 업로드해야 한다.

이번 포스팅에서는 AWS S3를 이용하여 이미지 파일을 저장하는 방법을 알아보자.



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 사용 권한을 부여할 수 있다.



포스팅에서는 가려놨지만 생성된 accessKeysecretKeyyml 파일에서 사용할 것이다.
당연히 secretKey는 외부에 노출돼서는 안된다.




build.gradle 설정 추가

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'
    ...
}



application.yml

cloud:
  aws:
    credentials:
      accessKey: accessKey 입력
      secretKey: secretKey 입력
    s3:
      brand: hongjungwan-resell
    region:
      statics: ap-northeast-2
    stack:
      auto: false

bransService.saveBrand()를 통해 등록할 브랜드 정보와 MultipartFile을 전달받아 DBS3에 등록된다.



결과


Postman을 이용해 요청을 보내면 AWS S3 버킷에 적절한 파일명으로 업로드된 것을 확인할 수 있다.




DB에도 브랜드 정보와 이미지 경로가 잘 저장된 것을 확인할 수 있다.

profile
습관이 전부다.

0개의 댓글