개발일지/2023_한이음

🚨ERROR - com.amazonaws.SdkClientException: Failed to connect to service endpoint:

기억지기 개발자 2023. 7. 28. 13:22

🏕️상황

실제 에러 페이지

2023-07-25 10:31:09.949 WARN 156 --- [ main] com.amazonaws.util.EC2MetadataUtils : Unable to retrieve the requested metadata (/latest/meta-data/instance-id). Failed to connect to service endpoint: com.amazonaws.SdkClientException: Failed to connect to service endpoint: at com.amazonaws.internal.EC2ResourceFetcher.doReadResource(EC2ResourceFetcher.java:100) ~[aws-java-sdk-core-1.11.792.jar:na] at com.amazonaws.internal.EC2ResourceFetcher.doReadResource(EC2ResourceFetcher.java:70) ~[aws-java-sdk-core-1.11.792.jar:na]

 

🛣️과정

HighwaySpringApplication 클래스에 아래의 어노테이션을 붙이면 해당 오류가 사라진다.

@SpringBootApplication( exclude = { org.springframework.cloud.aws.autoconfigure.context.ContextInstanceDataAutoConfiguration.class, org.springframework.cloud.aws.autoconfigure.context.ContextStackAutoConfiguration.class, org.springframework.cloud.aws.autoconfigure.context.ContextRegionProviderAutoConfiguration.class } )
  • exclude 속성
    exclude 속성은 특정 자동 구성 클래스들을 제외하여 애플리케이션의 동작을 커스터마이즈하는 데 사용
  • org.springframework.cloud.aws.autoconfigure.context.ContextInstanceDataAutoConfiguration:
    AWS Cloud 인스턴스 메타데이터에 대한 자동 구성을 비활성화합니다. AWS EC2 인스턴스 메타데이터를 사용하지 않는 경우 이를 비활성화하여 해당 정보를 가져오지 않습니다.
  • org.springframework.cloud.aws.autoconfigure.context.ContextStackAutoConfiguration
    AWS Cloud의 스택 정보에 대한 자동 구성을 비활성화합니다. AWS CloudFormation 스택 정보를 사용하지 않는 경우 이를 비활성화하여 해당 정보를 가져오지 않습니다.
  • org.springframework.cloud.aws.autoconfigure.context.ContextRegionProviderAutoConfiguration:
    AWS 클라우드 리전 정보에 대한 자동 구성을 비활성화합니다. 애플리케이션이 AWS 리전을 사용하지 않는 경우 이를 비활성화하여 해당 정보를 가져오지 않습니다.

 

 

이렇게 하면 오류 메시지는 나오지 않지만 AWS와의 연결에서 많은 제약이 생길 거 같은 느낌이 들었고 실제로도 다음과 같은 오류가 발생했다. 거의 눈 가리고 아웅 식이 아닌가...라는 생각에 이 방법을 사용하지 않기로 했다.

실제 오류 이미지

 

🗝️결론

EC2 가 아닌 로컬 환경에서 실행 시 위와 같은 에러 메세지가 발생한다. 

오류 메세지가 발생하기는 하지만 프로그램을 작동하는데에는 문제가 없고, 단지 환경이 달라서 생기는 오류라고 판단되기 때문에 그냥 무시하기로 했다. ㅎ