diff --git a/changelogs/fragments/548-elb-target-group-app-stickiness.yaml b/changelogs/fragments/548-elb-target-group-app-stickiness.yaml
new file mode 100644
index 00000000000..8eafa0a6d04
--- /dev/null
+++ b/changelogs/fragments/548-elb-target-group-app-stickiness.yaml
@@ -0,0 +1,2 @@
+minor_changes:
+- elb_target_group - Add elb target group attributes ``stickiness_app_cookie_name`` and ``stickiness_app_cookie_duration_seconds``. Also update docs for stickiness_type to mention application cookie (https://github.com/ansible-collections/community.aws/pull/548)
diff --git a/docs/community.aws.elb_target_group_module.rst b/docs/community.aws.elb_target_group_module.rst
index 231df473c1d..e42913e8d92 100644
--- a/docs/community.aws.elb_target_group_module.rst
+++ b/docs/community.aws.elb_target_group_module.rst
@@ -468,7 +468,37 @@ Parameters
|
- The time period, in seconds, during which requests from a client should be routed to the same target. After this time period expires, the load balancer-generated cookie is considered stale. The range is 1 second to 1 week (604800 seconds).
+ The time period, in seconds, during which requests from a client should be routed to the same target. After this time period expires, the load balancer-generated cookie is considered stale. The range is 1 second to 1 week (604800 seconds). Assumes stickiness_type is set to lb_cookie .
+ |
+
+
+
+
+ stickiness_app_cookie_duration
+
+
+ integer
+
+ |
+
+ |
+
+ The time period, in seconds, during which requests from a client should be routed to the same target. After this time period expires, the load application-generated cookie is considered stale. The range is 1 second to 1 week (604800 seconds). Assumes stickiness_type is app_cookie .
+ |
+
+
+
+
+ stickiness_app_cookie_name
+
+
+ string
+
+ |
+
+ |
+
+ The name of the application session cookie. Assumes stickiness_type is set to app_cookie .
|
@@ -481,10 +511,16 @@ Parameters
+
+ Choices:
+ lb_cookie ←
+ - app_cookie
+ - source_ip
+
|
The type of sticky sessions.
- If not set AWS will default to lb_cookie for Application Load Balancers or source_ip for Network Load Balancers.
+ If not set AWS will default to lb_cookie for Application Load Balancers or source_ip for Network Load Balancers. For Application Load Balancers it is also possible to specify app_cookie for application managed cookies. Assumes stickiness_enabled is set to yes .
|
diff --git a/plugins/modules/elb_target_group.py b/plugins/modules/elb_target_group.py
index 4980fc797ad..53a25fa4419 100644
--- a/plugins/modules/elb_target_group.py
+++ b/plugins/modules/elb_target_group.py
@@ -102,9 +102,22 @@
- The time period, in seconds, during which requests from a client should be routed to the same target. After this time period expires, the load
balancer-generated cookie is considered stale. The range is 1 second to 1 week (604800 seconds).
type: int
+ stickiness_app_cookie_duration:
+ description:
+ - The time period, in seconds, during which requests from a client
+ should be routed to the same target. After this time period expires,
+ the application-generated cookie is considered stale. The range is 1 second to 1 week (604800 seconds).
+ type: int
+ version_added: 1.5.0
+ stickiness_app_cookie_name:
+ description:
+ - The name of the application cookie. Required if I(stickiness_type=app_cookie).
+ type: str
+ version_added: 1.5.0
stickiness_type:
description:
- The type of sticky sessions.
+ - Valid values are C(lb_cookie), C(app_cookie) or C(source_ip).
- If not set AWS will default to C(lb_cookie) for Application Load Balancers or C(source_ip) for Network Load Balancers.
type: str
successful_response_codes:
@@ -466,6 +479,8 @@ def create_or_update_target_group(connection, module):
stickiness_enabled = module.params.get("stickiness_enabled")
stickiness_lb_cookie_duration = module.params.get("stickiness_lb_cookie_duration")
stickiness_type = module.params.get("stickiness_type")
+ stickiness_app_cookie_duration = module.params.get("stickiness_app_cookie_duration")
+ stickiness_app_cookie_name = module.params.get("stickiness_app_cookie_name")
health_option_keys = [
"health_check_path", "health_check_protocol", "health_check_interval", "health_check_timeout",
@@ -753,6 +768,12 @@ def create_or_update_target_group(connection, module):
if stickiness_type is not None:
if stickiness_type != current_tg_attributes.get('stickiness_type'):
update_attributes.append({'Key': 'stickiness.type', 'Value': stickiness_type})
+ if stickiness_app_cookie_name is not None:
+ if stickiness_app_cookie_name != current_tg_attributes.get('stickiness_app_cookie_name'):
+ update_attributes.append({'Key': 'stickiness.app_cookie.cookie_name', 'Value': str(stickiness_app_cookie_name)})
+ if stickiness_app_cookie_duration is not None:
+ if str(stickiness_app_cookie_duration) != current_tg_attributes['stickiness_app_cookie_duration_seconds']:
+ update_attributes.append({'Key': 'stickiness.app_cookie.duration_seconds', 'Value': str(stickiness_app_cookie_duration)})
if update_attributes:
try:
@@ -833,6 +854,8 @@ def main():
stickiness_enabled=dict(type='bool'),
stickiness_type=dict(),
stickiness_lb_cookie_duration=dict(type='int'),
+ stickiness_app_cookie_duration=dict(type='int'),
+ stickiness_app_cookie_name=dict(),
state=dict(required=True, choices=['present', 'absent']),
successful_response_codes=dict(),
tags=dict(default={}, type='dict'),