[Spring] spring-cloud-starter-aws 의존성 주입시 에러해결 / IntelliJ 2023.01v

Dev_ch·2023년 5월 27일
0
post-custom-banner

사진은 그냥 재밌어서 가져왔다.

아마 S3나 AWS의 다른 기능을 구현하기 위해 spring-cloud-starter-aws 의존성을 프로젝트에 주입하는 경우가 있을 것 이다. 근데 해당 의존성을 주입하고 프로젝트의 서버를 실행하면 통과는 하지만 발생하는 에러가 생길 것 이다.

아마도 위처럼 endpoint 어쩌구 하면서 통과하는 에러가 발생하는데, 이는 AWS의 환경이 아닌 로컬 환경에서 서버가 돌아가서 해당 오류가 발생하는 것이다.

이 오류는 그냥 냅둬도 좋지만, 빌드 속도를 무진장 느리게하는 주범이기도 하다. 그러니깐, 이 에러를 해결해줘야 하는데 방법은 2가지이다.

  1. 로그 꺼버리기
  2. 시스템 환경변수 생성

사실 첫번째 방법은 저 에러를 빌드시 보이지 않게 해주지만, 빌드속도가 달팽이마냥 느려지는건 없애주지 못한다. 그러니깐 2번째 방법을 사용하도록 하자.

👇 즉시 해결

방법은 아주아주아주아주 간단하다. Mac / IntelliJ 2023.01 버전의 해결방법인데 사실 그 아래 버전도 거의 마찬가지긴하다.

IntelliJ IDEA -> Run -> Edit Configuration 으로 들어가면

대충 요렇게 생겼다. 낮은 버전에서는 해당 창에 바로 VMOption을 설정하는 칸이 있던데 상위버전에는 없는 것 같아 처음에 어디에다가 시스템 환경변수를 만들어주지 했었는데 해당 화면에서

  1. Modify options 클릭
  2. java -> Ad VM Options 클릭

냅다 설정해주면

VM options 창이 하나 생긴것을 알 수 있다. 해당 칸에

-Dcom.amazonaws.sdk.disableEc2Metadata=true

위와같이 적어주면, EC2 메타데이터를 제외하고 실행한다. 그리고 서버를 실행하게되면

문구가 바뀐것을 알 수 있다. 말 그대로 EC2 메타데이터를 서비스에서 제외했다는 건데, 빌드속도는 이제 정상으로 돌아왔을 것인데, 이 문구가 뜨는 것이 보기 싫다면 그냥 application.yml 파일에

logging:
  level:
    com:
      amazonaws:
        util:
          EC2MetadataUtils: ERROR

이렇게 적어주도록 하자.

⚠️ 테스트에서 끄는법

@SpringBootTest
@ActiveProfiles("test")
@Transactional
class UserServiceTest {

    static {
        System.setProperty("com.amazonaws.sdk.disableEc2Metadata", "true");
    }
    
    .
    .
    .

위와같이 테스트 내부에서 EC2 메타데이터를 제외해버리면 해결된다 💡

profile
내가 몰입하는 과정을 담은 곳
post-custom-banner

0개의 댓글