Skip to content
This repository was archived by the owner on Oct 23, 2025. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions aws-rds-dbproxy/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -68,11 +68,11 @@
<version>2.26.0</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk-rds -->
<!-- https://mvnrepository.com/artifact/software.amazon.awssdk/rds -->
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-rds</artifactId>
<version>[1.12.364, 2.0.0)</version>
<groupId>software.amazon.awssdk</groupId>
<artifactId>rds</artifactId>
<version>2.33.6</version>
</dependency>
</dependencies>

Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
package software.amazon.rds.dbproxy;

import java.util.List;

import com.amazonaws.services.rds.model.DBProxy;
import com.amazonaws.services.rds.model.DBProxyTarget;
import software.amazon.awssdk.services.rds.model.DBProxy;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,15 @@
import java.util.ArrayList;
import java.util.List;

import com.amazonaws.services.rds.AmazonRDS;
import com.amazonaws.services.rds.AmazonRDSClientBuilder;
import com.amazonaws.services.rds.model.CreateDBProxyRequest;
import com.amazonaws.services.rds.model.CreateDBProxyResult;
import com.amazonaws.services.rds.model.DBProxy;
import com.amazonaws.services.rds.model.DBProxyAlreadyExistsException;
import com.amazonaws.services.rds.model.DescribeDBProxiesRequest;
import com.amazonaws.services.rds.model.DescribeDBProxiesResult;
import com.amazonaws.services.rds.model.Tag;
import com.amazonaws.services.rds.model.UserAuthConfig;
import software.amazon.awssdk.services.rds.RdsClient;
import software.amazon.awssdk.services.rds.model.CreateDbProxyRequest;
import software.amazon.awssdk.services.rds.model.CreateDbProxyResponse;
import software.amazon.awssdk.services.rds.model.DBProxy;
import software.amazon.awssdk.services.rds.model.DbProxyAlreadyExistsException;
import software.amazon.awssdk.services.rds.model.DescribeDbProxiesRequest;
import software.amazon.awssdk.services.rds.model.DescribeDbProxiesResponse;
import software.amazon.awssdk.services.rds.model.Tag;
import software.amazon.awssdk.services.rds.model.UserAuthConfig;
import software.amazon.cloudformation.proxy.AmazonWebServicesClientProxy;
import software.amazon.cloudformation.proxy.HandlerErrorCode;
import software.amazon.cloudformation.proxy.Logger;
Expand All @@ -24,7 +23,7 @@ public class CreateHandler extends BaseHandler<CallbackContext> {
public static final String TIMED_OUT_MESSAGE = "Timed out waiting for proxy to become available.";

private AmazonWebServicesClientProxy clientProxy;
private AmazonRDS rdsClient;
private RdsClient rdsClient;

@Override
public ProgressEvent<ResourceModel, CallbackContext> handleRequest(
Expand All @@ -36,8 +35,7 @@ public ProgressEvent<ResourceModel, CallbackContext> handleRequest(
final ResourceModel model = request.getDesiredResourceState();

clientProxy = proxy;
rdsClient = AmazonRDSClientBuilder.defaultClient();

rdsClient = RdsClient.create();
final CallbackContext currentContext = callbackContext == null ?
CallbackContext.builder().stabilizationRetriesRemaining(Constants.NUMBER_OF_STATE_POLL_RETRIES).build() :
callbackContext;
Expand Down Expand Up @@ -65,41 +63,41 @@ private ProgressEvent<ResourceModel, CallbackContext> createProxyAndUpdateProgre
.stabilizationRetriesRemaining(Constants.NUMBER_OF_STATE_POLL_RETRIES)
.build())
.build();
} catch (DBProxyAlreadyExistsException e) {
} catch (DbProxyAlreadyExistsException e) {
return ProgressEvent.defaultFailureHandler(e, HandlerErrorCode.AlreadyExists);
}
} else if (proxyStateSoFar.getStatus().equals(Constants.AVAILABLE_PROXY_STATE)) {
model.setDBProxyArn(proxyStateSoFar.getDBProxyArn());
model.setEndpoint(proxyStateSoFar.getEndpoint());
model.setVpcId(proxyStateSoFar.getVpcId());
model.setDebugLogging(proxyStateSoFar.getDebugLogging());
model.setIdleClientTimeout(proxyStateSoFar.getIdleClientTimeout());
model.setRequireTLS(proxyStateSoFar.getRequireTLS());
} else if (proxyStateSoFar.status().toString().equals(Constants.AVAILABLE_PROXY_STATE)) {
model.setDBProxyArn(proxyStateSoFar.dbProxyArn());
model.setEndpoint(proxyStateSoFar.endpoint());
model.setVpcId(proxyStateSoFar.vpcId());
model.setDebugLogging(proxyStateSoFar.debugLogging());
model.setIdleClientTimeout(proxyStateSoFar.idleClientTimeout());
model.setRequireTLS(proxyStateSoFar.requireTLS());

return ProgressEvent.<ResourceModel, CallbackContext>builder()
.resourceModel(model)
.status(OperationStatus.SUCCESS)
.build();
} else if (Constants.TERMINAL_FAILURE_STATES.contains(proxyStateSoFar.getStatus())) {
} else if (Constants.TERMINAL_FAILURE_STATES.contains(proxyStateSoFar.status().toString())) {
return ProgressEvent.<ResourceModel, CallbackContext>builder()
.status(OperationStatus.FAILED)
.errorCode(HandlerErrorCode.NotFound)
.build();
} else {
model.setDBProxyArn(proxyStateSoFar.getDBProxyArn());
model.setEndpoint(proxyStateSoFar.getEndpoint());
model.setVpcId(proxyStateSoFar.getVpcId());
model.setDebugLogging(proxyStateSoFar.getDebugLogging());
model.setIdleClientTimeout(proxyStateSoFar.getIdleClientTimeout());
model.setRequireTLS(proxyStateSoFar.getRequireTLS());
model.setDBProxyArn(proxyStateSoFar.dbProxyArn());
model.setEndpoint(proxyStateSoFar.endpoint());
model.setVpcId(proxyStateSoFar.vpcId());
model.setDebugLogging(proxyStateSoFar.debugLogging());
model.setIdleClientTimeout(proxyStateSoFar.idleClientTimeout());
model.setRequireTLS(proxyStateSoFar.requireTLS());

try {
Thread.sleep(Constants.POLL_RETRY_DELAY_IN_MS);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}

DBProxy proxy = updatedProxyProgress(proxyStateSoFar.getDBProxyName());
DBProxy proxy = updatedProxyProgress(proxyStateSoFar.dbProxyName());
return ProgressEvent.<ResourceModel, CallbackContext>builder()
.resourceModel(model)
.status(OperationStatus.IN_PROGRESS)
Expand All @@ -115,20 +113,21 @@ private DBProxy createProxy(ResourceModel model) {
List<UserAuthConfig> userAuthConfig = Utility.getUserAuthConfigs(model);
List<Tag> tags = getTags(model);

CreateDBProxyRequest request = new CreateDBProxyRequest()
.withAuth(userAuthConfig)
.withDBProxyName(model.getDBProxyName())
.withDebugLogging(model.getDebugLogging())
.withEngineFamily(model.getEngineFamily())
.withIdleClientTimeout(model.getIdleClientTimeout())
.withRequireTLS(model.getRequireTLS())
.withRoleArn(model.getRoleArn())
.withVpcSecurityGroupIds(model.getVpcSecurityGroupIds())
.withVpcSubnetIds(model.getVpcSubnetIds())
.withTags(tags);

CreateDBProxyResult result = clientProxy.injectCredentialsAndInvoke(request, rdsClient::createDBProxy);
return result.getDBProxy();
CreateDbProxyRequest request = CreateDbProxyRequest.builder()
.auth(userAuthConfig)
.dbProxyName(model.getDBProxyName())
.debugLogging(model.getDebugLogging())
.engineFamily(model.getEngineFamily())
.idleClientTimeout(model.getIdleClientTimeout())
.requireTLS(model.getRequireTLS())
.roleArn(model.getRoleArn())
.vpcSecurityGroupIds(model.getVpcSecurityGroupIds())
.vpcSubnetIds(model.getVpcSubnetIds())
.tags(tags)
.build();

CreateDbProxyResponse response = clientProxy.injectCredentialsAndInvokeV2(request, rdsClient::createDBProxy);
return response.dbProxy();
}

private List<Tag> getTags(ResourceModel model) {
Expand All @@ -139,21 +138,24 @@ private List<Tag> getTags(ResourceModel model) {
}

for(TagFormat tag : model.getTags()){
Tag t = new Tag().withKey(tag.getKey()).withValue(tag.getValue());
Tag t = Tag.builder()
.key(tag.getKey())
.value(tag.getValue())
.build();
tags.add(t);
}
return tags;
}

private DBProxy updatedProxyProgress(String proxyName) {
DescribeDBProxiesRequest describeDBProxiesRequest;
DescribeDBProxiesResult describeDBProxiesResult;
DescribeDbProxiesRequest describeDBProxiesRequest = DescribeDbProxiesRequest.builder()
.dbProxyName(proxyName)
.build();

describeDBProxiesRequest = new DescribeDBProxiesRequest().withDBProxyName(proxyName);
describeDBProxiesResult = clientProxy.injectCredentialsAndInvoke(describeDBProxiesRequest, rdsClient::describeDBProxies);
return describeDBProxiesResult.getDBProxies()
DescribeDbProxiesResponse describeDbProxiesResponse = clientProxy.injectCredentialsAndInvokeV2(describeDBProxiesRequest, rdsClient::describeDBProxies);
return describeDbProxiesResponse.dbProxies()
.stream()
.findFirst()
.orElse(new DBProxy());
.orElse(DBProxy.builder().build());
}
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
package software.amazon.rds.dbproxy;

import com.amazonaws.services.rds.AmazonRDS;
import com.amazonaws.services.rds.AmazonRDSClientBuilder;
import com.amazonaws.services.rds.model.DBProxy;
import com.amazonaws.services.rds.model.DBProxyNotFoundException;
import com.amazonaws.services.rds.model.DeleteDBProxyRequest;
import com.amazonaws.services.rds.model.DeleteDBProxyResult;
import com.amazonaws.services.rds.model.DescribeDBProxiesRequest;
import software.amazon.awssdk.services.rds.RdsClient;
import software.amazon.awssdk.services.rds.model.DBProxy;
import software.amazon.awssdk.services.rds.model.DbProxyNotFoundException;
import software.amazon.awssdk.services.rds.model.DeleteDbProxyRequest;
import software.amazon.awssdk.services.rds.model.DeleteDbProxyResponse;
import software.amazon.awssdk.services.rds.model.DescribeDbProxiesRequest;
import software.amazon.cloudformation.proxy.AmazonWebServicesClientProxy;
import software.amazon.cloudformation.proxy.HandlerErrorCode;
import software.amazon.cloudformation.proxy.Logger;
Expand All @@ -18,7 +17,7 @@ public class DeleteHandler extends BaseHandler<CallbackContext> {
private static final String TIMED_OUT_MESSAGE = "Timed out waiting for proxy to terminate.";

private AmazonWebServicesClientProxy clientProxy;
private AmazonRDS rdsClient;
private RdsClient rdsClient;

@Override
public ProgressEvent<ResourceModel, CallbackContext> handleRequest(
Expand All @@ -30,7 +29,7 @@ public ProgressEvent<ResourceModel, CallbackContext> handleRequest(
final ResourceModel model = request.getDesiredResourceState();

clientProxy = proxy;
rdsClient = AmazonRDSClientBuilder.defaultClient();
rdsClient = RdsClient.create();

final CallbackContext currentContext = callbackContext == null ?
CallbackContext.builder().stabilizationRetriesRemaining(Constants.NUMBER_OF_STATE_POLL_RETRIES).build() :
Expand All @@ -56,7 +55,7 @@ private ProgressEvent<ResourceModel, CallbackContext> deleteProxyAndUpdateProgre
.stabilizationRetriesRemaining(Constants.NUMBER_OF_STATE_POLL_RETRIES)
.build())
.build();
} catch (DBProxyNotFoundException e) {
} catch (DbProxyNotFoundException e) {
return ProgressEvent.defaultFailureHandler(e, HandlerErrorCode.NotFound);
}
} else if (callbackContext.isDeleted()) {
Expand All @@ -82,20 +81,18 @@ private ProgressEvent<ResourceModel, CallbackContext> deleteProxyAndUpdateProgre
}

private DBProxy deleteProxy(String proxyName) {
DeleteDBProxyRequest request = new DeleteDBProxyRequest().withDBProxyName(proxyName);
DeleteDbProxyRequest request = DeleteDbProxyRequest.builder().dbProxyName(proxyName).build();

DeleteDBProxyResult result = clientProxy.injectCredentialsAndInvoke(request, rdsClient::deleteDBProxy);
return result.getDBProxy();
DeleteDbProxyResponse response = clientProxy.injectCredentialsAndInvokeV2(request, rdsClient::deleteDBProxy);
return response.dbProxy();
}

private boolean doesProxyExist(String proxyName) {
DescribeDBProxiesRequest describeDBProxiesRequest;

describeDBProxiesRequest = new DescribeDBProxiesRequest().withDBProxyName(proxyName);
DescribeDbProxiesRequest describeDBProxiesRequest = DescribeDbProxiesRequest.builder().dbProxyName(proxyName).build();
try {
clientProxy.injectCredentialsAndInvoke(describeDBProxiesRequest, rdsClient::describeDBProxies);
clientProxy.injectCredentialsAndInvokeV2(describeDBProxiesRequest, rdsClient::describeDBProxies);
return true;
} catch (DBProxyNotFoundException e) {
} catch (DbProxyNotFoundException e) {
return false;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,9 @@
import java.util.List;
import java.util.stream.Collectors;

import com.amazonaws.services.rds.AmazonRDS;
import com.amazonaws.services.rds.AmazonRDSClientBuilder;
import com.amazonaws.services.rds.model.DescribeDBProxiesRequest;
import com.amazonaws.services.rds.model.DescribeDBProxiesResult;
import software.amazon.awssdk.services.rds.RdsClient;
import software.amazon.awssdk.services.rds.model.DescribeDbProxiesRequest;
import software.amazon.awssdk.services.rds.model.DescribeDbProxiesResponse;
import software.amazon.cloudformation.proxy.AmazonWebServicesClientProxy;
import software.amazon.cloudformation.proxy.Logger;
import software.amazon.cloudformation.proxy.OperationStatus;
Expand All @@ -18,7 +17,7 @@ public class ListHandler extends BaseHandler<CallbackContext> {
private static final int MAX_RESULTS = 100;

private AmazonWebServicesClientProxy clientProxy;
private AmazonRDS rdsClient;
private RdsClient rdsClient;

@Override
public ProgressEvent<ResourceModel, CallbackContext> handleRequest(
Expand All @@ -28,7 +27,7 @@ public ProgressEvent<ResourceModel, CallbackContext> handleRequest(
final Logger logger) {

clientProxy = proxy;
rdsClient = AmazonRDSClientBuilder.defaultClient();
rdsClient = RdsClient.create();

final List<ResourceModel> models = listProxies(request.getNextToken());

Expand All @@ -39,12 +38,13 @@ public ProgressEvent<ResourceModel, CallbackContext> handleRequest(
}

private List<ResourceModel> listProxies(String nextToken) {
DescribeDBProxiesRequest request = new DescribeDBProxiesRequest().withMaxRecords(MAX_RESULTS).withMarker(nextToken);
DescribeDbProxiesRequest request = DescribeDbProxiesRequest.builder()
.maxRecords(MAX_RESULTS)
.marker(nextToken)
.build();

DescribeDBProxiesResult result = clientProxy.injectCredentialsAndInvoke(request, rdsClient::describeDBProxies);
DescribeDbProxiesResponse response = clientProxy.injectCredentialsAndInvokeV2(request, rdsClient::describeDBProxies);

List<ResourceModel> models = result.getDBProxies().stream().map(r -> Utility.resultToModel(r)).collect(Collectors.toList());

return models;
return response.dbProxies().stream().map(r -> Utility.resultToModel(r)).collect(Collectors.toList());
}
}
Loading