<!-- 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

I'm using localstack to create a dynamoDb table locally with a dynamodb stream and a flink application consuming data from the stream
The shardId created in localstack follows this format

shardId-000000000000-798cedd84a2953c5af70a131f8701f35

Flink expects this format
shardId-00000001592367572726-07776efd

The difference is just after the prefix shardId.
Normally the real shardId created by amazon use is composed by shardId prefix, 20-digit timestamp and 0-36 or more characters separated by '-'

The current shardId format is not valid for flink applications and it's not following the real pattern used by amazon

## Expected behavior

ShardId must follow the pattern
shardId prefix, 20-digit timestamp and 0-36 or more characters separated by '-'

## Actual behavior

The shardId follows the pattern
shardId prefix, 12 0s and 33 characters separated by '-'

# Steps to reproduce

Create a dynamodb table

## Command used to start LocalStack

I'm using docker and docker compose to run localstack


## Client code (AWS SDK code snippet, or sequence of "awslocal" commands)

aws --endpoint-url=http://localhost:4566 dynamodb create-table \
    --table-name temp4 \
    --attribute-definitions AttributeName=partition_key,AttributeType=S AttributeName=sort_key,AttributeType=S \
    --key-schema AttributeName=partition_key,KeyType=HASH AttributeName=sort_key,KeyType=RANGE \
    --provisioned-throughput ReadCapacityUnits=100,WriteCapacityUnits=100 \
    --stream-specification StreamEnabled=true,StreamViewType=NEW_AND_OLD_IMAGES


try:
        credential_scope = auth_header.split(',')[0].split()[1]
        _, _, _, service, _ = credential_scope.split('/')
        result = service, get_service_port_for_account(service, headers)
    except Exception:
        pass
    result_before = result
    
    if host.endswith('cloudfront.net'):
        path = path or '/'
        result = 'cloudfront', config.PORT_CLOUDFRONT
    elif target.startswith('AWSCognitoIdentityProviderService') or 'cognito-idp.' in host:
        result = 'cognito-idp', config.PORT_COGNITO_IDP
    elif target.startswith('AWSCognitoIdentityService') or 'cognito-identity.' in host:
        result = 'cognito-identity', config.PORT_COGNITO_IDENTITY
    elif result[0] == 's3' or re.match(r'.*s3(\-website)?\.([^\.]+\.)?amazonaws.com', host):
        host = re.sub(r's3-website\..*\.amazonaws', 's3.amazonaws', host)
        result = 's3', config.PORT_S3
    elif result[0] == 'states' in auth_header or host.startswith('states.'):
        result = 'stepfunctions', config.PORT_STEPFUNCTIONS
    elif '.execute-api.' in host:
        result = 'apigateway', config.PORT_APIGATEWAY
    elif target.startswith('DynamoDBStreams') or host.startswith('streams.dynamodb.'):
        
        result = result_before = 'dynamodbstreams', config.PORT_DYNAMODBSTREAMS
    elif ls_target == 'web' or path == '/graph':
        result = 'web', config.PORT_WEB_UI
    return result[0], result_before[1] or result[1], path, host
def is_s3_form_data(data_bytes):