Ich versuche, eine CloudFormation-Vorlage für ALB zu schreiben, blieb aber an dem Punkt hängen, an dem ich den HTTP-Listener von ALB an HTTPS-Listener weiterleiten möchte. Die Dokumente erwähnen nur die Weiterleitung/Weiterleitung an die Zielgruppe.
Mir ist bekannt, dass dies über die Weboberfläche (AWS Console) möglich ist, die ich vermeiden möchte. Auch das Handling auf dem Server ist für mich ein Nein.
Ist diese ALB-Funktion einfach nicht in CloudFormation implementiert, sondern in Console vorhanden?
Am 19. November 2018 führte Amazon die RedirectConfig für den Listener Elastic Load Balancer ein.
Nachfolgend finden Sie eine Beispielkonfiguration für die übliche HTTP-zu-HTTPS-Weiterleitung. Ersetzen Sie "PublicLoadBalancerBackend" durch Ihr CF-Objekt für den Lastausgleich.
PublicLoadBalancerHttpRedirectListener:
Type: AWS::ElasticLoadBalancingV2::Listener
DependsOn:
- PublicLoadBalancerBackend
Properties:
DefaultActions:
- RedirectConfig:
Host: "#{Host}"
Path: "/#{path}"
Port: 443
Protocol: "HTTPS"
Query: "#{query}"
StatusCode: HTTP_301
Type: redirect
LoadBalancerArn: !Ref 'PublicLoadBalancerBackend'
Port: 80
Protocol: HTTP
Cloudformation-Dokumentation zur RedirectConfig:https://docs.aws.Amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-redirectconfig.html
Cloudformation-Dokumentation zur Listener-Aktion: In der Dokumentation heißt es, dass nur ein gültiger Wert für Type
forward
ist. Wie Sie jedoch im obigen Beispiel sehen können, funktioniert redirect
in diesem Fall.
Für den Moment scheint die einzige Option das Schreiben einer benutzerdefinierten Ressource, um diese zu verwalten. Ein gutes Beispiel für die Implementierung finden Sie unter: https://github.com/jheller/alb-rule - oder als Basis für Ihre eigene Implementierung. (Ich habe keine Zugehörigkeit zum obigen Code - nur für mein eigenes Bedürfnis gefunden, genau das gleiche zu tun.)
Es zeigt sich, dass redirect
derzeit nicht in CF implementiert ist, was leider von AWS - source zu erwarten ist.