AmazonS3Exception 처리

AmazonS3Exception 처리

spring-boot-starter-actuator 에서 /actuator/health 호출시에 config server의 경우 아래 처럼 repositories에 대한 설정을 하거나

1
2
3
4
5
6
7
8
9
10
11
spring:
cloud:
config:
server:
health:
repositories:
myservice:
label: mylabel
myservice-dev:
name: myservice
profiles: development

spring.cloud.config.server.health.enabled=false 설정을 통해서 처리 않하도록 할수 있다.

org.springframework.cloud.config.server.config.ConfigServerHealthIndicator 참고

1
2
3
4
5
6
@PostConstruct
public void init() {
if (this.repositories.isEmpty()) {
this.repositories.put("app", new ConfigServerHealthIndicator.Repository());
}
}

여러번 찾는 경우는 org.springframework.cloud.config.server.environment.AwsS3EnvironmentRepository 에서 찾을수 있는데
s3에서 파일을 찾을때 properties, yml, json 순으로 찾도록 되어 있어서 properties가 아니면 여러번 찾는다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
private S3ConfigFile getS3ConfigFile(S3ObjectIdBuilder s3ObjectIdBuilder, String keyPrefix) {
try {
S3Object properties = this.s3Client.getObject(new GetObjectRequest(s3ObjectIdBuilder.withKey(keyPrefix + ".properties").build()));
return new PropertyS3ConfigFile(properties.getObjectMetadata().getVersionId(), properties.getObjectContent());
} catch (Exception var8) {
try {
S3Object yaml = this.s3Client.getObject(new GetObjectRequest(s3ObjectIdBuilder.withKey(keyPrefix + ".yml").build()));
return new YamlS3ConfigFile(yaml.getObjectMetadata().getVersionId(), yaml.getObjectContent());
} catch (Exception var7) {
try {
S3Object json = this.s3Client.getObject(new GetObjectRequest(s3ObjectIdBuilder.withKey(keyPrefix + ".json").build()));
return new JsonS3ConfigFile(json.getObjectMetadata().getVersionId(), json.getObjectContent());
} catch (Exception var6) {
return null;
}
}
}
}

참고