

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

# 使用 适用于 PHP 的 Amazon SDK 版本 3 来管理 Amazon EC2 实例
<a name="ec2-examples-managing-instances"></a>

以下示例演示如何：
+ 使用 [DescribeInstances](https://docs.amazonaws.cn/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#describeinstances) 描述 Amazon EC2 实例。
+ 使用 [MonitorInstances](https://docs.amazonaws.cn/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#monitorinstances) 为正在运行的实例启用详细监控。
+ 使用 [UnmonitorInstances](https://docs.amazonaws.cn/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#unmonitorinstances) 为正在运行的实例禁用监控。
+ 使用 [StartInstances](https://docs.amazonaws.cn/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#startinstances) 启动之前停止的 Amazon EBS-backed AMI。
+ 使用 [StopInstances](https://docs.amazonaws.cn/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#stopinstances) 停止由 Amazon EBS 支持的实例。
+ 使用 [RebootInstances](https://docs.amazonaws.cn/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#rebootinstances) 请求重新启动一个或多个实例。

适用于 PHP 的 Amazon SDKGitHub[ 上提供了](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code)的所有示例代码。

## 凭证
<a name="examplecredentials"></a>

运行示例代码之前，请配置您的 Amazon 凭证，如 [Amazon 使用 适用于 PHP 的 Amazon SDK 版本 3 进行身份验证](credentials.md) 中所述。然后导入 适用于 PHP 的 Amazon SDK，如 [安装 适用于 PHP 的 Amazon SDK 版本 3](getting-started_installation.md) 中所述。

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

 **导入**。

```
require 'vendor/autoload.php';

use Aws\Ec2\Ec2Client;
```

 **示例代码** 

```
$ec2Client = new Aws\Ec2\Ec2Client([
    'region' => 'us-west-2',
    'version' => '2016-11-15',
    'profile' => 'default'
]);
$result = $ec2Client->describeInstances();
echo "Instances: \n";
foreach ($result['Reservations'] as $reservation) {
    foreach ($reservation['Instances'] as $instance) {
        echo "InstanceId: {$instance['InstanceId']} - {$instance['State']['Name']} \n";
    }
}
```

## 启用和禁用监控
<a name="enable-and-disable-monitoring"></a>

 **导入**。

```
require 'vendor/autoload.php';
```

 **示例代码** 

```
$ec2Client = new Aws\Ec2\Ec2Client([
    'region' => 'us-west-2',
    'version' => '2016-11-15',
    'profile' => 'default'
]);

$instanceIds = ['InstanceID1', 'InstanceID2'];

$monitorInstance = 'ON';

if ($monitorInstance == 'ON') {
    $result = $ec2Client->monitorInstances([
        'InstanceIds' => $instanceIds
    ]);
} else {
    $result = $ec2Client->unmonitorInstances([
        'InstanceIds' => $instanceIds
    ]);
}

var_dump($result);
```

## 启动和停止 实例
<a name="start-and-stop-an-instance"></a>

 **导入**。

```
require 'vendor/autoload.php';
```

 **示例代码** 

```
$ec2Client = new Aws\Ec2\Ec2Client([
    'region' => 'us-west-2',
    'version' => '2016-11-15',
    'profile' => 'default'
]);

$action = 'START';

$instanceIds = ['InstanceID1', 'InstanceID2'];

if ($action == 'START') {
    $result = $ec2Client->startInstances([
        'InstanceIds' => $instanceIds,
    ]);
} else {
    $result = $ec2Client->stopInstances([
        'InstanceIds' => $instanceIds,
    ]);
}

var_dump($result);
```

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

 **导入**。

```
require 'vendor/autoload.php';
```

 **示例代码** 

```
$ec2Client = new Aws\Ec2\Ec2Client([
    'region' => 'us-west-2',
    'version' => '2016-11-15',
    'profile' => 'default'
]);

$instanceIds = ['InstanceID1', 'InstanceID2'];

$result = $ec2Client->rebootInstances([
    'InstanceIds' => $instanceIds
]);

var_dump($result);
```