spring cloud config server설정(AWS parameter store)

2021. 8. 20. 09:00Spring

이번에는 저번 작성한 git에 저장하는 방법이 아닌 aws parameter store에 저장하는 방법을 적어보겠습니다.

 

먼저, 첫 번째로는 dependency에 spring cloud config server와 aws java sdk ssm을 추가합니다.

다음으로 parameter store에 값을 저장하는 코드를 작성합니다.

@Override
    public void add(Parameter resource) {
        log.warn("[add] resource = {}", resource);
        try {
	          //값을 json형식으로 변환
            ObjectMapper mapper = new ObjectMapper();
            String param = mapper.writeValueAsString(resource.getPropertySources().get("source"));
            PutParameterRequest putRequest = new PutParameterRequest();
            //키 name
            putRequest.setName(getParameterName(resource.getApplicationName(), resource.getProfile().size() != 0 ? resource.getProfile().get(0) : null));
            //값
            putRequest.setValue(param);
            putRequest.setType("String");
            //키가 같을 때 덮어씌울 건지
            putRequest.setOverwrite(true);
            ssmClient.putParameter(putRequest);
        } catch (IOException e) {
            throw new IllegalArgumentException();
        }

값을 저장하면 값을 가져오는 코드도 작성해봅니다.

@Override
    public Parameter get(String applicationName, List<String> profile) {
        GetParameterRequest request = new GetParameterRequest();
				//키 name
        request.setName(getParameterName(applicationName, profile.size() != 0 ? profile.get(0) : null));
        GetParameterResult parameter = ssmClient.getParameter(request);
        String param = parameter.getParameter().getValue();
				//값을 json에서 map으로 변환
        ObjectMapper mapper = new ObjectMapper();
        try {
            return new Parameter(applicationName, profile, mapper.readValue(param, new TypeReference<Map<String, Object>>() {}));
        } catch (IOException e) {
            throw new IllegalArgumentException("Properties could not found.");
        }
    }

이제 다음과 같은 형식에 맞춰서 값을 전송합니다.

주소 : /config/{applicationName}/{profile}

형식에 맞춰 값을 전송하면 parameter store에 값이 저장된 것을 확인할 수 있습니다.

다음 글에서는 config client를 설정하는 방법을 작성해 보겠습니다.

 

반응형