Map<String, List<String>> parameters = new HashMap<>();
parameters.put("portNumber", Arrays.asList(AWS_REMOTEPORT));
parameters.put("localPortNumber", Arrays.asList(AWS_LOCALPORT));
BasicAWSCredentials awsCreds = new BasicAWSCredentials(AWS_ACCESSKEYID, AWS_SECRETACCESSKEY);
StartSessionResult result = AWSSimpleSystemsManagementAsyncClientBuilder.standard()
.withCredentials(new AWSStaticCredentialsProvider(awsCreds)).withRegion(AWS_REGION).build()
.startSession(new StartSessionRequest().withTarget(AWS_TARGET)
.withDocumentName("AWS-StartPortForwardingSession").withParameters(parameters));
sessionID = result.getSessionId();
StringBuilder responseJson = new StringBuilder("{");
responseJson.append("\"SessionId\":");
responseJson.append("\"");
responseJson.append(result.getSessionId());
responseJson.append("\"");
responseJson.append(",\"TokenValue\":");
responseJson.append("\"");
responseJson.append(result.getTokenValue());
responseJson.append("\"");
responseJson.append(",\"StreamUrl\":");
responseJson.append("\"");
responseJson.append(result.getStreamUrl());
responseJson.append("\"");
responseJson.append("}");
List<String> arguments = new ArrayList<>();
arguments.add("session-manager-plugin");
arguments.add(responseJson.toString());
arguments.add(AWS_REGION); // Whatever region you use
arguments.add("StartSession");
arguments.add("default"); // Whatever profile you use
arguments.add("{\"Target\":\""+AWS_TARGET+"\",\"DocumentName\":\"AWS-StartPortForwardingSession\",\"Parameters\":{\"portNumber\":[\""+AWS_REMOTEPORT+"\"],\"localPortNumber\":[\""+AWS_LOCALPORT+"\"]}}");
arguments.add("https://ssm.us-east-1.amazonaws.com/");
ProcessBuilder pb = new ProcessBuilder(arguments.toArray(new String[] {}));
pb.redirectErrorStream(true);
Process p = pb.start();
BufferedReader r = new BufferedReader(new
InputStreamReader(p.getInputStream()));
String line;
while (true) {
line = r.readLine();
if (line == null) { break; }
System.out.println(line);
}
I am able to get the session id successfully but port forwarding is not working as expected. I tried to using session manager plugin mentioned in How to use an AWS Port Forwarding session via Java SDK but no success. Can someone help me what I am doing wrong