배포환경 S3용량 이슈

wellbeing-dough·2023년 12월 7일
1

1. 문제상황

1MB이상의 이미지가 S3에 업로드 되지 않는다

2. 해결

ELB에서는 reverse proxy로 nginx를 사용한다 근데 그게 기본적으로 파일 업로드가 1MB로 제한되어 있다 이 설정을 수정하면 된다

리버스 프록시는 로드 밸런싱, 보안(서버의 ip주소를 노출시킬 필요가 없어짐), 캐시 데이터 저장, SSL 암호화에 사용된다

ELB에 배포하기 때문에 /platform/nginx/conf.d/elasticbeanstalk/myconf.conf 파일에

client_max_body_size 20M;

추가 해주면 된다 또한 해당 파일을 배포된 nginx설정에 추가할 수 있게 CD부분에

      - name: Generate deployment package
        run: |
          mkdir deploy
          cp build/libs/*.jar deploy/application.jar
          cp Procfile deploy/Procfile
          cp -r .ebextensions deploy/.ebextensions
          cp -r .platform deploy/.platform # 요거 추가
          cd deploy && zip -r deploy.zip .

이렇게 추가해 준다
또한 yml에도

spring:
  servlet:
    multipart:
      max-file-size: 20MB
	  max-request-size: 25MB

이렇게 추가해줘야 스프링에서도 1MB 이상 multipartfile을 받는다

MultipartFile?

  • 스프링에서 제공하는 인터페이스
  • multipart request로 받은 파일을 표현
  • multipart는 http 통신에서 multipart/fomr-data라는 Content-Type으로, http message body 부분에 boundary 기준으로 여러 데이터를 한 번 요청으로 보내는 것

max-file-size는 한번에 받을 수 있는 file의 최대 크기
max-request-size는 한번에 받을 수 있는 요청의 전체 크기

0개의 댓글

관련 채용 정보