要在EC2实例上使用SSM运行命令,您可以使用AWS Java SDK来实现。下面是一个包含代码示例的解决方法:
首先,确保您已经在本地配置了AWS Java SDK环境。
导入必要的类和包:
import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider;
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;
Region region = Region.YOUR_REGION; // 替换为您的AWS区域
SsmClient ssmClient = SsmClient.builder()
.credentialsProvider(DefaultCredentialsProvider.create())
.region(region)
.build();
String instanceId = "YOUR_INSTANCE_ID"; // 替换为您的EC2实例ID
String command = "YOUR_COMMAND"; // 替换为您要运行的命令
SendCommandRequest sendCommandRequest = SendCommandRequest.builder()
.instanceIds(instanceId)
.documentName("AWS-RunShellScript") // 这里使用的是Shell脚本命令
.parameters(Collections.singletonMap("commands", Collections.singletonList(command)))
.build();
SendCommandResponse sendCommandResponse = ssmClient.sendCommand(sendCommandRequest);
String commandId = sendCommandResponse.command().commandId();
GetCommandInvocationRequest getCommandInvocationRequest = GetCommandInvocationRequest.builder()
.instanceId(instanceId)
.commandId(commandId)
.build();
GetCommandInvocationResponse getCommandInvocationResponse = ssmClient.getCommandInvocation(getCommandInvocationRequest);
String output = getCommandInvocationResponse.standardOutputContent();
System.out.println("Command output: " + output);
这样,您就可以在EC2实例上使用SSM运行命令,并获取输出结果。
请注意,以上代码示例仅供参考,您需要根据您的实际情况进行适当的修改。确保替换YOUR_REGION、YOUR_INSTANCE_ID和YOUR_COMMAND为实际的值。