使用 Route 53 CLI 删除记录

问题描述 投票:0回答:2

我在使用 AWS CLI 删除 Route 53 记录时遇到问题。我有数百个域的列表,每个域都需要删除两条“A”记录。我想使用 CLI 来执行此操作以节省时间,但我无法使该功能正常工作。

例如,假设我有以下域,我想删除两条“A”记录:

我在这里使用 boto3,但它与我无法使用的 AWS CLI API 相同 (https://docs.aws.amazon.com/cli/latest/reference/route53/change-resource-record -sets.html)。我的问题出在这个 api 调用的 json 过滤器中的某个地方:

        HostedZoneId='ABC123DEF456',
        ChangeBatch={
            'Comment': 'deleteing A records for domains',
            'Changes': [
                {
                    'Action': 'DELETE',
                    'ResourceRecordSet': {
                        'Name': 'example.com',
                        'Type': 'A',
                        'Region': 'us-east-1',
                        'ResourceRecords': [
                            {
                                "Value": "1.2.3.4"
                            }
                        ],
                        'AliasTarget': {
                            'HostedZoneId': 'ABC123DEF456',
                            'DNSName': 'example.com',
                            'EvaluateTargetHealth': False
                        }
                    }
                }
            ]
        }

我收到的错误是:

InvalidInput: An error occurred (InvalidInput) when calling the ChangeResourceRecordSets operation: Invalid request: Expected exactly one of [AliasTarget, all of [TTL, and ResourceRecords], or TrafficPolicyInstanceId], but found more than one in Change with [Action=DELETE, Name=example.com, Type=A, SetIdentifier=null]
json dns boto3 aws-cli amazon-route53
2个回答
2
投票

我认为A类型的简单记录和别名A类型的简单记录之间存在一些混淆。也就是说,简单的别名记录不应该没有

ResourceRecords

要检查它们在您的案例中的描述方式,您可以使用以下命令:

aws route53 list-resource-record-sets --hosted-zone-id <your-zone-id>

上述命令的输出应该有助于构建您的

DELETE

以下是我的route53的输出示例:

简单记录

        {
            "Name": "<simple-a.example.com.>",
            "Type": "A",
            "TTL": 300,
            "ResourceRecords": [
                {
                    "Value": "1.2.3.4"
                }
            ]
        }

带别名的简单记录

        {
            "Name": "<simple-alias.example.com.>",
            "Type": "A",
            "AliasTarget": {
                "HostedZoneId": "Z06990762X86XLR2ZGTK4",
                "DNSName": "<example>.",
                "EvaluateTargetHealth": true
            }
        },


0
投票

我能够编写一些简单的 shell 脚本和 JQ 来删除大量记录。当然,必须遵循每种类型的正确格式(NS|A|ALIAS|CNAME 等)。请参阅https://release.com/blog/how-to-delete-hundreds-or-thousands-of-route53-dns-entries

© www.soinside.com 2019 - 2024. All rights reserved.