Amazon ec2インスタンスへ固定IPを割り当てる
AWSのインスタンスは、Stop/StartするとIPアドレスが変わってしまう。そういう仕様、というのが前提ではあるが、これをどーしても避けたい事情というのも存在するだろう。そんな時には、固定IP(EIP→Elastic IP)を割り当てることもできる。
ちなみにElastic IPはひとつのAmazonアカウントに対して5つまで無償で提供されている。5つ以上必要になったら別途手続きと費用が発生する。(確かそのはず…)あと注意したいのが、インスタンスの起動中は追加料金は発生しないが、stopしておいてIPだけ保有している状態だと課金されてしまう、という点。
なお、ここで割り当てているのはグローバルIPとなる。ローカルIP(Private IP)は固定できない(現状そのはず)。 そのためStop/Startすると、EIPを付与したグローバルIPは変わらないが、Private IPは変わってしまう(確かそのはず…しつこいって)。
以下コマンドを実行すると、割り当て済みのElastic IPが表示される。
$ ec2-describe-addreses
ADDRESS xxx.xxx.xxx.xxx i-38enak92
新たにElastic IPを発行(?)する。
$ ec2-allocate-address
ADDRESS yyy.yyy.yyy.yyy
発行されたIPを、対象とするインスタンスに割り当てる。
$ ec2-associate-address -i c6e7df5 yyy.yyy.yyy.yyy
この時点でec2-describe-addresessすると、すぐに反映されているはず。ただし内部処理が終わってec2-describe-instancesで反映されるまで数分ほどかかる。
それからec2-release-address yyy.yyy.yyy.yyy でIPの返却が可能。意図せずec2-allocate-addressコマンドを発行してしまったらec2-release-addressしよう…。
追記
VPC(Virtual Private Cloud)インスタンスへのEIP割り当てはちょっと変わる。アドレス発行時には”-d vpc”オプションを追加、割り当て時にはIPではなくallocation-idを指定する。
また、VPCのインスタンスには固定Private IPを付与することが可能。
$ ec2-allocate-address -d vpc
$ ec2-associate-address -i c6e7df5 -a eipalloc-e7ucc6sp < -- allocation-id
VPCはこれ以外のコマンドでもオプションが全然違ってたりするので注意。(先にドキュメントをちゃんと読めばいい話なんだけど…つい先に手を動かしてしまうので)
更に追記
ec2で利用するIPアドレスについては、以下の記事も心に留めておきたい。
Amazon EC2でサーバを起動したらアタックされた!
「クラウドサービス(IaaS等)では、別のユーザが以前に利用していたIPアドレスを受け継いで使うわけですから」
・・・確かにね。