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 + +
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'),