AWSで自宅を固定ドメインにする
Page content
前提
DDNSの仕組みを利用します。以下を満たすものとします。
- ドメインを既に保有している
- 自宅が動的グローバルIP
しくみ概要
家の端末から、lambdaにアクセスして、グローバルIPを取得します。 再度lambdaにアクセスし、既存のDNSレコードとIPが異なるなら、DNSを更新します。 つまり、lambdaは二度実行されます。
方法
基本的にAWS公式サンプル の通りに実行すれば導入できます。
1. AWS CloudShell から以下を実行します。
git clone https://github.com/awslabs/route53-dynamic-dns-with-lambda.git
pip install -r requirements.txt
2. DNS レコードの更新をテストするために以下パッケージを追加します。
sudo yum update
sudo yum install perl-Digest-SHA
3. 以下コマンドでデプロイします。
cdk bootstrap
cdk deploy
4. 設定を行うために付属のnewrecord.pyを実行します。
python3 newrecord.py
このコマンドは、さきほどのCDKがデプロイされているか確認します。 デプロイされていない場合、以下を返却します。
Dyndns stack not found, ensure the right AWS CLI profile is being used.
スタックは存在するがデプロイメントが完了していない場合は、次が返されます
Stack not yet deployed try again in few minutes
スタックが正常にデプロイされた場合、スクリプトは次のようにプロンプトを表示します。
Hosted zone name, i.e. example.com
ここで、自分の使うHosted zone nameを入力します。 入力したホストゾーンが存在しない場合は、新しいホストゾーンを作成するかどうかを確認するプロンプトが表示されます。
Hosted zone example.com not found.
Do you want to create it? (y/n)
yを入力した場合、次の入力プロンプトが表示されます。
- Hostname (default www. i.e.:
www.example.com
) - TTL (default 60)
プロンプトは続いて、共有鍵の入力を要求します。
以上で、AWS側の操作は完了です。
5. 家の端末から添付のdyndns.sh
をCRONなどで定期実行します。
./dyndns.sh -m set -u https://xyz1234567890xyz.lambda-url.eu-west-1.on.aws/ -h www.example.com -s 入力した共有鍵
https://xyz1234567890xyz.lambda-url.eu-west-1.on.aws/
は、デプロイした
lambdaの関数URLです。
www.example.com
は入力したHostnameで決まるURLです。
このshの詳細は公式ドキュメントを参考ください。
CRON周期は、公式では1分周期になっていたはずです。
以上で対応するURLで自宅のネットワークに接続できます。 実際に導入する際にはポート開放などのルータの設定が 別途必要になるとは思いますが、ここでは触れません。