diff --git a/plugins/modules/s3_bucket.py b/plugins/modules/s3_bucket.py index 5ccbbf69fa6..e98b8af5ade 100644 --- a/plugins/modules/s3_bucket.py +++ b/plugins/modules/s3_bucket.py @@ -171,7 +171,7 @@ - Enables Amazon S3 Transfer Acceleration, sent data will be routed to Amazon S3 over an optimized network path. type: bool default: false - version_added: 7.6.0 + version_added: 8.1.0 extends_documentation_fragment: - amazon.aws.common.modules @@ -297,7 +297,7 @@ - amazon.aws.s3_bucket: name: mys3bucket state: present - accelerate: true + accelerate_enabled: true """ RETURN = r""" @@ -403,6 +403,11 @@ RestrictPublicBuckets: description: Specifies whether Amazon S3 should restrict public bucket policies for this bucket. type: bool +accelerate_enabled: + description: S3 bucket acceleration status. + type: bool + returned: O(state=present) + sample: true """ import json @@ -898,7 +903,7 @@ def handle_bucket_accelerate(s3_client, module: AnsibleAWSModule, name: str) -> and a dictionary containing the updated transfer accelerate setting. """ accelerate_enabled = module.params.get("accelerate_enabled") - accelerate_enabled_result = {} + accelerate_enabled_result = False accelerate_enabled_changed = False try: accelerate_status = get_bucket_accelerate_status(s3_client, name) @@ -915,18 +920,17 @@ def handle_bucket_accelerate(s3_client, module: AnsibleAWSModule, name: str) -> ) as e: # pylint: disable=duplicate-except module.fail_json_aws(e, msg="Failed to fetch bucket transfer acceleration state") else: - if accelerate_status is not None: - try: - if not accelerate_enabled and accelerate_status: - delete_bucket_accelerate_configuration(s3_client, name) - accelerate_enabled_changed = True - accelerate_enabled_result = False - if accelerate_enabled and not accelerate_status: - put_bucket_accelerate_configuration(s3_client, name) - accelerate_enabled_changed = True - accelerate_enabled_result = True - except (botocore.exceptions.BotoCoreError, botocore.exceptions.ClientError) as e: - module.fail_json_aws(e, msg="Failed to update bucket transfer acceleration") + try: + if not accelerate_enabled and accelerate_status: + delete_bucket_accelerate_configuration(s3_client, name) + accelerate_enabled_changed = True + accelerate_enabled_result = False + if accelerate_enabled and not accelerate_status: + put_bucket_accelerate_configuration(s3_client, name) + accelerate_enabled_changed = True + accelerate_enabled_result = True + except (botocore.exceptions.BotoCoreError, botocore.exceptions.ClientError) as e: + module.fail_json_aws(e, msg="Failed to update bucket transfer acceleration") return accelerate_enabled_changed, accelerate_enabled_result diff --git a/tests/integration/targets/s3_bucket/roles/s3_bucket/tasks/accelerate.yml b/tests/integration/targets/s3_bucket/roles/s3_bucket/tasks/accelerate.yml index bfc783fd6ae..f4def35f60c 100644 --- a/tests/integration/targets/s3_bucket/roles/s3_bucket/tasks/accelerate.yml +++ b/tests/integration/targets/s3_bucket/roles/s3_bucket/tasks/accelerate.yml @@ -47,6 +47,20 @@ - output.changed - output.accelerate_enabled + - name: Assert transfer acceleration enabled + amazon.aws.s3_bucket_info: + name: "{{ local_bucket_name }}" + bucket_facts: + bucket_accelerate_configuration: true + register: output + + - ansible.builtin.assert: + that: + - item.bucket_accelerate_configuration["Status"] == "Enabled" + loop: "{{ output.buckets }}" + loop_control: + label: "{{ item.name }}" + - name: Re-Enable transfer acceleration (idempotency) amazon.aws.s3_bucket: name: "{{ local_bucket_name }}" @@ -59,6 +73,20 @@ - not output.changed - output.accelerate_enabled + - name: Assert transfer acceleration enabled + amazon.aws.s3_bucket_info: + name: "{{ local_bucket_name }}" + bucket_facts: + bucket_accelerate_configuration: true + register: output + + - ansible.builtin.assert: + that: + - item.bucket_accelerate_configuration["Status"] == "Enabled" + loop: "{{ output.buckets }}" + loop_control: + label: "{{ item.name }}" + - name: Delete test s3 bucket amazon.aws.s3_bucket: name: "{{ local_bucket_name }}" @@ -83,6 +111,20 @@ - output.changed - output.accelerate_enabled + - name: Assert transfer acceleration enabled + amazon.aws.s3_bucket_info: + name: "{{ local_bucket_name }}" + bucket_facts: + bucket_accelerate_configuration: true + register: output + + - ansible.builtin.assert: + that: + - item.bucket_accelerate_configuration["Status"] == "Enabled" + loop: "{{ output.buckets }}" + loop_control: + label: "{{ item.name }}" + - name: Disable transfer accelerate amazon.aws.s3_bucket: name: "{{ local_bucket_name }}-2" @@ -96,6 +138,20 @@ - output.changed - not output.accelerate_enabled + - name: Assert transfer acceleration disabled + amazon.aws.s3_bucket_info: + name: "{{ local_bucket_name }}" + bucket_facts: + bucket_accelerate_configuration: true + register: output + + - ansible.builtin.assert: + that: + - item.bucket_accelerate_configuration["Status"] == "Disabled" + loop: "{{ output.buckets }}" + loop_control: + label: "{{ item.name }}" + - name: Re-Enable transfer accelerate (idempotency) amazon.aws.s3_bucket: name: "{{ local_bucket_name }}-2" @@ -108,6 +164,20 @@ - output.changed - output.accelerate_enabled + - name: Assert transfer acceleration enabled + amazon.aws.s3_bucket_info: + name: "{{ local_bucket_name }}" + bucket_facts: + bucket_accelerate_configuration: true + register: output + + - ansible.builtin.assert: + that: + - item.bucket_accelerate_configuration["Status"] == "Enabled" + loop: "{{ output.buckets }}" + loop_control: + label: "{{ item.name }}" + - name: Touch bucket with transfer accelerate enabled (idempotency) amazon.aws.s3_bucket: name: "{{ local_bucket_name }}-2"