AWS::ElasticLoadBalancingV2::Listener RedirectConfig - AWS CloudFormation

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 }

YAML

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" } }