固定IPv4をどのRoute53のレコードに設定しているか調べる方法

AWS

はじめに

「EC2に固定IPが設定されているけど、この固定IPはいったいどのドメインと紐づいているんだ…?」といったことはありますでしょうか?

EC2の整理をしている中で、ロードバランサの背後にあるEC2インスタンスはターゲットグループに登録されているので、どのドメインと紐づいているのかすぐ把握ができたのですが、固定IPを発行してそれを直接Aレコードに設定しているEC2インスタンスがいったいどのドメインと紐づいているのか、EC2コンソールから分からなかったため、確認できるパワーシェルを作成しました。

スクリプト作成

早速のスクリプトです。ps1拡張子で保存して、PowerShellで実行してやれば、アカウントに登録されているホストゾーンを順番に検索し、どのホストゾーンのどのレコードに、指定したIPアドレスが登録されているか出力してくれます。Windows以外の場合は、以下のスクリプトをベースにOSに沿ったものを作成すれば同様のことができると思います。

# 指定するIPアドレス
$targetIpAddress = "<ipアドレス>"

# 全てのホストゾーンIDを取得
$hostedZoneIds = aws route53 list-hosted-zones --query 'HostedZones[*].Id' --output text

# ホストゾーンIDを改行およびスペースで分割して配列にする
$hostedZoneIdArray = $hostedZoneIds -split "\s+"

# 各ホストゾーンをチェック
foreach ($zoneId in $hostedZoneIdArray) {
    Write-Output "Checking hosted zone: $zoneId"

    # 各ホストゾーンのレコードセットを取得
    $recordSets = aws route53 list-resource-record-sets --hosted-zone-id $zoneId --query "ResourceRecordSets[?ResourceRecords[?Value=='$targetIpAddress']]" --output json | ConvertFrom-Json
    
    # レコードセットが存在する場合に出力
    if ($recordSets.Count -gt 0) {
        Write-Output "Found IP address $targetIpAddress in hosted zone $zoneId"
        $recordSets | Format-Table -Property Name, Type
    } else {
        Write-Output "No matching records found in hosted zone: $zoneId"
    }
    
    Write-Output "`n"
}

実行結果

ホストゾーンで当該レコードが見つかった場合

以下のように、ドメイン名とレコードタイプがテーブル状に出力されます。

ホストゾーンで当該レコードが見つからなかった場合

以下のように、見つからなかった旨が出力されます。

おわりに

EC2の整理をしていて、固定IPを適用しているインスタンスに対して割り当てられているドメインをたくさんあるホストゾーンから探すのが大変だったので、スクリプトで探せるようにしました。特に今回の場合、前任者が既に不在で、IaCも整っていない状態でのスタートだったので、整理の一環としてこのようなことを実施しました。ここまで読んでいただき、ありがとうございました。

コメント

タイトルとURLをコピーしました