전에 만든 팀프로젝트를 보다가, 실행하자마자 나는 에러를 발견하였다.
개발당시에는 시간이 촉박해, 어플리케이션 자체 실행에는 문제가 없어 넘어갔던 부분이다.
error code
- com.amazonaws.SdkClientException: Failed to connect to service endpoint
- Caused by: java.net.SocketException: Network is unreachable: connect
aws sdk 에러가 나는 이유는, build.gradle에, spring-cloud-starter-aws 의존성 주입시 로컬환경은, aws환경이 아니기때문에 나는 에러라고 한다.
aws환경에서 실행시 아무문제가 없지만, 에러를 하나씩 잡아가면서 테스트를 해보기로 마음먹었기때문에 이것또한 해결해보자!!
해결방법은 이렇게 2가지 있는것 같다 (구글링 할 시..ㅎㅎ)
- 로그 자체를 안보이게
- amazon EC2가 아닌 환경의 시스템 환경변수를 만들어 주는 것
1번같은 경우는 그냥 안보이는 것 뿐, 근본적인 해결은 되지 않다고 생각해서 2번으로 해결해 보자
해결 방법
[run]-[configuration]
vm option에 아래 문장 추가
-Dcom.amazonaws.sdk.disableEc2Metadata=true
그러면 에러가 바뀝니다.
com.amazonaws.AmazonClientException: EC2 Instance Metadata Service is disabled
해당 에러는 EC2 메타데이터를 제외하고 실행한다는 의미로, 어플리케이션 실행 시 딜레이가 없어졌다는 의미입니다!
테스트 환경에서 실행시에는 static
으로 system.properties
를 작성해주어야합니다.
static {
System.setProperty("com.amazonaws.sdk.disableEc2Metadata", "true");
}
참고