### Apache Airflow version

2.6.1

### What happened

Trying to connect to Vault using `auth_type` = `aws_iam`. I am receiving the following error: `AttributeError: 'Client' has no attribute 'auth_aws_iam'`. Looking through [the code](https://github.com/apache/airflow/blob/main/airflow/providers/hashicorp/_internal_client/vault_client.py#L303), you are using `client.auth_aws_iam`, but the [HVAC docs](https://hvac.readthedocs.io/en/stable/usage/auth_methods/aws.html#caveats-for-non-default-aws-regions) use `client.auth.aws.iam_login`. You should also add support for `boto3.Session()` to use role based access.

### What you think should happen instead

Airflow should authenticate to Vault using AWS auth.

### How to reproduce

Setup a secrets backend of `airflow.providers.hashicorp.secrets.vault.VaultBackend` and set `auth_type` = `aws_iam`. It will error out saying that the client doesn't have an attribute named `auth_aws_iam`.

### Operating System

Docker

### Versions of Apache Airflow Providers

_No response_

### Deployment

Official Apache Airflow Helm Chart

### Deployment details

_No response_

### Anything else

_No response_

### Are you willing to submit PR?

- [ ] 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)

"""
        Get secret value from the KV engine.
        :param secret_path: The path of the secret.
        :param secret_version: Specifies the version of Secret to return. If not set, the latest
            version is returned. (Can only be used in case of version 2 of KV).
        See https://hvac.readthedocs.io/en/stable/usage/secrets_engines/kv_v1.html
        and https://hvac.readthedocs.io/en/stable/usage/secrets_engines/kv_v2.html for details.
        :return: secret stored in the vault as a dictionary
        """
        mount_point = None
        try:
            mount_point, secret_path = self._parse_secret_path(secret_path)
            if self.kv_engine_version == 1:
                if secret_version:
                    raise VaultError("Secret version can only be used with version 2 of the KV engine")
                response = self.client.secrets.kv.v1.read_secret(path=secret_path, mount_point=mount_point)
            else:
                response = self.client.secrets.kv.v2.read_secret_version(
                    path=secret_path, mount_point=mount_point, version=secret_version
                )
        except InvalidPath:
            self.log.debug("Secret not found %s with mount point %s", secret_path, mount_point)
            return None
        return_data = response["data"] if self.kv_engine_version == 1 else response["data"]["data"]
        return return_data
    def get_secret_metadata(self, secret_path: str) -> dict | None: