Route 53のTXTレコードに複数値を登録できますか?への対処法

2020.12.17

こんにちは、コンサル部@大阪オフィスのTodaです。

Route53のTXTレコードにはAmazon SESのSPFレコードや、Googleの認証タグなど指定する事がございます。 今回TXTレコードに複数の値を登録する場合の方法についてお知らせします。

やりたいこと

Route53の[指定レコード名]にTXTレコードで[値]を複数登録する。

失敗するケース

対応で失敗するケースとして既に[同じレコード名]でTXTレコードが存在するがございます。
上記の状態でTXTレコードを追加するとエラー表示「(InvalidChangeBatch 400: Tried to create resource record set [name='[レコード名]', type='TXT'] but it already exists)」が表示されて登録ができません。

失敗するケース

解決する方法

解決策としては既存のレコードに改行をして複数行入力する方法で解決ができます。
この場合1点の注意が必要です。

  • レコード(値)を識別するためダブルクォーテーション(")で囲む
  • レコード(値)は1行毎に改行して入力する

※プログラムを触っているとカンマで区切りたくなるのですが上記ではNGです。

下記入力例でございます。
TXTレコードの値は3点入力してみます。

  • v=spf1 include:amazonses.com ~all
  • token-x123456789x234
  • ABCDEFGHIJK

TXTレコード入力例

登録をして一覧画面に戻ると下記のように表示されます。

TXTレコード一覧表示

nslookupにてレコードを確認

Route53では1つにまとめて入力しているためDNSではどのように参照されるのか気になります。
コマンドを利用してTXTレコードがどのように表示されるかを確認します。

% nslookup -type=TXT -timeout=5 [ドメインレコード名] 
or
% nslookup -type=TXT -timeout=5 [ドメインレコード名] [AWSのNSホスト名]

Server:		ns-XXX.awsdns-XXX.com
Address:	XXX.XXX.XXX.XXX#53

[ドメインレコード名]	text = "ABCDEFGHIJK"
[ドメインレコード名]	text = "token-x123456789x234"
[ドメインレコード名]	text = "v=spf1 include:amazonses.com ~all"

上記、3レコードが表示されることを確認いたしました。

さいごに

今回はRoute53のTXTレコードに複数値を指定してみました。
少しでもお客様の作りたい物の参考になればと考えております。