现在,您可以使用Amazon S3转移经理(开发人员预览版)
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在中使用弹性 IP 地址Amazon EC2
分配弹性 IP 地址
要使用弹性 IP 地址,您应首先向您的账户分配这样一个地址,然后将其与您的实例或网络接口关联。
要分配弹性 IP 地址,请调用 Ec2ClientallocateAddress
使用的方法AllocateAddressRequest包含网络类型的对象(经典)Amazon EC2或 VPC)。
返回的AllocateAddressResponse包含一个分配 ID,您可以用它来将地址分配给实例,在AssociateAddressRequest到 Ec2ClientassociateAddress
方法。
导入
import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.ec2.Ec2Client; import software.amazon.awssdk.services.ec2.model.AllocateAddressRequest; import software.amazon.awssdk.services.ec2.model.DomainType; 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.Ec2Exception;
代码
public static String getAllocateAddress( Ec2Client ec2, String instanceId) { try { AllocateAddressRequest allocateRequest = AllocateAddressRequest.builder() .domain(DomainType.VPC) .build(); AllocateAddressResponse allocateResponse = ec2.allocateAddress(allocateRequest); String allocationId = allocateResponse.allocationId(); AssociateAddressRequest associateRequest = AssociateAddressRequest.builder() .instanceId(instanceId) .allocationId(allocationId) .build(); AssociateAddressResponse associateResponse = ec2.associateAddress(associateRequest); return associateResponse.associationId(); } catch (Ec2Exception e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } return ""; }
请参阅 GitHub 上的完整示例
描述弹性 IP 地址
要列出分配到您的账户的弹性 IP 地址,请致电 Ec2ClientdescribeAddresses
方法。它将返回 DescribeAddressesResponse,可用于获取账户中代表弹性 IP 地址的 Address 对象的列表。
导入
import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.ec2.Ec2Client; import software.amazon.awssdk.services.ec2.model.Address; import software.amazon.awssdk.services.ec2.model.DescribeAddressesResponse; import software.amazon.awssdk.services.ec2.model.Ec2Exception;
代码
public static void describeEC2Address(Ec2Client ec2 ) { try { 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()); } } catch (Ec2Exception e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } }
请参阅 GitHub 上的完整示例
释放弹性 IP 地址
要释放弹性 IP 地址,请调用 Ec2ClientreleaseAddress
方法,传递一个ReleaseAddressRequest包含要释放的弹性 IP 地址的分配 ID。
导入
import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.ec2.Ec2Client; import software.amazon.awssdk.services.ec2.model.Ec2Exception; import software.amazon.awssdk.services.ec2.model.ReleaseAddressRequest; import software.amazon.awssdk.services.ec2.model.ReleaseAddressResponse;
代码
public static void releaseEC2Address(Ec2Client ec2,String allocId) { try { ReleaseAddressRequest request = ReleaseAddressRequest.builder() .allocationId(allocId).build(); ReleaseAddressResponse response = ec2.releaseAddress(request); System.out.printf( "Successfully released elastic IP address %s", allocId); } catch (Ec2Exception e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } }
在释放弹性 IP 地址后,它将回到Amazon此后您不能再使用 IP 地址池。请务必更新您的 DNS 记录和通过该地址进行通信的任何服务器或设备。
如果您使用的是 EC2-Classic 或默认 VPC,则释放弹性 IP 地址会自动断开该地址与任何实例的关联。要在不释放的情况下取消关联弹性 IP 地址,请使用 Ec2ClientdisassociateAddress
方法。
如果您使用的是非默认 VPC,则必须使用 disassociateAddress
取消弹性 IP 地址的关联,然后再尝试释放它。否则,Amazon EC2 会返回错误 (InvalidIPAddress.InUse)。
请参阅 GitHub 上的完整示例
更多信息
-
弹性 IP 地址中的Amazon EC2用户指南(适用于 Linux 实例)
-
AllocateAddress中的Amazon EC2API 参考
-
DescribeAddresses中的Amazon EC2API 参考
-
ReleaseAddress中的Amazon EC2API 参考