

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

# 在 适用于 PHP 的 Amazon SDK 版本 3 的 Amazon EC2 上使用弹性 IP 地址
<a name="ec2-examples-using-elastic-ip-addresses"></a>

弹性 IP 地址是专为动态云计算设计的静态 IP 地址。弹性 IP 地址与您的关联 Amazon Web Services 账户。它是公有 IP 地址，可从 Internet 访问。如果您的实例没有公有 IP 地址，则可以将弹性 IP 地址与您的实例关联以启用与 Internet 的通信。

以下示例演示如何：
+ 使用描述您的一个或多个实例[DescribeInstances](https://docs.amazonaws.cn/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#describeinstances)。
+ 使用获取弹性 IP 地址[AllocateAddress](https://docs.amazonaws.cn/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#allocateaddress)。
+ 使用将弹性 IP 地址与实例关联起来[AssociateAddress](https://docs.amazonaws.cn/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#associateaddress)。
+ 使用释放弹性 IP 地址[ReleaseAddress](https://docs.amazonaws.cn/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#releaseaddress)。

的所有示例代码都可以在[此 适用于 PHP 的 Amazon SDK 处找到 GitHub](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-an-instance"></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="allocate-and-associate-an-address"></a>

 **导入** 

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

 **示例代码** 

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

$instanceId = 'InstanceID';

$allocation = $ec2Client->allocateAddress(array(
    'DryRun' => false,
    'Domain' => 'vpc',
));

$result = $ec2Client->associateAddress(array(
    'DryRun' => false,
    'InstanceId' => $instanceId,
    'AllocationId' => $allocation->get('AllocationId')
));

var_dump($result);
```

## 发布地址
<a name="release-an-address"></a>

 **导入** 

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

 **示例代码** 

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

$associationID = 'AssociationID';

$allocationID = 'AllocationID';

$result = $ec2Client->disassociateAddress([
    'AssociationId' => $associationID,
]);

$result = $ec2Client->releaseAddress([
    'AllocationId' => $allocationID,
]);

var_dump($result);
```