

 适用于 Java 的 Amazon SDK 1.x于2025年 end-of-support 12月31日达到。我们建议您迁移到 [Amazon SDK for Java 2.x](https://docs.amazonaws.cn/sdk-for-java/latest/developer-guide/home.html) 以继续获得新功能、可用性改进和安全更新。

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

# 管理 Amazon EC2实例
<a name="examples-ec2-instances"></a>

## 创建实例
<a name="creating-an-instance"></a>

要创建新 Amazon EC2 实例，请调用 AmazonEC2Client 的 `runInstances` 方法，并为它提供 [RunInstancesRequest](https://docs.amazonaws.cn/sdk-for-java/v1/reference/com/amazonaws/services/ec2/model/RunInstancesRequest.html)，其中包含要使用的[亚马逊机器映像 (AMI)](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/AMIs.html) 和一个[实例类型](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/instance-types.html)。

 **导入**。

```
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();
```

请参阅[完整示例](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/ec2/src/main/java/aws/example/ec2/CreateInstance.java)。

## 启动实例
<a name="starting-an-instance"></a>

要启动 Amazon EC2 实例，请调用 AmazonEC2Client 的 `startInstances` 方法，并为它提供 [StartInstancesRequest](https://docs.amazonaws.cn/sdk-for-java/v1/reference/com/amazonaws/services/ec2/model/StartInstancesRequest.html)，其中包含要启动实例的 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);
```

请参阅[完整示例](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/ec2/src/main/java/aws/example/ec2/StartStopInstance.java)。

## 停止实例
<a name="stopping-an-instance"></a>

要停止 Amazon EC2 实例，请调用 AmazonEC2Client 的 `stopInstances` 方法，并为它提供 [StopInstancesRequest](https://docs.amazonaws.cn/sdk-for-java/v1/reference/com/amazonaws/services/ec2/model/StopInstancesRequest.html)，其中包含要停止的实例的 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);
```

请参阅[完整示例](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/ec2/src/main/java/aws/example/ec2/StartStopInstance.java)。

## 重启实例
<a name="rebooting-an-instance"></a>

要重启 Amazon EC2 实例，请调用 AmazonEC2Client 的 `rebootInstances` 方法，并为它提供 [RebootInstancesRequest](https://docs.amazonaws.cn/sdk-for-java/v1/reference/com/amazonaws/services/ec2/model/RebootInstancesRequest.html)，其中包含要重启实例的 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);
```

请参阅[完整示例](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/ec2/src/main/java/aws/example/ec2/RebootInstance.java)。

## 描述实例
<a name="describing-instances"></a>

要列出您的实例，您需要创建 [DescribeInstancesRequest](https://docs.amazonaws.cn/sdk-for-java/v1/reference/com/amazonaws/services/ec2/model/DescribeInstancesRequest.html) 并调用 AmazonEC2Client 的 `describeInstances` 方法。它将返回 [DescribeInstancesResult](https://docs.amazonaws.cn/sdk-for-java/v1/reference/com/amazonaws/services/ec2/model/DescribeInstancesResult.html) 对象，您可以用它来列出您的账户和区域的 Amazon EC2 实例。

实例按*预留*进行分组。每个预留对应对启动实例的 `startInstances` 的调用。要列出您的实例，您必须首先在每个返回的 `DescribeInstancesResult`Reservation`getReservations' method, and then call `getInstances` 对象上调用 [ 类的 ](https://docs.amazonaws.cn/sdk-for-java/v1/reference/com/amazonaws/services/ec2/model/Reservation.html)。

 **导入**。

```
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` 调用中使用相同的请求对象。

请参阅[完整示例](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/ec2/src/main/java/aws/example/ec2/DescribeInstances.java)。

## 监控实例
<a name="monitoring-an-instance"></a>

您可以监控 Amazon EC2 实例的各方面，例如 CPU 和网络利用率、可用内存和剩余磁盘空间。要了解有关实例监控的信息，请参阅《Amazon EC2 用户指南（适用于 Linux 实例）》中的[监控 Amazon EC2](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/monitoring_ec2.html)。

要开始监控实例，您必须用要监控实例的 ID 创建一个 [MonitorInstancesRequest](https://docs.amazonaws.cn/sdk-for-java/v1/reference/com/amazonaws/services/ec2/model/MonitorInstancesRequest.html)，并将其传递给 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);
```

请参阅[完整示例](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/ec2/src/main/java/aws/example/ec2/MonitorInstance.java)。

## 停止实例监控
<a name="stopping-instance-monitoring"></a>

要停止监控实例，您必须用要停止监控实例的 ID 创建一个 [UnmonitorInstancesRequest](https://docs.amazonaws.cn/sdk-for-java/v1/reference/com/amazonaws/services/ec2/model/UnmonitorInstancesRequest.html)，并将其传递给 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);
```

请参阅[完整示例](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/ec2/src/main/java/aws/example/ec2/MonitorInstance.java)。

## 更多信息
<a name="more-information"></a>
+  《Amazon EC2 API Reference》中的 [RunInstances](https://docs.amazonaws.cn/AWSEC2/latest/APIReference/API_RunInstances.html)
+  《Amazon EC2 API Reference》中的 [DescribeInstances](https://docs.amazonaws.cn/AWSEC2/latest/APIReference/API_DescribeInstances.html)
+  《Amazon EC2 API Reference》中的 [StartInstances](https://docs.amazonaws.cn/AWSEC2/latest/APIReference/API_StartInstances.html)
+  《Amazon EC2 API Reference》中的 [StopInstances](https://docs.amazonaws.cn/AWSEC2/latest/APIReference/API_StopInstances.html)
+  《Amazon EC2 API Reference》中的 [RebootInstances](https://docs.amazonaws.cn/AWSEC2/latest/APIReference/API_RebootInstances.html)
+  《Amazon EC2 API Reference》中的 [MonitorInstances](https://docs.amazonaws.cn/AWSEC2/latest/APIReference/API_MonitorInstances.html)
+  《Amazon EC2 API Reference》中的 [UnmonitorInstances](https://docs.amazonaws.cn/AWSEC2/latest/APIReference/API_UnmonitorInstances.html)