Amazon EC2 の Elastic IP アドレスの使用 - AWS SDK for Java 1.x

AWS SDK for Java (v1) の近日発表 end-of-support しました。AWS SDK for Java v2 に移行することをお勧めします。日付、その他の詳細、移行方法については、リンク先の発表内容を参照してください。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon EC2 の Elastic IP アドレスの使用

警告

2022 年 8 月 15 日に、EC2-Classic の提供を終了しhます。EC2-Classic は、VPC への移行をお勧めします。詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイドまたはWindows インスタンス用 Amazon EC2 ユーザーガイドの「EC2-Classic から VPC への移行」を参照してください。ブログ記事「EC2-Classic-Classic Networking is Retiring – Here's How to Prepare」も参照してください。

Elastic IP アドレスの割り当て

Elastic IP アドレスを使用するには、まずアカウントに 1 つ割り当ててから、それをインスタンスまたはネットワークインターフェイスに関連付けます。

Elastic IP アドレスを割り当てるには、ネットワークタイプ (Classic EC2 または VPC) が含まれる AllocateAddressRequest オブジェクトを使用して AmazonEC2Client の allocateAddress メソッドを呼び出します。

返される AllocateAddressResult には、AssociateAddressRequest のアロケーション ID とインスタンス ID を AmazonEC2Client の associateAddress メソッドに渡すことで、アドレスをインスタンスに関連付けるために使用できるアロケーション ID が含まれます。

インポート

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;

Code

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);

完全な例をご覧ください。

Elastic IP アドレスの説明

アカウントに割り当てられた Elastic IP アドレスを一覧表示するには AmazonEC2Client の describeAddresses メソッドを呼び出します。返される DescribeAddressesResult を使用して、アカウントの Elastic 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;

Code

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()); }

完全な例をご覧ください。

Elastic IP アドレスを解放する

Elastic IP アドレスを解放するには、AmazonEC2Client の releaseAddress メソッドを呼び出して、解放する Elastic IP アドレスのアロケーション ID を含む ReleaseAddressRequest を渡します。

インポート

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;

Code

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

Elastic IP アドレスを解放すると、その IP アドレスは AWS IP アドレスプールに解放され、後で使用できないことがあります。DNS レコード、およびそのアドレスと通信するすべてのサーバーまたはデバイスを更新してください。既に解放済みの Elastic IP アドレスを解放しようとした場合に、そのアドレスが既に別の AWS アカウント に割り当てられていると AuthFailure エラーが発生します。

EC2-Classic またはデフォルト VPC を使用している場合、Elastic IP アドレスを解放すると関連付けられているすべてのインスタンスからの関連付けが自動的に解除されます。Elastic IP アドレスを開放せずに関連付けを解除するには、AmazonEC2Client の disassociateAddress メソッドを使用します。

デフォルト以外の VPC を使用している場合は、開放しようとする前に必ず disassociateAddress を使用して Elastic IP アドレスの関連付けを解除する必要があります。そうでない場合は、Amazon EC2 からエラー (InvalidIPAddress.InUse) が返ります。

完全な例をご覧ください。

詳細情報