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

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:
- den Domänennamen mit dem Apprunner-Dienst verknüpfen
- speichern Sie die erforderlichen Domänenvalidierungseinträge in Ihrer DNS-gehosteten Zone
- einen Alias-Datensatz erstellen, der auf den eigentlichen Apprunner-Dienst verweist
- 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.
Unsere Ideen
Weitere Blogs
Contact



