본문 바로가기

에러 해결

[문제 해결] spring cloud starter aws 라이브러리 의존할 때 발생하는 에러를 알아보자

문제

prod가 아닌 환경에서 서버 실행 시 다음과 같은 에러가 발생했다.

에러 메시지를 보면 metadata를 가져오는데 실패했다는 내용이다.

 

원인

디버깅을 통해 원인을 하나씩 살펴봤다.

기본적으로 설정된 http://169.254.169.254로 요청을 보내서 metadata를 가져온다.

해당 서버는 EC2 내에서만 접근가능하다. 

EC2MetadataUtils.class

 

서버로 요청을 보내기 전에 metadata를 비활성화하는 설정이 있으면

예외를 발생시키고 없으면 헤더에 token을 추가한다. 

InstanceMetadataServiceResourceFetcher.class

 

서버로 요청을 보내서 응답을 가져온다.

해당 서버는 EC2 내에서만 접근가능하기 때문에 당연 요청이 실패한다.

EC2ResourceFetcher.class

 

해결

불필요한 요청으로 인해 시간이 소요되기 때문에 metadata를 비활성화하는 설정을 통해 통신을 스킵한다.

vm option으로 -Dcom.amazonaws.sdk.disableEc2Metadata=true을 설정해준다.

SDKGlobalConfiguration.class