def METHOD_NAME():
    argument_spec = dict(
        cluster_name=dict(type="str", required=True, aliases=["cluster"]),
        state=dict(type="str", choices=["present", "absent"], default="present"),
        region=dict(type="str", required=True, aliases=["source"]),
        destination_region=dict(type="str", required=True, aliases=["destination"]),
        snapshot_copy_grant=dict(type="str", aliases=["copy_grant"]),
        snapshot_retention_period=dict(type="int", required=True, aliases=["retention_period"]),
    )
    module = AnsibleAWSModule(
        argument_spec=argument_spec,
        supports_check_mode=True,
    )
    result = dict(
        changed=False,
        message="",
    )
    connection = module.client("redshift")
    snapshot_controller = SnapshotController(client=connection, cluster_name=module.params.get("cluster_name"))
    current_config = snapshot_controller.get_cluster_snapshot_copy_status()
    if current_config is not None:
        if module.params.get("state") == "present":
            if requesting_unsupported_modifications(current_config, module.params):
                message = (
                    "Cannot modify destination_region or grant_name. Please disable cross-region snapshots, and re-run."
                )
                module.fail_json(msg=message, **result)
            if needs_update(current_config, module.params):
                result["changed"] = True
                if not module.check_mode:
                    snapshot_controller.modify_snapshot_copy_retention_period(
                        module.params.get("snapshot_retention_period")
                    )
        else:
            result["changed"] = True
            if not module.check_mode:
                snapshot_controller.disable_snapshot_copy()
    else:
        if module.params.get("state") == "present":
            result["changed"] = True
            if not module.check_mode:
                snapshot_controller.enable_snapshot_copy(
                    module.params.get("destination_region"),
                    module.params.get("snapshot_copy_grant"),
                    module.params.get("snapshot_retention_period"),
                )
    module.exit_json(**result)