3

Je souhaite créer une zone hébergée Route53 pour un sous-domaine et un enregistrement NS vers un domaine parent.Comment créer une zone hébergée de sous-domaine à l'aide de Cloud Formation

Disons que j'ai:

example.com 

et je veux une zone hébergée pour un sous-domaine:

build.example.com 

création Zone Hosted fonctionne:

ClusterHostedZone: 
    Type: "AWS::Route53::HostedZone" 
    Properties: 
    Name: !Ref DomainName 
    HostedZoneConfig: 
     Comment: Managed by Cloud Formation 
    HostedZoneTags: 
     - Key: KubernetesCluster 
     Value: !Ref KubernetesCluster 

responsabilité Déléguer pour le sous-domaine don 't:

ParentHostedZoneClusterRecord: 
    Type: "AWS::Route53::RecordSet" 
    Properties: 
    Name: !Ref DomainName 
    Comment: Managed by Cloud Formation 
    HostedZoneId: !Ref ParentHostedZoneID 
    TTL: 30 
    Type: NS 
    ResourceRecords: !GetAtt ClusterHostedZone.NameServers 

Ce n'est pas mis en œuvre et je ne sais pas comment obtenir ces informations:

ResourceRecords: !GetAtt ClusterHostedZone.NameServers 

Est-ce simple fonctionnalité manque juste dans la formation Cloud?

+0

RecordSetGroup serait-il une solution? http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordsetgroup.html – masterforker

+0

Désolé, mais je ne vois pas comment cela pourrait aider. Pourriez-vous élaborer? –

+0

ai-je raison de comprendre que vous voulez associer un tas d'alias sous votre zone hébergée? – masterforker

Répondre

2

Je confirme avec un employé AWS, il n'a pas été possible autour de Janvier 2017.

Même avec un lambda personnalisé it was not possible until April en raison de:

Dans AWS CloudFormation, vous ne pouvez pas créer des enregistrements de type NS ou SOA.

Maintenant, il ressemble à la behavior is different:

Plus précisément, vous ne pouvez pas créer ou supprimer NS ou des enregistrements SOA pour le domaine racine de votre zone hébergée, mais vous pouvez les créer des sous-domaines à déléguer.

Obtenir les serveurs de noms à partir d'une zone hébergée est [maintenant possible], je l'ai testé. (http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-hostedzone.html#w2ab2c21c10d825c11)

La seule limite je n'étais pas en mesure de surmonter était les relations avec les zones hébergées multicomptes/modifications, mais cela devrait être possible avec suffisamment de magie CF/Lambda.

+0

Ceci est faux. Le lien ci-dessus ne dit PAS que vous ne pouvez pas créer d'enregistrements NS, il indique spécifiquement que vous pouvez les créer pour des sous-domaines: "Dans AWS CloudFormation, vous ne pouvez pas modifier les enregistrements NS et SOA pour une zone hébergée créée automatiquement par Amazon Route 53. Plus précisément vous ne pouvez pas créer ou supprimer des enregistrements NS ou SOA pour le domaine racine de votre zone hébergée, mais vous pouvez les créer pour les sous-domaines à déléguer.Par exemple, pour la zone hébergée mydomain.net, vous ne pouvez pas créer d'enregistrement NS pour mydomain.net mais vous pouvez créer un enregistrement NS pour nnnn.mydomain.net pour la délégation. " –

+0

Si vous pouviez fournir un exemple de pile, cela serait apprécié –

+0

Jetez un oeil à cette pile: https://github.com/ConradIrwin/aws-name-server/blob/master/cloudformation-template.json –

0

Pour ajouter une zone hébergée pour un sous-domaine, vous devez pouvoir la créer de la même manière que la zone hébergée existante décrite, en remplaçant simplement la propriété Name par le sous-domaine. Cependant, en fonction de votre question, il semble que vous essayez d'ajouter un ensemble d'enregistrements pour un sous-domaine (donc build.[DomainName] résout votre cluster), et non une zone hébergée distincte.

Pour ajouter un jeu d'enregistrements pour un sous-domaine, vous voulez spécifier 'build.[DomainName]' comme nom de votre RecordSet de sous-domaine, et d'utiliser un A record spécifiant l'adresse IP cible pour votre sous-domaine (ou un CNAME spécifiant le nom de domaine « canonique ») , pas NS record:

ParentHostedZoneClusterRecord: 
    Type: "AWS::Route53::RecordSet" 
    Properties: 
    Name: 
     Fn::Join: [".", ["build", !Ref DomainName]] 
    Comment: Managed by Cloud Formation 
    HostedZoneId: !Ref ParentHostedZoneID 
    TTL: 30 
    Type: A 
    ResourceRecords: [!Ref KubernetesClusterIp] 
+0

Je veux ajouter l'enregistrement 'NS' au domaine parent, la création de la zone hébergée est simple, c'est le parent délégation-à-enfant que je ne peux pas faire avec CF –

2

Cela fonctionne pour mon, peut-être votre modèle ne fonctionne pas parce que vous ne spécifiez pas DependsOn et les ressources ne sont pas créées dans l'ordre.

stagingHostedZone: 
    Type: 'AWS::Route53::HostedZone' 
    Properties: 
     HostedZoneConfig: 
      Comment: Hosted zone for staging environment 
     Name: staging.example.com 

nsRootHostedZoneRecordSet: 
    Type: 'AWS::Route53::RecordSet' 
    Properties: 
     HostedZoneId: Z25********* 
     Name: staging.example.com. 
     Type: NS 
     TTL: '900' 
     ResourceRecords: !GetAtt stagingHostedZone.NameServers 
    DependsOn: 
     stagingHostedZone 
+0

ressemblent à des fonctionnalités ajoutées AWS depuis Janvier –