管理 Amazon EC2实例 - AWS SDK for Java 1.x

自2024年7月31日起, AWS SDK for Java 1.x已进入维护模式,并将于2025年12月31日end-of-support上线。我们建议您迁移到AWS SDK for Java 2.x以继续接收新功能、可用性改进和安全更新。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

管理 Amazon EC2实例

创建实例

要创建新 Amazon EC2 实例,请调用 AmazonEC2Client 的 runInstances 方法,并为它提供 RunInstancesRequest,其中包含要使用的亚马逊机器映像 (AMI) 和一个实例类型

导入

import com.amazonaws.services.ec2.AmazonEC2ClientBuilder; import com.amazonaws.services.ec2.model.InstanceType; import com.amazonaws.services.ec2.model.RunInstancesRequest; import com.amazonaws.services.ec2.model.RunInstancesResult; import com.amazonaws.services.ec2.model.Tag;

代码

RunInstancesRequest run_request = new RunInstancesRequest() .withImageId(ami_id) .withInstanceType(InstanceType.T1Micro) .withMaxCount(1) .withMinCount(1); RunInstancesResult run_response = ec2.runInstances(run_request); String reservation_id = run_response.getReservation().getInstances().get(0).getInstanceId();

请参阅完整示例

启动实例

要启动 Amazon EC2 实例,请调用 AmazonEC2Client 的 startInstances 方法,并为它提供 StartInstancesRequest,其中包含要启动实例的 ID。

导入

import com.amazonaws.services.ec2.AmazonEC2; import com.amazonaws.services.ec2.AmazonEC2ClientBuilder; import com.amazonaws.services.ec2.model.StartInstancesRequest;

代码

final AmazonEC2 ec2 = AmazonEC2ClientBuilder.defaultClient(); StartInstancesRequest request = new StartInstancesRequest() .withInstanceIds(instance_id); ec2.startInstances(request);

请参阅完整示例

停止实例

要停止 Amazon EC2 实例,请调用 AmazonEC2Client 的 stopInstances 方法,并为它提供 StopInstancesRequest,其中包含要停止的实例的 ID。

导入

import com.amazonaws.services.ec2.AmazonEC2; import com.amazonaws.services.ec2.AmazonEC2ClientBuilder; import com.amazonaws.services.ec2.model.StopInstancesRequest;

代码

final AmazonEC2 ec2 = AmazonEC2ClientBuilder.defaultClient(); StopInstancesRequest request = new StopInstancesRequest() .withInstanceIds(instance_id); ec2.stopInstances(request);

请参阅完整示例

重启实例

要重启 Amazon EC2 实例,请调用 AmazonEC2Client 的 rebootInstances 方法,并为它提供 RebootInstancesRequest,其中包含要重启实例的 ID。

导入

import com.amazonaws.services.ec2.AmazonEC2; import com.amazonaws.services.ec2.AmazonEC2ClientBuilder; import com.amazonaws.services.ec2.model.RebootInstancesRequest; import com.amazonaws.services.ec2.model.RebootInstancesResult;

代码

final AmazonEC2 ec2 = AmazonEC2ClientBuilder.defaultClient(); RebootInstancesRequest request = new RebootInstancesRequest() .withInstanceIds(instance_id); RebootInstancesResult response = ec2.rebootInstances(request);

请参阅完整示例

描述实例

要列出您的实例,您需要创建 DescribeInstancesRequest 并调用 AmazonEC2Client 的 describeInstances 方法。它将返回 DescribeInstancesResult 对象,您可以用它来列出您的账户和区域的 Amazon EC2 实例。

实例按预留进行分组。每个预留对应对启动实例的 startInstances 的调用。要列出您的实例,您必须首先在每个返回的 DescribeInstancesResultReservationgetReservations' method, and then call `getInstances 对象上调用 类的

导入

import com.amazonaws.services.ec2.AmazonEC2; import com.amazonaws.services.ec2.AmazonEC2ClientBuilder; import com.amazonaws.services.ec2.model.DescribeInstancesRequest; import com.amazonaws.services.ec2.model.DescribeInstancesResult; import com.amazonaws.services.ec2.model.Instance; import com.amazonaws.services.ec2.model.Reservation;

代码

final AmazonEC2 ec2 = AmazonEC2ClientBuilder.defaultClient(); boolean done = false; DescribeInstancesRequest request = new DescribeInstancesRequest(); while(!done) { DescribeInstancesResult response = ec2.describeInstances(request); for(Reservation reservation : response.getReservations()) { for(Instance instance : reservation.getInstances()) { System.out.printf( "Found instance with id %s, " + "AMI %s, " + "type %s, " + "state %s " + "and monitoring state %s", instance.getInstanceId(), instance.getImageId(), instance.getInstanceType(), instance.getState().getName(), instance.getMonitoring().getState()); } } request.setNextToken(response.getNextToken()); if(response.getNextToken() == null) { done = true; } }

结果将分页;您可以获取更多结果,方式是:将从结果对象的 getNextToken 方法返回的值传递到您的原始请求对象的 setNextToken 方法,然后在下一个 describeInstances 调用中使用相同的请求对象。

请参阅完整示例

监控实例

您可以监控 Amazon EC2 实例的各方面,例如 CPU 和网络利用率、可用内存和剩余磁盘空间。要了解有关实例监控的信息,请参阅《Amazon EC2 用户指南(适用于 Linux 实例)》中的监控 Amazon EC2

要开始监控实例,您必须用要监控实例的 ID 创建一个 MonitorInstancesRequest,并将其传递给 AmazonEC2Client 的 monitorInstances 方法。

导入

import com.amazonaws.services.ec2.AmazonEC2; import com.amazonaws.services.ec2.AmazonEC2ClientBuilder; import com.amazonaws.services.ec2.model.MonitorInstancesRequest;

代码

final AmazonEC2 ec2 = AmazonEC2ClientBuilder.defaultClient(); MonitorInstancesRequest request = new MonitorInstancesRequest() .withInstanceIds(instance_id); ec2.monitorInstances(request);

请参阅完整示例

停止实例监控

要停止监控实例,您必须用要停止监控实例的 ID 创建一个 UnmonitorInstancesRequest,并将其传递给 AmazonEC2Client 的 unmonitorInstances 方法。

导入

import com.amazonaws.services.ec2.AmazonEC2; import com.amazonaws.services.ec2.AmazonEC2ClientBuilder; import com.amazonaws.services.ec2.model.UnmonitorInstancesRequest;

代码

final AmazonEC2 ec2 = AmazonEC2ClientBuilder.defaultClient(); UnmonitorInstancesRequest request = new UnmonitorInstancesRequest() .withInstanceIds(instance_id); ec2.unmonitorInstances(request);

请参阅完整示例

更多信息