Skip to content
Snippets Groups Projects
Commit 98da4bf8 authored by Rucha Deshpande's avatar Rucha Deshpande
Browse files

Add error handling for SSM

commit 39dae666 
Author: Rucha Deshpande <deshruch@amazon.com> 
Date: Fri Oct 16 2020 11:45:16 GMT-0500 (Central Daylight Time) 

    Add error handling for SSM


commit a31c7b07 
Author: Rucha Deshpande <deshruch@amazon.com> 
Date: Fri Oct 16 2020 11:07:16 GMT-0500 (Central Daylight Time) 

    Add error handling for SSM
parent 25c5001f
No related branches found
No related tags found
1 merge request!27Feat/aws impl3
......@@ -14,19 +14,29 @@
package org.opengroup.osdu.register.provider.aws.config;
import com.amazonaws.auth.AWSCredentialsProvider;
import com.amazonaws.services.kms.AWSKMS;
import com.amazonaws.services.simplesystemsmanagement.AWSSimpleSystemsManagement;
import com.amazonaws.services.simplesystemsmanagement.AWSSimpleSystemsManagementClientBuilder;
import com.amazonaws.services.simplesystemsmanagement.model.GetParametersRequest;
import com.amazonaws.services.simplesystemsmanagement.model.GetParametersResult;
import com.amazonaws.services.simplesystemsmanagement.model.ParameterNotFoundException;
import com.amazonaws.services.simplesystemsmanagement.model.InternalServerErrorException;
import com.amazonaws.services.simplesystemsmanagement.model.Parameter;
import com.amazonaws.services.sns.AmazonSNS;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
import org.apache.http.HttpStatus;
import org.opengroup.osdu.core.aws.iam.IAMConfig;
import org.opengroup.osdu.core.aws.sns.AmazonSNSConfig;
import org.opengroup.osdu.core.aws.ssm.ParameterStorePropertySource;
import org.opengroup.osdu.core.aws.ssm.SSMConfig;
import org.opengroup.osdu.register.provider.aws.subscriber.KmsConfig;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.util.ArrayList;
import java.util.List;
import org.opengroup.osdu.core.common.model.http.AppException;
@Component
public class AwsServiceConfig {
......@@ -76,27 +86,56 @@ public class AwsServiceConfig {
@Getter()
public AmazonSNS snsClient;
private AWSCredentialsProvider amazonAWSCredentials;
private AWSSimpleSystemsManagement ssmManager;
@PostConstruct
public void init() {
if (ssmEnabled) {
AmazonSNSConfig snsConfig = new AmazonSNSConfig(amazonRegion);
snsClient = snsConfig.AmazonSNS();
KmsConfig kmsConfig = new KmsConfig(kmsEndpoint, amazonRegion);
kmsClient = kmsConfig.awsKMS();
try {
//Can be used to retrieve ssm parameters
SSMConfig ssmConfig = new SSMConfig();
ParameterStorePropertySource ssm = ssmConfig.amazonSSM();
String keyssmparameter = "/osdu/" + environment + "/register/register-kms-key-id";
String snstopicArnParameter = "/osdu/" + environment + "/register/register-sns-topic-arn";
kmsKeyId = ssm.getProperty(keyssmparameter).toString();
snsTopicArn=ssm.getProperty(snstopicArnParameter).toString();
AmazonSNSConfig snsConfig = new AmazonSNSConfig(amazonRegion);
snsClient = snsConfig.AmazonSNS();
KmsConfig kmsConfig = new KmsConfig(kmsEndpoint, amazonRegion);
kmsClient = kmsConfig.awsKMS();
} catch (Exception e) {
System.out.println("SSM property not found");
System.out.println("Error while initializing AwsServiceConfig"+e.getMessage());
}
amazonAWSCredentials = IAMConfig.amazonAWSCredentials();
ssmManager = AWSSimpleSystemsManagementClientBuilder.standard()
.withCredentials(amazonAWSCredentials)
.withRegion(amazonRegion)
.build();
List<String> paramsList = new ArrayList<String>();
paramsList.add(keyssmparameter);
paramsList.add(snstopicArnParameter);
GetParametersRequest paramRequest = new GetParametersRequest()
.withNames(paramsList)
.withWithDecryption(true);
GetParametersResult paramResult = new GetParametersResult();
paramResult = ssmManager.getParameters(paramRequest);
System.out.println("SSM Parameters retrieved");
List<Parameter> paramsResultList = new ArrayList<>();
paramsResultList = paramResult.getParameters();
for (Parameter s : paramsResultList) {
if(s.getName().equalsIgnoreCase(keyssmparameter)) {
kmsKeyId = s.getValue();
}
if(s.getName().equalsIgnoreCase(snstopicArnParameter)) {
snsTopicArn = s.getValue();
}
}
} catch (ParameterNotFoundException e) {
throw new AppException(HttpStatus.SC_NOT_FOUND, "SSM ParameterNotFoundException",e.getErrorMessage());
} catch (InternalServerErrorException e) {
throw new AppException(HttpStatus.SC_INTERNAL_SERVER_ERROR, "SSM InternalServerErrorException",e.getErrorMessage());
}
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment