### Apache Airflow version

2.6.2

### What happened

We are currently on AWS Provider 6.0.0 and looking to upgrade to the latest version 8.2.0. However, there are some issues with the GlueCrawlerOperator making the upgrade challenging, namely that the operator attempts to update the crawler tags on every run. Because we manage our resource tagging through Terraform, we do not provide any tags to the operator, which results in all of the tags being deleted (as well as needing additional `glue:GetTags` and `glue:UntagResource` permissions needing to be added to relevant IAM roles to even run the crawler).

It seems strange that the default behaviour of the operator has been changed to make modifications to infrastructure, especially as this differs from the GlueJobOperator, which only performs updates when certain parameters are set. Potentially something similar could be done here, where if no `Tags` key is present in the `config` dict they aren't modified at all. Not sure what the best approach is. 

### What you think should happen instead

The crawler should run without any alterations to the existing infrastructure

### How to reproduce

Run a GlueCrawlerOperator without tags in config, against a crawler with tags present

### Operating System

Debian GNU/Linux 11 (bullseye)

### Versions of Apache Airflow Providers

Amazon 8.2.0

### Deployment

Official Apache Airflow Helm Chart

### Deployment details

_No response_

### Anything else

_No response_

### Are you willing to submit PR?

- [X] Yes I am willing to submit a PR!

### Code of Conduct

- [X] I agree to follow this project's [Code of Conduct](https://github.com/apache/airflow/blob/main/CODE_OF_CONDUCT.md)

"""
        Updates crawler configurations.
        .. seealso::
            - :external+boto3:py:meth:`Glue.Client.update_crawler`
        :param crawler_kwargs: Keyword args that define the configurations used for the crawler
        :return: True if crawler was updated and false otherwise
        """
        crawler_name = crawler_kwargs["Name"]
        current_crawler = self.get_crawler(crawler_name)
        tags_updated = self.update_tags(crawler_name, crawler_kwargs.pop("Tags", {}))
        update_config = {
            key: value
            for key, value in crawler_kwargs.items()
            if current_crawler.get(key, None) != crawler_kwargs.get(key)
        }
        if update_config:
            self.log.info("Updating crawler: %s", crawler_name)
            self.glue_client.update_crawler(**crawler_kwargs)
            self.log.info("Updated configurations: %s", update_config)
            return True
        return tags_updated
    def update_tags(self, crawler_name: str, crawler_tags: dict) -> bool: