<!-- Love localstack? Please consider supporting our collective:
👉  https://opencollective.com/localstack/donate -->

# Type of request: This is a ...

[ ] bug report
[x] feature request

# Detailed description
* Define a lambda function in a CDK stack (e.g. "TestStack"), giving it a descriptive ID value (e.g. "DescriptiveName")
* Deploy the CDK template (`cdklocal deploy`)
* Check the function's name in the dashboard

## Expected behavior
Function's name includes its CDK stack ID. For example, deploying the template to AWS will produce a function name of the form `<StackName>-<FunctionID><mishmash>` (e.g. TestStack-DescriptiveName8C62FF46-hXye7CyPgrc7)

## Actual behavior
Function's name has the form `<StackName>-lambda-<mishmash>` (e.g. TestStack-lambda-cb0e840d), making it more difficult to use in the localstack dashboard when there are several lambdas.

# Steps to reproduce
See detailed description

## Command used to start LocalStack
`LOCALSTACK_API_KEY=... localstack start`

## Client code (AWS SDK code snippet, or sequence of "awslocal" commands)
(none)
elif res_type == "AWS::ApiGateway::RestApi" and not props.get("Name"):
        props["Name"] = _generate_res_name()
    elif res_type == "AWS::ApiGateway::Stage" and not props.get("StageName"):
        props["StageName"] = "default"
    elif res_type == "AWS::ApiGateway::ApiKey" and not props.get("Name"):
        props["Name"] = _generate_res_name()
    elif res_type == "AWS::ApiGateway::UsagePlan" and not props.get("UsagePlanName"):
        props["UsagePlanName"] = _generate_res_name()
    elif res_type == "AWS::ApiGateway::Model" and not props.get("Name"):
        props["Name"] = _generate_res_name()
    elif res_type == "AWS::ApiGateway::RequestValidator" and not props.get("Name"):
        props["Name"] = _generate_res_name()
    elif res_type == "AWS::DynamoDB::Table":
        update_dynamodb_index_resource(resource)
        props["TableName"] = props.get("TableName") or _generate_res_name()
    elif res_type == "AWS::CloudWatch::Alarm":
        props["AlarmName"] = props.get("AlarmName") or _generate_res_name()
    elif res_type == "AWS::SecretsManager::Secret":
        props["Name"] = props.get("Name") or _generate_res_name()
    elif res_type == "AWS::S3::Bucket" and not props.get("BucketName"):
        existing_bucket = existing_resources.get(resource_id) or {}
        bucket_name = (
            existing_bucket.get("Properties", {}).get("BucketName") or _generate_res_name()
        )
        props["BucketName"] = s3_listener.normalize_bucket_name(bucket_name)
    elif res_type == "AWS::StepFunctions::StateMachine" and not props.get("StateMachineName"):
        props["StateMachineName"] = _generate_res_name()
    elif res_type == "AWS::CloudFormation::Stack" and not props.get("StackName"):
        props["StackName"] = _generate_res_name()
    elif res_type == "AWS::EC2::SecurityGroup":