kpollock
kpollock

Reputation: 3989

Error on using aws change-resource-record-sets to add an alias

I am trying to use aws change-resource-record-sets to add an alias. The idea is to allow access to a Cloudfront distribution via URL on our domain (e.g. mydomainname.mycompany.co.uk rather than mydomainname.cloudfront.net where mydomainname=something like d4dzc6m38sq0mk)

After working through various other JSON errors, which I solved, I am still getting a problem.

A client error (InvalidChangeBatch) occurred: RRSet with DNS name 
mydomainname.cloudfront.net. is not permitted in zone mycompany.co.uk.

What have I got wrong?

JSON:

{
  "Comment": "Recordset for mydomainname",
  "Changes": [
    {
      "Action": "CREATE",
      "ResourceRecordSet": {
        "Name": "mydomainname",
        "Type": "A",
        "AliasTarget": {
          "HostedZoneId": "Z2FDTNDATAQYW2",
          "DNSName": "mydomainname.cloudfront.net.",
          "EvaluateTargetHealth": false
        }
      }
    }
  ]
}

EDITED to clarify the HostedZoneID.

Upvotes: 6

Views: 5712

Answers (3)

jasondeegan
jasondeegan

Reputation: 139

You have to add the 'Change' => node.

            'Comment' => 'Created Programmatically',
            'Changes' => [
                'Change'=>[
                    'Action' => 'CREATE',
                    'ResourceRecordSet' => [
                        'Name' => $domainName.'.',
                        'Type' => 'A',
                        'AliasTarget' => [
                            'HostedZoneId' => '*ZoneID*',
                            'DNSName' => '*DNSName*',
                            'EvaluateTargetHealth' => false
                        ]
                    ]
                ],

Upvotes: 0

Stew-au
Stew-au

Reputation: 462

If "The idea is to allow access to a Cloudfront distribution via URL on our domain..." then try a CNAME instead of an alias...

aws route53 change-resource-record-sets --hosted-zone-id Z3A********TC8 --change-batch file://~/tmp/awsroute53recordset.json

awsroute53recordset.json

{
  "Comment": "Allow access to a Cloudfront distribution via URL on our domain",
  "Changes": [
    {
      "Action": "CREATE",
      "ResourceRecordSet": {
        "Name": "cdn.mycompany.co.uk",
        "Type": "CNAME",
        "TTL": 3600,
        "ResourceRecords": [
          {
            "Value": "d4dzc6m38sq0mk.cloudfront.net"
          }
        ]
      }
    }
  ]
}

Upvotes: 2

user2519949
user2519949

Reputation: 41

You need to pass complete name in the NAME parameter. for your example you need to pass this:

"Name" : "mydomainname.cloudfront.net."

Upvotes: 4

Related Questions