AWS CLI を使用して Amazon Route 53 にシンプルなリソースレコードセットを作成するにはどうすればよいですか?

最終更新日: 2021 年 1 月 8 日

AWS コマンドラインインターフェイス (AWS CLI) を使用して Amazon Route 53 でシンプルなリソースレコードセットを作成するにはどうすればよいですか?

簡単な説明

Route 53 API への ChangeResourceRecordSets リクエストを使用して、リソースレコードセットを作成 、削除、または変更 (upsert) できます。

解決方法

注: AWS CLI コマンドの実行時にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください

ChangeResourceRecordSets リクエストを作成する

ChangeResourceRecordSets リクエストを使用すると、次のアクションを実行できます。

  • CREATE は、ホストゾーンに指定された値を持つレコードセットを作成します
  • DELETE は、ホストゾーン内の指定された値を持つレコードセットを削除します
  • UPSERT は、指定された値を持つ新しいレコードセットを作成するか、そのレコードセットがすでに存在する場合は、指定された値でレコードセットを更新します

次のサンプルの JSON ファイル (sample.json) を変更して、シンプルな A レコードセットを作成、削除、または変更します。リクエストの本文には、変更バッチと呼ばれる変更アイテムのリストが含まれます。

{
            "Comment": "CREATE/DELETE/UPSERT a record ",
            "Changes": [{
            "Action": "CREATE",
                        "ResourceRecordSet": {
                                    "Name": "a.example.com",
                                    "Type": "A",
                                    "TTL": 300,
                                 "ResourceRecords": [{ "Value": "4.4.4.4"}]
}}]
}

change-resource-record-sets コマンドを用いて Route 53 API を使用して、ホストゾーンでドメインのリソースレコードセットを作成します。sample.json ファイルは、レコード作成の値を指定します。

$ aws route53 change-resource-record-sets --hosted-zone-id ZXXXXXXXXXX --change-batch file://sample.json

JSON ファイルにエラーがない限り、PENDING というステータスは一意の ID で返されます。

$ aws route53 change-resource-record-sets --hosted-zone-id ZXXXXXXXXXXX --change-batch file://sample.json
{
    "ChangeInfo": {
        "Status": "PENDING", 
        "Comment": "optional comment about the changes in this change batch request", 
        "SubmittedAt": "2018-07-10T19:39:37.757Z", 
        "Id": "/change/C3QYC83OA0KX5K"
    }
}

get-change API 呼び出しを、change-resource-record-sets の応答の Id 値とともに使用して、変更のステータスを確認します。

  • PENDING は、このリクエストの変更がまだすべての Route 53 DNS サーバーに伝達されていないことを示します。これは、すべての変更バッチリクエストの初期ステータスです。
  • INSYNC は、変更がすべての Route 53 DNS サーバーに伝達されることを示します。

伝達前:

aws route53  get-change --id /change/C3QYC83OA0KX5K
{
    "ChangeInfo": {
        "Status": "PENDING", 
        "Comment": "optional comment about the changes in this change batch request", 
        "SubmittedAt": "2018-07-10T19:39:37.757Z", 
        "Id": "/change/C3QYC83OA0KX5K"
    }
}

伝達後:

$ aws route53  get-change --id /change/C3QYC83OA0KX5K
{
    "ChangeInfo": {
        "Status": "INSYNC", 
        "Comment": "optional comment about the changes in this change batch request", 
        "SubmittedAt": "2018-07-10T19:39:37.757Z", 
        "Id": "/change/C3QYC83OA0KX5K"
    }

同時リクエストを作成する

同時リクエストごとに個別の Action キーを使用する必要があります。例えば、A レコードと MX レコードを 1 つのリクエストで作成することはできません。代わりに、次の形式を使用して、同じドメイン名に対して 2 つのレコードセットを作成する必要があります。

{
                "Comment": "CREATE/DELETE/UPDATE",
                 "Changes": [ {
                             "Action": "CREATE",
                            "ResourceRecordSet": {
                                "Name": "a.example.com",
                                    "Type": "A",
                                     "TTL": 300,
                                  "ResourceRecords": [{"Value": "5.5.5.5"}]
                            }},
{
                            "Action": "CREATE",
                            "ResourceRecordSet": {
                                 "Name": "a.example.com",
                                 "Type": "MX",
                                  "TTL": 300,
                                  "ResourceRecords": [{"Value": "10 example.com"}]
                           }}
]
}