Blog

So konfigurieren Sie eine benutzerdefinierte Domäne für einen AWS AppRunner Service mit AWS CloudFormation

Mark van Holsteijn

Mark van Holsteijn

Aktualisiert Oktober 15, 2025
3 Minuten

Wenn Sie eine benutzerdefinierte Domain für einen AppRunner-Dienst mit CloudFormation konfigurieren möchten, werden Sie feststellen, dass die erforderliche Ressource AWS::AppRunner::CustomDomain fehlt. In diesem Blog werde ich eine vorübergehende Lösung für dieses Problem vorstellen, mit der Sie alles mit CloudFormation bereitstellen können.

Konfigurieren der benutzerdefinierten Domäne

Um eine benutzerdefinierte Domäne für einen App Runner-Dienst mit CloudFormation einzurichten, gehen Sie wie folgt vor:

  1. den Domänennamen mit dem Apprunner-Dienst verknüpfen
  2. speichern Sie die erforderlichen Domänenvalidierungseinträge in Ihrer DNS-gehosteten Zone
  3. einen Alias-Datensatz erstellen, der auf den eigentlichen Apprunner-Dienst verweist
  4. fügen Sie den benutzerdefinierten Anbieter hinzu, um den Zauber zu vollbringen!

den benutzerdefinierten Domänennamen zuordnen

Um den benutzerdefinierten Domänennamen mit dem apprunner-Dienst zu verknüpfen, fügen Sie die folgende Ressource zu Ihrer Vorlage hinzu:

  AppRunnerCustomDomain:
    Type: Custom::AppRunnerCustomDomain
    Properties:
      ServiceArn: !Ref App
      DomainName: !Ref DomainName
      ServiceToken: !GetAtt AppRunnerCustomDomainProvider.Arn

Dies ruft AssociateCustomDomain auf, um den Domainnamen mit der AWS App Runner Subdomain-URL Ihres Services zu verknüpfen. Er gibt die Domänenvalidierungsdatensätze als das Attribut ValidationResourceRecords zurück.

die Domänenvalidierungseinträge speichern

Um zu beweisen, dass Sie die Domain besitzen, müssen Sie Ihrer DNS-Zone die Validierungs-Ressourceneinträge wie folgt hinzufügen:

  CertificateValidationRecords:
    Type: AWS::Route53::RecordSetGroup
    Properties:
      Comment: provided by AWS AppRunner
      HostedZoneId: !GetAtt DNSDomain.Id
      RecordSets: !GetAtt AppRunnerCustomDomain.ValidationResourceRecords

Die von AppRunnerCustomDomain zurückgegebenen Domänenvalidierungsdatensätze haben Standardwerte für die Gewichtung und die Lebenszeit. Die ID des Ressourcensatzes wird auf die Service-ID des App-Runners gesetzt.

Die Validierungseinträge ermöglichen es dem AppRunner-Dienst, die erforderlichen Zertifikate für den Domänennamen zu erstellen.

einen Alias-Eintrag für den Apprunner-Dienst erstellen

Um den benutzerdefinierten Domainnamen in die App-Runner-Subdomain aufzulösen, fügen Sie wie folgt einen route53-Aliaseintrag hinzu:

  AppAlias:
    Type: AWS::Route53::RecordSetGroup
    Properties:
      Comment: provided by AWS AppRunner
      HostedZoneId: !GetAtt DNSDomain.Id
      RecordSets:
        - Name: !Ref DomainName
          Type: A
          AliasTarget:
            DNSName: !GetAtt App.ServiceUrl
            HostedZoneId: !FindInMap [AppRunnerHostedZones, !Ref 'AWS::Region', Id]

Um die ID der gehosteten Zone der Subdomain von awsapprunner.com in Ihrer Region zu erhalten, suchen Sie sie in der AWS-Konsole und fügen Sie sie der Karte hinzu. Wir haben nur die Abfrage für eu-west-1 durchgeführt. Wenn es einen API-Aufruf zum Abrufen der gehosteten Zonen gibt, lassen Sie es uns bitte wissen!

Mappings:
  AppRunnerHostedZones:
    eu-west-1:
      Id: Z087551914Z2PCAU0QHMW

den benutzerdefinierten Anbieter hinzufügen

Fügen Sie den benutzerdefinierten Anbieter hinzu, um die entsprechenden Aufrufe zur Verwaltung der Domänennamen von AppRunner-Diensten durchzuführen. Normalerweise verteilen wir benutzerdefinierte Anbieter als einsatzbereite Lambda-Zipdateien, aber da wir die AWS::AppRunner::CustomDomain in Kürze erwarten, haben wir uns entschieden, eine Inline-Version des AppRunnerCustomDomain-Anbieters zu erstellen.

  AppRunnerCustomDomainProvider:
    Type: AWS::Lambda::Function
    Properties:
      Description: Custom::AppDomainCustomDomain provider
      Handler: index.handler
      MemorySize: 128
      Timeout: 900
      Role: !GetAtt 'LambdaRole.Arn'
      Runtime: python3.9
      Code:
        ZipFile: |
        ...

Da es sich um über 200 Zeilen YAML und Python handelt, empfehlen wir Ihnen, die entsprechenden Zeilen aus der CloudFormation-Beispielvorlage zu kopieren. Sie können den Quellcode der AppRunnerCustomDomain auch separat herunterladen und unser Dienstprogramm aws-cfn-update zur Aktualisierung Ihrer Vorlage verwenden.

das ist alles!

Es gibt also nur drei echte Schritte, um eine benutzerdefinierte Domäne mit einem AWS AppRunner Service zu verknüpfen. Der benutzerdefinierte Anbieter ist eine vorübergehende Überbrückungsmaßnahme.

Fazit

Mit diesem benutzerdefinierten Anbieter können Sie mithilfe von AWS CloudFormation benutzerdefinierte Domains mit AWS AppRunner-Services verknüpfen, bis AWS::AppRunner::CustomDomain erscheint. Wenn es hilft, würden wir AWS gerne unsere Dienste anbieten, um sicherzustellen, dass CloudFormation immer auf dem gleichen Stand wie die API ist, bevor neue Funktionen veröffentlicht werden.

Bild von Anne-marie Ridderhof von Pixabay

Verfasst von

Mark van Holsteijn

Mark van Holsteijn is a senior software systems architect at Xebia Cloud-native solutions. He is passionate about removing waste in the software delivery process and keeping things clear and simple.

Contact

Let’s discuss how we can support your journey.