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 @@ ...@@ -14,19 +14,29 @@
package org.opengroup.osdu.register.provider.aws.config; package org.opengroup.osdu.register.provider.aws.config;
import com.amazonaws.auth.AWSCredentialsProvider;
import com.amazonaws.services.kms.AWSKMS; 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 com.amazonaws.services.sns.AmazonSNS;
import lombok.AccessLevel; import lombok.AccessLevel;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; 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.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.opengroup.osdu.register.provider.aws.subscriber.KmsConfig;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct; import javax.annotation.PostConstruct;
import java.util.ArrayList;
import java.util.List;
import org.opengroup.osdu.core.common.model.http.AppException;
@Component @Component
public class AwsServiceConfig { public class AwsServiceConfig {
...@@ -76,27 +86,56 @@ public class AwsServiceConfig { ...@@ -76,27 +86,56 @@ public class AwsServiceConfig {
@Getter() @Getter()
public AmazonSNS snsClient; public AmazonSNS snsClient;
private AWSCredentialsProvider amazonAWSCredentials;
private AWSSimpleSystemsManagement ssmManager;
@PostConstruct @PostConstruct
public void init() { public void init() {
if (ssmEnabled) { if (ssmEnabled) {
AmazonSNSConfig snsConfig = new AmazonSNSConfig(amazonRegion);
snsClient = snsConfig.AmazonSNS();
KmsConfig kmsConfig = new KmsConfig(kmsEndpoint, amazonRegion);
kmsClient = kmsConfig.awsKMS();
try { 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 keyssmparameter = "/osdu/" + environment + "/register/register-kms-key-id";
String snstopicArnParameter = "/osdu/" + environment + "/register/register-sns-topic-arn"; String snstopicArnParameter = "/osdu/" + environment + "/register/register-sns-topic-arn";
kmsKeyId = ssm.getProperty(keyssmparameter).toString(); amazonAWSCredentials = IAMConfig.amazonAWSCredentials();
snsTopicArn=ssm.getProperty(snstopicArnParameter).toString(); ssmManager = AWSSimpleSystemsManagementClientBuilder.standard()
AmazonSNSConfig snsConfig = new AmazonSNSConfig(amazonRegion); .withCredentials(amazonAWSCredentials)
snsClient = snsConfig.AmazonSNS(); .withRegion(amazonRegion)
KmsConfig kmsConfig = new KmsConfig(kmsEndpoint, amazonRegion); .build();
kmsClient = kmsConfig.awsKMS(); List<String> paramsList = new ArrayList<String>();
} catch (Exception e) { paramsList.add(keyssmparameter);
System.out.println("SSM property not found"); paramsList.add(snstopicArnParameter);
System.out.println("Error while initializing AwsServiceConfig"+e.getMessage());
} 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