AWSのAutoScalingで立ち上がってきたVPC内のEC2インスタンスに強制的にEIPを付与する
August 27, 2013
前提条件
- グローバルにアクセスできる管理サーバが一台ある
- 対象のVPCにアサイン可能なEIPがある(AssociateされていないEIPがある)
という前提条件が成立していれば、管理サーバで
{% gist 6354555 %}
このようなスクリプトを
*/1 * * * * root /root/set_eip.sh 2> /dev/null
と噛ましておけば、EIPが付与されていないインスタンスを発見し次第
強制的にEIPをアサインすることができます。
2> /dev/null
とかやってるとイスが飛んできそうなものですが
1分毎に実行していると、内部DNS結構頻繁に取りこぼしたりするので闇に葬りました。
成功した場合はADDRESS i-XXXXXXXX eipalloc-XXXXXXXX eipassoc-XXXXXXXX
という内容のメールがとんできて、お、アサインされたのか。と気付けます。
CloudWatchのAutoScaling発動トリガーで何かしらの通知設定をされているかと思うので
まずその通知でAutoScalingの発火を確認し、
上記EIPアサイン通知でインスタンスの起動を確認。のようなこともできます。
【AWS発表】 VPC内のパブリックIPアドレスの取い扱いがより柔軟に
ということを頑張らなくてもそのうち上記Public IPがAutoScalingにも対応すると思う。
ところでEIP
とPublic IP
の違いって何なんですかね?