in powertools-parameters/src/main/java/software/amazon/lambda/powertools/parameters/SSMProvider.java [190:223]
private Map<String, String> getMultipleBis(String path, String nextToken) {
GetParametersByPathRequest request = GetParametersByPathRequest.builder()
.path(path)
.withDecryption(decrypt)
.recursive(recursive)
.nextToken(nextToken)
.build();
Map<String, String> params = new HashMap<>();
// not using the client.getParametersByPathPaginator() as hardly testable
GetParametersByPathResponse res = client.getParametersByPath(request);
if (res.hasParameters()) {
res.parameters().forEach(parameter -> {
/* Standardize the parameter name
The parameter name returned by SSM will contained the full path.
However, for readability, we should return only the part after
the path.
*/
String name = parameter.name();
if (name.startsWith(path)) {
name = name.replaceFirst(path, "");
}
name = name.replaceFirst("/", "");
params.put(name, parameter.value());
});
}
if (!StringUtils.isEmpty(res.nextToken())) {
params.putAll(getMultipleBis(path, res.nextToken()));
}
return params;
}