AWS::ElasticLoadBalancingV2::Listener RedirectConfig
Information about a redirect action.
A URI consists of the following components: protocol://hostname:port/path?query. You must modify at least one of the following components to avoid a redirect loop: protocol, hostname, port, or path. Any components that you do not modify retain their original values.
You can reuse URI components using the following reserved keywords:
-
#{protocol}
-
#{host}
-
#{port}
-
#{path} (the leading "/" is removed)
-
#{query}
For example, you can change the path to "/new/#{path}", the hostname to "example.#{host}", or the query to "#{query}&value=xyz".
Syntax
To declare this entity in your AWS CloudFormation template, use the following syntax:
JSON
{ "Host" :
String
, "Path" :String
, "Port" :String
, "Protocol" :String
, "Query" :String
, "StatusCode" :String
}
Properties
Host
-
The hostname. This component is not percent-encoded. The hostname can contain #{host}.
Required: No
Type: String
Minimum:
1
Maximum:
128
Update requires: No interruption
Path
-
The absolute path, starting with the leading "/". This component is not percent-encoded. The path can contain #{host}, #{path}, and #{port}.
Required: No
Type: String
Minimum:
1
Maximum:
128
Update requires: No interruption
Port
-
The port. You can specify a value from 1 to 65535 or #{port}.
Required: No
Type: String
Update requires: No interruption
Protocol
-
The protocol. You can specify HTTP, HTTPS, or #{protocol}. You can redirect HTTP to HTTP, HTTP to HTTPS, and HTTPS to HTTPS. You cannot redirect HTTPS to HTTP.
Required: No
Type: String
Pattern:
^(HTTPS?|#\{protocol\})$
Update requires: No interruption
Query
-
The query parameters, URL-encoded when necessary, but not percent-encoded. Do not include the leading "?", as it is automatically added. You can specify any of the reserved keywords.
Required: No
Type: String
Minimum:
0
Maximum:
128
Update requires: No interruption
StatusCode
-
The HTTP redirect code. The redirect is either permanent (HTTP 301) or temporary (HTTP 302).
Required: Yes
Type: String
Allowed values:
HTTP_301 | HTTP_302
Update requires: No interruption
Examples
The following example creates a listener with a default action that redirects HTTP requests on port 80 to HTTPS requests on port 443, retaining the original host name, path, and query string.
YAML
HTTPlistener: Type: "AWS::ElasticLoadBalancingV2::Listener" Properties: DefaultActions: - Type: "redirect" RedirectConfig: Protocol: "HTTPS" Port: 443 Host: "#{host}" Path: "/#{path}" Query: "#{query}" StatusCode: "HTTP_301" LoadBalancerArn: !Ref myLoadBalancer Port: 80 Protocol: "HTTP"
JSON
"HTTPlistener": { "Type": "AWS::ElasticLoadBalancingV2::Listener", "Properties": { "DefaultActions": [ { "Type": "redirect", "RedirectConfig": { "Protocol": "HTTPS", "Port": 443, "Host": "#{host}", "Path": "/#{path}", "Query": "#{query}", "StatusCode": "HTTP_301" } } ], "LoadBalancerArn": { "Ref": "myLoadBalancer" }, "Port": 80, "Protocol": "HTTP" } }