### Apache Airflow Provider(s)

amazon

### Versions of Apache Airflow Providers

_No response_

### Apache Airflow version

2.5.0

### Operating System

MacOS

### Deployment

Virtualenv installation

### Deployment details

AWS Lambda in Amazon provider package do not follow the convention #20296. Hook, operators and sensors related to AWS lambda need to be renamed to follow this convention. Here are the proposed changes in order to fix it:
- Rename `airflow/providers/amazon/aws/operators/lambda_function.py` to `airflow/providers/amazon/aws/operators/lambda.py`
- Rename `airflow/providers/amazon/aws/sensors/lambda_function.py` to `airflow/providers/amazon/aws/sensors/lambda.py`
- Rename `airflow/providers/amazon/aws/hooks/lambda_function.py` to `airflow/providers/amazon/aws/hooks/lambda.py`
- Rename `AwsLambdaInvokeFunctionOperator` to `LambdaInvokeFunctionOperator`

Since all these changes are breaking changes, it will have to be done following the deprecation pattern:
- Copy/paste the files with the new name
- Update the existing hook, operators and sensors to inherit from these new classes
- Deprecate these classes by sending deprecation warnings. See an example [here](airflow/providers/amazon/aws/operators/aws_lambda.py)

### What happened

_No response_

### What you think should happen instead

_No response_

### How to reproduce

N/A

### 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)

current_test_files = (f for f in current_test_files if not f.endswith("__init__.py"))
        modules_files = set(modules_files)
        expected_test_files = set(expected_test_files)
        current_test_files = set(current_test_files)
        missing_tests_files = expected_test_files - expected_test_files.intersection(current_test_files)
        assert set() == missing_tests_files, "Detect missing tests in providers module"
def get_imports_from_file(filepath: str):
    with open(filepath) as py_file:
        content = py_file.read()
    doc_node = ast.parse(content, filepath)
    import_names: set[str] = set()
    for current_node in ast.walk(doc_node):
        if not isinstance(current_node, (ast.Import, ast.ImportFrom)):
            continue
        for alias in current_node.names:
            name = alias.name
            fullname = f"{current_node.module}.{name}" if isinstance(current_node, ast.ImportFrom) else name
            import_names.add(fullname)
    return import_names
def filepath_to_module(filepath: str):
    filepath = os.path.relpath(os.path.abspath(filepath), ROOT_FOLDER)
    return filepath.replace("/", ".")[: -(len(".py"))]
def print_sorted(container: set, indent: str = "    ") -> None:
    sorted_container = sorted(container)
    print(f"{indent}" + f"\n{indent}".join(sorted_container))
class ProjectStructureTest:
    PROVIDER = "blank"
    CLASS_DIRS = {"operators", "sensors", "transfers"}
    CLASS_SUFFIXES = ["Operator", "Sensor"]
    def class_paths(self):