Blog

Kontoübergreifende DNS-Verwaltung auf AWS

Joris Conijn

Joris Conijn

Aktualisiert Oktober 15, 2025
3 Minuten

Ich habe vor kurzem einige Blogbeiträge darüber verfasst, wie Sie eine Anwendung auf AWS erstellen, bereitstellen und hosten können. In diesem Blogbeitrag geht es um den Umgang mit DNS-Einträgen bei einer kontoübergreifenden Einrichtung. Sie denken vielleicht, dass AWS Sie abdeckt, aber die traurige Realität ist, dass sie es nicht tun. (wenn es um kontoübergreifende Anwendungsfälle geht.)

Zum Beispiel, wenn Sie eine Domain namens example.com haben. Dann müssen Sie die gehostete Zone in einem AWS-Konto erstellen. Im Kontext dieses Kontos können Sie dann die Datensätze über Infrastructure as Code verwalten. Das funktioniert so lange, bis Sie mehr als 1 AWS-Konto verwenden.

Das Problem

Da die gehostete Zone von Route53 innerhalb eines bestimmten Kontos lebt. Sie können der gehosteten Zone keine Datensätze von einem anderen Konto aus hinzufügen. Es gibt also 3 Möglichkeiten, wie Sie dieses Problem lösen können:

  • Option 1: Verwalten Sie Ihre DNS-Einträge von Hand.
  • Option 2: Erstellen Sie eine von Route 53 gehostete Zone in jedem AWS-Konto. Damit dies funktioniert, benötigen Sie ganz unterschiedliche Domains oder Subdomains.
  • Option 3: Verwenden Sie den cfn-cross-account-dns-provider

Option 1: Ich möchte die Infrastruktur als Code verwenden. Dies ist also keine Option. Und für Option 2 benötigen Sie entweder eine andere Domain. Oder Sie müssen Subdomains verwenden. Die Verwendung einer anderen Domäne ist ein bisschen übertrieben. Wenn Sie also Subdomains verwenden, benötigen Sie für jedes Konto eine gehostete Zone. Eine einzige gehostete Zone kostet Sie $ 6 pro Jahr. Angenommen, Sie haben 3 Workloads und 4 Umgebungen pro Workload. Dann zahlen Sie $ 72 pro Jahr nur für die gehostete Zone. Das mag für Ihren Anwendungsfall eine Option sein, aber nicht für meine persönlichen Lieblingsprojekte.

Über eine Lösung nachdenken

Das bringt uns also zu Option 3. Kurz gesagt ist dies meine Lösung für Option 2.

Meine Lösung

Ich habe ein einzelnes AWS-Konto erstellt, das ich für die DNS-Verwaltung verwende. Alle Domänen, die ich besitze, befinden sich in diesem Konto und verwenden Route53. Außerdem habe ich den cfn-cross-account-dns-provider in diesem Konto bereitgestellt. Dieser Provider verfügt über ein SNS-Thema und alle Mitgliedskonten dürfen in diesem Thema veröffentlichen.

Dns-Datensatz über den Zaun werfen

Jetzt können Sie die Ressourcendefinition in CloudFormation verwenden, um DNS-Einträge zu erstellen. Es wird das SNS-Thema verwenden, um den Custom Cross Account DNS Provider in dem AWS-Konto aufzurufen, das die gehosteten Zonen enthält. Der Provider verwaltet die Einträge für Sie und benachrichtigt CloudFormation über das Endergebnis.

DNSRecord:
  Type: Custom::CrossAccountDNS
  Properties:
    ServiceToken: !Sub arn:aws:sns:${AWS::Region}:${HostedZoneAccountId}:binxio-cfn-cross-account-dns-provider
    HostedZoneId: !Ref HostedZoneId
    Name: mysubdomain.example.com
    Type: CNAME
    Value: my-value-from-cloudfront-for-example.amazon.com

Cool, jetzt, da wir DNS-Einträge kontoübergreifend erstellen können, können Sie noch mehr lustige Sachen machen. Sie benötigen zum Beispiel auch DNS-Einträge für Zertifikate, die Sie über ACM anfordern.

Wenn Sie CloudFront verwenden, muss das Zertifikat in der Region us-east-1 existieren. Dies wird zu einem Problem, wenn Ihre Anwendung in einer anderen Region liegt. Zu diesem Zweck hat Mark van Holsteijn den cfn-certificate-provider erstellt. Mit diesem Anbieter können Sie ein Zertifikat in der Region us-east-1 anfordern. Während sich Ihr Stack in der Region eu-west-1 befindet. Wenn Sie dies mit dem cfn-cross-account-dns-provider kombinieren, werden Ihre Zertifikate automatisch ausgestellt.

Fazit

Sie können Zertifikate und DNS-Einträge konto- und regionenübergreifend verwalten. Alles, was Sie brauchen, ist der cfn-certificate-provider und der cfn-cross-account-dns-provider. Damit entfallen alle manuellen Schritte bei der Bereitstellung, was sie berechenbarer und zuverlässiger macht.

Foto von BOA.vision

Verfasst von

Joris Conijn

Joris is the AWS Practise CTO of the Xebia Cloud service line and has been working with the AWS cloud since 2009 and focussing on building event-driven architectures. While working with the cloud from (almost) the start, he has seen most of the services being launched. Joris strongly believes in automation and infrastructure as code and is open to learning new things and experimenting with them because that is the way to learn and grow.

Contact

Let’s discuss how we can support your journey.