in aws-ssm-parameter/src/main/java/com/amazonaws/ssm/parameter/CreateHandler.java [34:72]
protected ProgressEvent<ResourceModel, CallbackContext> handleRequest(
final AmazonWebServicesClientProxy proxy,
final ResourceHandlerRequest<ResourceModel> request,
final CallbackContext callbackContext,
final ProxyClient<SsmClient> proxyClient,
final Logger logger) {
this.logger = logger;
final ResourceModel model = request.getDesiredResourceState();
// Set model primary ID if absent
if(model.getName() == null) {
model.setName(generateParameterName(
request.getLogicalResourceIdentifier(),
request.getClientRequestToken()
));
}
if(model.getType().equalsIgnoreCase(ParameterType.SECURE_STRING.toString())) {
String message = String.format("SSM Parameters of type %s cannot be created using CloudFormation", ParameterType.SECURE_STRING);
return ProgressEvent.defaultFailureHandler(new TerminalException(message),
HandlerErrorCode.InvalidRequest);
}
Map<String, String> consolidatedTagList = new HashMap<>();
if (request.getDesiredResourceTags() != null) {
consolidatedTagList.putAll(request.getDesiredResourceTags());
}
if (request.getSystemTags() != null) {
consolidatedTagList.putAll(request.getSystemTags());
}
return proxy.initiate("aws-ssm-parameter::resource-create", proxyClient, model, callbackContext)
.translateToServiceRequest((resourceModel) -> Translator.createPutParameterRequest(resourceModel, consolidatedTagList))
.backoffDelay(getBackOffDelay(model))
.makeServiceCall(this::createResource)
.stabilize(BaseHandlerStd::stabilize)
.progress()
.then(progress -> new ReadHandler().handleRequest(proxy, request, callbackContext, proxyClient, logger));
}