[Amazon-web-services] RRSet типа CNAME с именем DNS foo.com. не разрешается на вершине в зоне bar.com


Answers

  1. Создайте ведро S3, называемое bar.com . (Имя должно быть таким же, как домен, для которого вы хотите перенаправить, чтобы это работало!)
  2. В bar.com S3 Bucket перейдите в меню « Properties > « Static Website Hosting , выберите « Redirect all requests to another host name и введите foo.com в текстовое поле.
  3. Вернитесь в Route 53, в свою Hosted Zone для bar.com , нажмите Create Record Set . Выберите тип A - IPv4 address для типа. Нажмите « Yes для Alias . Щелкните текстовое поле для Alias Target . bar.com должен быть указан в разделе « bar.com -- S3 Website Endpoints -- . Сохраните запись. Подождите несколько минут, и вы должны настроить перенаправление для перенаправления запросов с bar.com на foo.com.

Вы можете использовать этот же метод для перенаправления голого домена в субдомен (например, www). Я использую это в случаях, когда www.foo.com должен быть CNAME, поэтому я перенаправляю с foo.com на www.foo.com с помощью этого же метода. Если foo.com является записью A, вы можете использовать эту технику для перенаправления с www.foo.com на foo.com.

ПРИМЕЧАНИЕ. Этот метод будет передаваться с полным путем. т.е. http://bar.com/test перейдет на сайт http://foo.com/test .

Question

У меня есть foo.com и bar.com . Я управляю обоими в Route53. foo.com размещает мой сайт, и я хотел бы направлять трафик с bar.com на foo.com . Я попытался создать запись CNAME для bar.com указывающую на foo.com , но я получил сообщение об ошибке:

RRSet of type CNAME with DNS name foo.com. is not permitted at apex in zone bar.com.

Почему это не работает, и что я могу сделать вместо этого?




tldr; Вы должны передать полное доменное имя в качестве имени ResourceRecordSet.

У меня была эта же проблема, используя этот оператор c # snip:

 private static void RegisterHostWithDns(IAmazonRoute53 ec2,SynoviaImage image)
        {
            var changeBatch = new ChangeBatch();
            var rRs = new ResourceRecordSet(image.Name, RRType.CNAME) {TTL=60,ResourceRecords = new List<ResourceRecord>() { new ResourceRecord(image.PublicDns)} };
            var change = new Change(ChangeAction.UPSERT, rRs);
            changeBatch.Changes.Add(change);
            var request = new ChangeResourceRecordSetsRequest(ConfigurationManager.AppSettings["DnsZoneId"], changeBatch);
            var response = ec2.ChangeResourceRecordSets(request);
            Console.WriteLine("Updated CNAME For {0} setting {1}",image.Name,image.PublicDns);
        }

В этом случае image.Name == "Listener"

Как только я изменил его на:

 private static void RegisterHostWithDns(IAmazonRoute53 ec2,SynoviaImage image)
        {
            var changeBatch = new ChangeBatch();
            var rRs = new ResourceRecordSet(string.Format("{0}.{1}",image.Name, "testing.foo.bar.com"), RRType.CNAME) {TTL=60,ResourceRecords = new List<ResourceRecord>() { new ResourceRecord(image.PublicDns)} };
            var change = new Change(ChangeAction.UPSERT, rRs);
            changeBatch.Changes.Add(change);
            var request = new ChangeResourceRecordSetsRequest(ConfigurationManager.AppSettings["DnsZoneId"], changeBatch);
            var response = ec2.ChangeResourceRecordSets(request);
            Console.WriteLine("Updated CNAME For {0} setting {1}",image.Name,image.PublicDns);
        }

теперь значение передается: «Listener.fully.qualified.com»

Он работает сейчас.