일단 저는
https://velog.io/@do-hoon/게시글-생성-파일-업로드SpringBoot-JPA-AWS-S3
위의 블로그를 참고하였습니다.
implementation 'org.springframework.cloud:spring-cloud-starter-aws:2.2.6.RELEASE'
implementation "com.amazonaws:aws-java-sdk-s3"
위의 두가지를 설정해 주면 됩니다.
cloud:
aws:
credentials:
accessKey: SLKFJ # AWS IAM AccessKey 적기
secretKey: SDLKFJSLKDF # AWS IAM SecretKey 적기
s3:
bucket: com.gleonroad.umcproject
region:
static: ap-northeast-2
auto: false
stack:
auto: false
accessKey와 secretKey는 aws에서 설정한 값을 넣으면 됩니다.
해당 값은 공개하면 안되니 github에는 올리지 않는게 좋다고 합니다.
위에 적어놓은 값은 임의 값입니다.
spring:
datasource:
url: jdbc:h2:tcp://localhost/~/umc3project;DB_CLOSE_ON_EXIT=FALSE
username: sa
password:
driver-class-name: org.h2.Driver
servlet:
multipart:
max-file-size: 50MB
max-request-size: 50MB
#swagger? ?? ???
mvc:
pathmatch:
matching-strategy: ant_path_matcher
jpa:
hibernate:
ddl-auto: none
properties:
hibernate:
show_sql: true
format_sql: true
default_batch_fetch_size: 100
logging:
level:
org.hibernate.SQL: debug
org.hibernate.type: trace
com:
amazonaws:
util:
EC2MetadataUtils: ERROR
cloud:
aws:
credentials:
accessKey: SLDKFJ # AWS IAM AccessKey 적기
secretKey: SLDKFJSK # AWS IAM SecretKey 적기
s3:
bucket: com.gleonroad.umcproject
region:
static: ap-northeast-2
auto: false
stack:
auto: false
위에 servlet 설정과 logging 설정을 해줘야 합니다.
S3Uploader.java 파일을 그대로 쓰시면 됩니다.
저 같은 경우 하나의 forum 글에 다수의 이미지나 비디오가 들어갈 수 있어서
forumImage라는 entity를 따로 만들었습니다.
forum 과 forumImage 는 1:다 관계입니다.
s3에 이미지를 업로드 하는 로직은
forum글 생성시 이미지가 있으면 s3에 업로드 하면서 반환되는 이미지 url를 저장합니다.
코드는 ForumController에서 createForum api에 있습니다.