Last Modified:
EC2インスタンス起動時および停止時に自動でDNS設定を行なう簡単な方法 #AWS
EC2インスタンス起動時に自動的にRoute53にレコードを設定したい。それも簡単に。 まぁそんな簡単な方法は無いわけですが、無いなら作れということで作りました。
EC2インスタンス起動時に自動でDNS設定を行う - Qiita
まぁ↑そういうことなんですが、
- CloudFormationでもキレイにやりたい
- 停止時にはキレイに後始末して欲しい
- 適用手順をもっと簡単にしたい
という不満があった。
解決
解説
- AMIがAmazon Linux(CentOS6)なので、他の環境だともう少し準備が必要だと思う(AWS CLIのインストールとか)。
AWS::Route53::RecordSetGroup
とそっくりに書けるようにしておいた。- PublicIpを取得している部分は、特定のキーワードリテラルを置換する方法も考えたけど、 色々できた方が面白そうだと思ってシェルスクリプトを埋め込めるように工夫した。
- 起動時だけなら色々やり方はあるんだけど、停止時にも動作して欲しいのでサービスとして登録している。
知見
/var/lock/subsys
のことを初めて知った。 Linuxでシャットダウン時に想定した処理が実行されない - Qiita- いくつかのインスタンスでDDNSしたかったので、最初はCloudFormationテンプレートの
Output
でスクリプトの内容を丸ごとExport
して、 適用したいインスタンスのUserData
でwrite_files
しようと試みた。 ところがExport
は1024バイト制限があって、なかなか厳しかった。 結局できたものはバカでかいCode Golfだったので却下した。