适用于 Java 的 AWS 开发工具包
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

在 Amazon EC2 中使用弹性 IP 地址

分配弹性 IP 地址

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

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

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

导入

import software.amazon.awssdk.services.ec2.Ec2Client; import software.amazon.awssdk.services.ec2.model.AllocateAddressRequest; import software.amazon.awssdk.services.ec2.model.AllocateAddressResponse; import software.amazon.awssdk.services.ec2.model.AssociateAddressRequest; import software.amazon.awssdk.services.ec2.model.AssociateAddressResponse; import software.amazon.awssdk.services.ec2.model.DomainType;

代码

Ec2Client ec2 = Ec2Client.create(); AllocateAddressRequest allocate_request = AllocateAddressRequest.builder() .domain(DomainType.VPC) .build(); AllocateAddressResponse allocate_response = ec2.allocateAddress(allocate_request); String allocation_id = allocate_response.allocationId(); AssociateAddressRequest associate_request = AssociateAddressRequest.builder() .instanceId(instance_id) .allocationId(allocation_id) .build(); AssociateAddressResponse associate_response = ec2.associateAddress(associate_request);

请参阅 GitHub 上的完整示例

描述弹性 IP 地址

要列出分配到您的账户的弹性 IP 地址,请调用 Ec2ClientdescribeAddresses 方法。它将返回 DescribeAddressesResponse,可用于获取账户中代表弹性 IP 地址的 Address 对象的列表。

导入

import software.amazon.awssdk.services.ec2.Ec2Client; import software.amazon.awssdk.services.ec2.model.Address; import software.amazon.awssdk.services.ec2.model.DescribeAddressesResponse;

代码

Ec2Client ec2 = Ec2Client.create(); DescribeAddressesResponse response = ec2.describeAddresses(); for(Address address : response.addresses()) { System.out.printf( "Found address with public IP %s, " + "domain %s, " + "allocation id %s " + "and NIC id %s", address.publicIp(), address.domain(), address.allocationId(), address.networkInterfaceId()); }

请参阅 GitHub 上的完整示例

释放弹性 IP 地址

要释放弹性 IP 地址,请调用 Ec2ClientreleaseAddress 方法,向其传递 ReleaseAddressRequest(包含您要释放的弹性 IP 地址的分配 ID)。

导入

import software.amazon.awssdk.services.ec2.Ec2Client; import software.amazon.awssdk.services.ec2.model.ReleaseAddressRequest; import software.amazon.awssdk.services.ec2.model.ReleaseAddressResponse;

代码

Ec2Client ec2 = Ec2Client.create(); ReleaseAddressRequest request = ReleaseAddressRequest.builder() .allocationId(alloc_id).build(); ReleaseAddressResponse response = ec2.releaseAddress(request);

在释放弹性 IP 地址后,它将回到 AWS IP 地址池,您此后不能再使用该地址。请务必更新您的 DNS 记录和通过该地址进行通信的任何服务器或设备。

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

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

请参阅 GitHub 上的完整示例

更多信息