在 Amazon EC2 中使用弹性 IP 地址 - 适用于 Java 的 AWS 开发工具包
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

在 Amazon EC2 中使用弹性 IP 地址

分配弹性 IP 地址

要使用弹性 IP 地址,您应首先向您的账户分配这样一个地址,然后将其与您的实例或网络接口关联。

要分配弹性 IP 地址,请使用包含网络类型(经典 EC2 或 VPC)的 AmazonEC2ClientallocateAddress 对象调用 的 方法。AllocateAddressRequest

返回的 AllocateAddressResult 包含一个分配 ID,您可以用它来将地址与实例关联,在 AssociateAddressRequest 中将分配 ID 和实例 ID 传递给 AmazonEC2Client 的 associateAddress 方法。

导入

import com.amazonaws.services.ec2.AmazonEC2; import com.amazonaws.services.ec2.AmazonEC2ClientBuilder; import com.amazonaws.services.ec2.model.AllocateAddressRequest; import com.amazonaws.services.ec2.model.AllocateAddressResult; import com.amazonaws.services.ec2.model.AssociateAddressRequest; import com.amazonaws.services.ec2.model.AssociateAddressResult; import com.amazonaws.services.ec2.model.DomainType;

代码

final AmazonEC2 ec2 = AmazonEC2ClientBuilder.defaultClient(); AllocateAddressRequest allocate_request = new AllocateAddressRequest() .withDomain(DomainType.Vpc); AllocateAddressResult allocate_response = ec2.allocateAddress(allocate_request); String allocation_id = allocate_response.getAllocationId(); AssociateAddressRequest associate_request = new AssociateAddressRequest() .withInstanceId(instance_id) .withAllocationId(allocation_id); AssociateAddressResult associate_response = ec2.associateAddress(associate_request);

请参阅完整示例

描述弹性 IP 地址

要列出分配到您的账户的弹性 IP 地址,请调用 AmazonEC2Client 的 describeAddresses 方法。它返回一个 DescribeAddressesResult,您可以使用它来获取表示您账户中的弹性 IP 地址的 Address 对象的列表。

导入

import com.amazonaws.services.ec2.AmazonEC2; import com.amazonaws.services.ec2.AmazonEC2ClientBuilder; import com.amazonaws.services.ec2.model.Address; import com.amazonaws.services.ec2.model.DescribeAddressesResult;

代码

final AmazonEC2 ec2 = AmazonEC2ClientBuilder.defaultClient(); DescribeAddressesResult response = ec2.describeAddresses(); for(Address address : response.getAddresses()) { System.out.printf( "Found address with public IP %s, " + "domain %s, " + "allocation id %s " + "and NIC id %s", address.getPublicIp(), address.getDomain(), address.getAllocationId(), address.getNetworkInterfaceId()); }

请参阅完整示例

释放弹性 IP 地址

要释放弹性 IP 地址,请调用 AmazonEC2Client 的 releaseAddress 方法,将其传递给一个 ReleaseAddressRequest,其中包含您要释放的弹性 IP 地址的分配 ID。

导入

import com.amazonaws.services.ec2.AmazonEC2; import com.amazonaws.services.ec2.AmazonEC2ClientBuilder; import com.amazonaws.services.ec2.model.ReleaseAddressRequest; import com.amazonaws.services.ec2.model.ReleaseAddressResult;

代码

final AmazonEC2 ec2 = AmazonEC2ClientBuilder.defaultClient(); ReleaseAddressRequest request = new ReleaseAddressRequest() .withAllocationId(alloc_id); ReleaseAddressResult response = ec2.releaseAddress(request);

在释放弹性 IP 地址后,它将回到 AWS IP 地址池,您此后不能再使用该地址。请务必更新您的 DNS 记录和通过该地址进行通信的任何服务器或设备。如果您尝试释放已释放的弹性 IP 地址,且该地址已分配到另一个 AWS 账户,您会收到 AuthFailure 错误。

如果您使用的是 EC2-Classic默认 VPC,则释放弹性 IP 地址会自动断开该地址与任何实例的关联。要在不释放的情况下取消关联弹性 IP 地址,请使用 AmazonEC2Client 的 disassociateAddress 方法。

如果您使用的是非默认 VPC,则必须使用 disassociateAddress 取消弹性 IP 地址的关联,然后再尝试释放它。否则,Amazon EC2 会返回错误 (InvalidIPAddress.InUse)。

请参阅完整示例

更多信息