티스토리 뷰

s3 서버에 파일 업로드를 구현하기 위해 spring-cloud-starter-aws 의존성 주입을 하게되면 톰캣 서버 실행 시 에러가 뜬다.

 

com.amazonaws.SdkClientException: Failed to connect to service endpoint: 
// ... stack trace ...
// ...

이런 에러가 뜨면서 connection timeout이 되어버리는데

 

구글링 결과 EC2 환경이 아닌 곳에서 일어나게되는 에러였다.

 

치명적인 에러가 아니라고는 하지만 서버 실행할 때 딜레이가 생기고 찝찝한 에러 메세지는 지우고 싶어지는게 사람 욕심인 것이다.

(나만 그런가...)

 

해결 방법으로는

 

amazon EC2가 아닌 환경의 시스템 환경변수를 만들어 주는 것이다.

 

변수 이름 : AWS_EC2_METADATA_DISABLED

값 : true

 

윈도우는 사용자 변수가 아닌 시스템 환경변수에 만들어야 한다.

맥이나 리눅스는 사용중인 쉘에 따라서 .bash_profile 또는 .zshrc 파일에 값을 추가해 주면 된다. (다른 쉘을 쓰면 다른 파일에 추가)

 

혹은 IDE에서 vm option을 커스텀 해주는 것인데

 

인텔리제이 설정 방법은 Shift 키를 두번 눌러서 (윈도우, 맥 단축키 동일) 검색창에 edit vm option을 치고

-Dcom.amazonaws.sdk.disableEc2Metadata=true

이 코드를 복붙하면 된다.

 

그리고 application.properties 파일에

// .properties
logging.level.com.amazonaws.util.EC2MetadataUtils: error

// .yml
logging:
	level:
    	com:
        	amazonaws:
            	util:
                	EC2MetadataUtils: error

이 코드를 복붙하면 깔끔하게 톰캣을 실행 할 때 딜레이도 안걸리고 에러 로그도 없어지게 된다.

 

행복코딩!

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함