[AWS] Failed to connect to service endpoint

어디든 배우자·2023년 12월 18일

Aws S3를 사용해 이미지를 업로드 하려고 했고, Aws 의존성 설정 후 컴파일 할 때 발생한 에러이다.

의존성

<dependency>
 	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-aws</artifactId>
	<version>2.2.6.RELEASE</version>
</dependency>

에러

com.amazonaws.SdkClientException: Failed to connect to service endpoint: 

원인

spring-cloud-starter-aws 의존성 주입시 로컬환경은 aws 환경이 아니기 때문.

해결

@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
})
public class Application {

	public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
	}


}

SpringBootApplication에 exclude를 적용.

해설

ContextInstanceDataAutoConfiguration.class

  • Aws Ec2 인스턴스 데이터를 로드하는 자동 구성 클래스
  • 이 클래스를 제외하면 Ec2 인스턴스 메타데이터 사용 기능을 비활성화 함.

ContextStackAutoConfiguration.class

  • 스택 리소스에 대한 액세스를 위한 자동 구성 클래스.
  • 이 클래스를 제외하면 CloudFormation 스택 리소스를 사용하는 기능을 비활성화 함.

ContextRegionProviderAutoConfiguration.class

  • AWS 리전을 자동으로 감지하는 자동 구성 클래스
  • 이 클래스를 제외하면 자동 리전 감지 기능을 비활성화할 수 있다.

추가

<dependencyManagement>
 	<dependencies>
 		<dependency>
 			<groupId>io.awspring.cloud</groupId>
			<artifactId>spring-cloud-aws-dependencies</artifactId>
			<version>2.3.0</version>
			<type>pom</type>
			<scope>import</scope>
		</dependency>
	</dependencies>
</dependencyManagement>

의존성을 이걸 사용하면 SpringBootApplication에 exclude를 적용하지 않아도 된다.
하지만 Aws S3 업로드 코드도 달라진다.

profile
다 흡수하기.

0개의 댓글