ec2 & s3사용중 config에 설정한 imgUrl 값 혼동 문제

Crow·2022년 12월 26일
0

이건 내 문제는 아니고 다른 사람의 문제이며 참고용으로 적어둠

해당 경우는 팀원끼리 팀장의 ec2 and s3를 사용하다가 프로젝트를 끝내고 각자의 ec2와 s3에 배포하려고 데이터를 마이닝 하다가 발생

@Configuration 어노테이션을 사용한 *.class파일에

@Value("${aws.s3.file.url.prefix}")
    private String imgUrl;
    
    @PostConstruct
    public void init() {
        servletContext.setAttribute("imgUrl", imgUrl);
    }
aws.s3.file.url.prefix=자신의 s3버킷 경로

해당 형태로 함수를 만들고 application.properties에서 해당 값을 주입하고 init()메서드를 통해서 servletContext에 값을 설정해서 프론트 단에서

<img src="${limgUrl}/${content.contentId}/${content.contentPosterName}" onerror="this.src='/oo.ico'" alt="Image" class="img-fluid" style="max-width:470px">

해당 형태로 표현한다
로컬에선 img 경로가 properties에서 설정한 자신의 s3 경로로 나왔는대 해당 프로젝트를 war 방식으로 배포했을땐 팀장의 s3 경로로 이미지가 로드되는 문제가 발생함

이런 저런 방법을 다 써보고 하다가 해결법은 좋은 방법은 아닌거 같지만 config.java 파일에 작성한 init()메서드의 키값을 imgUrl에서 자신의 성을 첫글자를 딴kimgUrl등으로 바꾸고 html 파일에도 <img src="${kimgUrl}/...>등으로 바꿔줌

그러니 제대로된 경로로 작성됨 하지만 이 프로젝트 규모가 작은 프로젝트라서 가능한 방법이지 바꿔야 할 html파일이 100개가 넘어간다면 이 방법을 사용할수 없다고 생각함

내가 생각할수있는 제일 좋은 해결책은 properties파일에 직접적인 밸류를 적기보단

aws.s3.file.url.prefix=${aws_s3_file_url_prefix}

위처럼 외부 환경변수를 주입하는 방식을 사용해야할꺼 같음

물론 이 방법으로 해당 상황을 겪어보지 않아서 확신할순 없어 보임


해당현상은 context Listener설정으로 일어난 문제였음

profile
어제보다 개발 더 잘하기 / 많이 듣고 핵심만 정리해서 말하기 / 도망가지 말기 / 깃허브 위키 내용 가져오기

0개의 댓글