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

现在,您可以使用Amazon S3转移经理(开发人员预览版)中的Amazon SDK for Java2.x 用于加速文件传输。试试一下然后告诉我们您的想法!顺便说一句,Amazon SDK for Java正在招聘团队软件开发工程师

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

在中使用弹性 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 上的完整示例

更多信息