やりたいこと
Lambda関数にてRoute 53に登録してあるドメインのAレコードを変更する。
環境情報
- Python 3.2
やり方
変更したい
- Hosted zone ID
- Record name
を確認し、IPアドレスをValue欄に入力を行い実行する。
import boto3 AWS_HOST_ZONE_ID="XX" AWS_RECORD_NAME="XX" r53 = boto3.client('route53') def lambda_handler(event, context): response = r53.change_resource_record_sets( HostedZoneId=AWS_HOST_ZONE_ID, ChangeBatch={ 'Changes': [ { 'Action': 'UPSERT', 'ResourceRecordSet': { 'Name': AWS_RECORD_NAME, 'Type': 'A', 'TTL': 300, 'ResourceRecords': [ { 'Value': "X.X.X.X" }, ], } }, ] } )
Lambdaより正常に実行が行われると"Execution results”にResponseがnull
となった上で正常にIPアドレス変更がされている。
以下、補足です。
補足
Lambda関数からRoute 53の操作を行うため、事前にLambda側に権限付与を行う必要があります。
注意が必要な点として、同プログラムを動かすとRoute 53上の設定は即座に反映されますが、実機上はキャッシュによって古いIPアドレスが名前解決される可能性があります。
デフォルトではキャッシュの時間が300秒(5分)となっているので、要件として許容できない場合はRoute 53側で設定を短くして対応します。
このキャッシュの残り時間はdigコマンドのANSWER SECTIONで確認できます。
# dig hogehoge ; <<>> DiG 9.16.42-RH <<>> hogehoge ... ;; ANSWER SECTION: hogehoge. 293 IN A X.X.X.X ...
以上、ご参考ください。