Untitled
unknown
plain_text
a year ago
4.2 kB
4
Indexable
import software.amazon.awssdk.auth.credentials.AwsSessionCredentials; import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.ssm.SsmClient; import software.amazon.awssdk.services.ssm.model.SendCommandRequest; import software.amazon.awssdk.services.ssm.model.SendCommandResponse; import software.amazon.awssdk.services.ssm.model.ListCommandsRequest; import software.amazon.awssdk.services.ssm.model.ListCommandsResponse; import software.amazon.awssdk.services.ssm.model.Command; import software.amazon.awssdk.services.ssm.model.CommandStatus; import software.amazon.awssdk.services.sts.StsClient; import software.amazon.awssdk.services.sts.model.AssumeRoleRequest; import software.amazon.awssdk.services.sts.model.AssumeRoleResponse; import java.util.Arrays; import java.util.Collections; public class SSMExample { public static void main(String[] args) { // Specify the AWS region Region region = Region.US_EAST_1; // Define the role ARN String roleArn = "arn:aws:iam::123456789012:role/MySSMRole"; // Create an STS client StsClient stsClient = StsClient.builder() .region(region) .build(); // Assume the role AssumeRoleRequest assumeRoleRequest = AssumeRoleRequest.builder() .roleArn(roleArn) .roleSessionName("SSMCommandSession") .build(); AssumeRoleResponse assumeRoleResponse = stsClient.assumeRole(assumeRoleRequest); AwsSessionCredentials sessionCredentials = AwsSessionCredentials.create( assumeRoleResponse.credentials().accessKeyId(), assumeRoleResponse.credentials().secretAccessKey(), assumeRoleResponse.credentials().sessionToken() ); // Create an SSM client using the assumed role credentials SsmClient ssmClient = SsmClient.builder() .region(region) .credentialsProvider(StaticCredentialsProvider.create(sessionCredentials)) .build(); // Create a SendCommandRequest SendCommandRequest sendCommandRequest = SendCommandRequest.builder() .instanceIds("instance-id") // Replace with your instance ID .documentName("AWS-RunShellScript") .parameters(Collections.singletonMap("commands", Arrays.asList("sudo echo Hello World"))) .build(); // Send the command try { SendCommandResponse sendCommandResponse = ssmClient.sendCommand(sendCommandRequest); String commandId = sendCommandResponse.command().commandId(); System.out.println("Command ID: " + commandId); // Poll the command status boolean isCommandCompleted = false; while (!isCommandCompleted) { try { // Wait for 5 seconds before polling again Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } // Create a ListCommandsRequest to get the command status ListCommandsRequest listCommandsRequest = ListCommandsRequest.builder() .commandId(commandId) .build(); // Get the command status ListCommandsResponse listCommandsResponse = ssmClient.listCommands(listCommandsRequest); Command command = listCommandsResponse.commands().get(0); CommandStatus status = command.status(); System.out.println("Current status: " + status); // Check if the command has completed if (status == CommandStatus.SUCCESS || status == CommandStatus.FAILED || status == CommandStatus.CANCELLED) { isCommandCompleted = true; } } System.out.println("Command execution completed."); } catch (Exception e) { System.err.println("Failed to send command: " + e.getMessage()); } } }
Editor is loading...
Leave a Comment