### Is there an existing issue for this?

- [X] I have searched the existing issues

### Current Behavior

I'm executing a state machine using the following definition:

_(It's not a valid definition on AWS because the Parameters keys in the state StartTarget start with a lowercase for compatibility with LocalStack, see [9853](https://github.com/localstack/localstack/issues/9853))_

```json
{
  "StartAt": "SetupVariables",
  "States": {
    "SetupVariables": {
      "Type": "Pass",
      "Next": "StartTarget",
      "Parameters": {
        "input": {
          "key": "value"
        }
      }
    },
    "StartTarget": {
      "Type": "Task",
      "Resource": "arn:aws:states:::aws-sdk:sfn:startExecution",
      "Parameters": {
        "stateMachineArn": "arn:aws:states:eu-west-3:000000000000:stateMachine:my-state-machine",
        "input.$": "$.input"
      },
      "End": true
    }
  }
}
```

It fails with the following error:
```json
{
  "error": "States.Runtime",
  "cause": "UnknownServiceError(Unknown service: 'sfn'. Valid service names are: accessanalyzer, account, acm, acm-pca, alexaforbusiness, amp, amplify, amplifybackend, amplifyuibuilder, apigateway, apigatewaymanagementapi, apigatewayv2, appconfig, appconfigdata, appfabric, appflow, appintegrations, application-autoscaling, application-insights, applicationcostprofiler, appmesh, apprunner, appstream, appsync, arc-zonal-shift, athena, auditmanager, autoscaling, autoscaling-plans, backup, backup-gateway, backupstorage, batch, bedrock, bedrock-runtime, billingconductor, braket, budgets, ce, chime, chime-sdk-identity, chime-sdk-media-pipelines, chime-sdk-meetings, chime-sdk-messaging, chime-sdk-voice, cleanrooms, cloud9, cloudcontrol, clouddirectory, cloudformation, cloudfront, cloudfront-keyvaluestore, cloudhsm, cloudhsmv2, cloudsearch, cloudsearchdomain, cloudtrail, cloudtrail-data, cloudwatch, codeartifact, codebuild, codecatalyst, codecommit, codedeploy, codeguru-reviewer, codeguru-security, codeguruprofiler, codepipeline, codestar, codestar-connections, codestar-notifications, cognito-identity, cognito-idp, cognito-sync, comprehend, comprehendmedical, compute-optimizer, config, connect, connect-contact-lens, connectcampaigns, connectcases, connectparticipant, controltower, cur, customer-profiles, databrew, dataexchange, datapipeline, datasync, datazone, dax, detective, devicefarm, devops-guru, directconnect, discovery, dlm, dms, docdb, docdb-elastic, drs, ds, dynamodb, dynamodbstreams, ebs, ec2, ec2-instance-connect, ecr, ecr-public, ecs, efs, eks, elastic-inference, elasticache, elasticbeanstalk, elastictranscoder, elb, elbv2, emr, emr-containers, emr-serverless, entityresolution, es, events, evidently, finspace, finspace-data, firehose, fis, fms, forecast, forecastquery, frauddetector, fsx, gamelift, glacier, globalaccelerator, glue, grafana, greengrass, greengrassv2, groundstation, guardduty, health, healthlake, honeycode, iam, identitystore, imagebuilder, importexport, inspector, inspector-scan, inspector2, internetmonitor, iot, iot-data, iot-jobs-data, iot-roborunner, iot1click-devices, iot1click-projects, iotanalytics, iotdeviceadvisor, iotevents, iotevents-data, iotfleethub, iotfleetwise, iotsecuretunneling, iotsitewise, iotthingsgraph, iottwinmaker, iotwireless, ivs, ivs-realtime, ivschat, kafka, kafkaconnect, kendra, kendra-ranking, keyspaces, kinesis, kinesis-video-archived-media, kinesis-video-media, kinesis-video-signaling, kinesis-video-webrtc-storage, kinesisanalytics, kinesisanalyticsv2, kinesisvideo, kms, lakeformation, lambda, launch-wizard, lex-models, lex-runtime, lexv2-models, lexv2-runtime, license-manager, license-manager-linux-subscriptions, license-manager-user-subscriptions, lightsail, location, logs, lookoutequipment, lookoutmetrics, lookoutvision, m2, machinelearning, macie2, managedblockchain, managedblockchain-query, marketplace-catalog, marketplace-entitlement, marketplacecommerceanalytics, mediaconnect, mediaconvert, medialive, mediapackage, mediapackage-vod, mediapackagev2, mediastore, mediastore-data, mediatailor, medical-imaging, memorydb, meteringmarketplace, mgh, mgn, migration-hub-refactor-spaces, migrationhub-config, migrationhuborchestrator, migrationhubstrategy, mobile, mq, mturk, mwaa, neptune, neptunedata, network-firewall, networkmanager, nimble, oam, omics, opensearch, opensearchserverless, opsworks, opsworkscm, organizations, osis, outposts, panorama, payment-cryptography, payment-cryptography-data, pca-connector-ad, personalize, personalize-events, personalize-runtime, pi, pinpoint, pinpoint-email, pinpoint-sms-voice, pinpoint-sms-voice-v2, pipes, polly, pricing, privatenetworks, proton, qldb, qldb-session, quicksight, ram, rbin, rds, rds-data, redshift, redshift-data, redshift-serverless, rekognition, resiliencehub, resource-explorer-2, resource-groups, resourcegroupstaggingapi, robomaker, rolesanywhere, route53, route53-recovery-cluster, route53-recovery-control-config, route53-recovery-readiness, route53domains, route53resolver, rum, s3, s3control, s3outposts, sagemaker, sagemaker-a2i-runtime, sagemaker-edge, sagemaker-featurestore-runtime, sagemaker-geospatial, sagemaker-metrics, sagemaker-runtime, savingsplans, scheduler, schemas, sdb, secretsmanager, securityhub, securitylake, serverlessrepo, service-quotas, servicecatalog, servicecatalog-appregistry, servicediscovery, ses, sesv2, shield, signer, simspaceweaver, sms, sms-voice, snow-device-management, snowball, sns, sqs, sqs-query, ssm, ssm-contacts, ssm-incidents, ssm-sap, sso, sso-admin, sso-oidc, stepfunctions, storagegateway, sts, support, support-app, swf, synthetics, textract, timestream-query, timestream-write, tnb, transcribe, transfer, translate, trustedadvisor, verifiedpermissions, voice-id, vpc-lattice, waf, waf-regional, wafv2, wellarchitected, wisdom, workdocs, worklink, workmail, workmailmessageflow, workspaces, workspaces-web, xray)"
}
```

The error above states that sfn is not a valid service name. On the other hand it lists stepfunctions as valid. So I updated the provided definition to use stepfunctions instead of sfn. I then get the following error:

```json
{
  "error": "SFN.InvalidExecutionInputException",
  "cause": "the JSON object must be str, bytes or bytearray, not dict (Service: SFN, Status Code: 400, Request ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)"
}
```

It seems the input was not automatically converted to string. I changed the definition to pass `States.JsonToString($.input)` as input to StartTarget and it now works with both aws-sdk:sfn:startExecution and aws-sdk:stepfunctions:startExecution.

I think there are three issues here:
- The input of aws-sdk:sfn:startExecution is not automatically converted to string.
- When using aws-sdk:sfn:startExecution the returned error is incorrect. sfn is a valid service name when using aws-sdk on LocalStack Step Functions.
- stepfunctions is not a valid service name when using aws-sdk on AWS Step Functions.

### Expected Behavior

The input of aws-sdk:sfn:startExecution should be automatically converted to string.
sfn should appear in the list of valid service names for aws-sdk on Step Functions.
stepfunctions should not be a valid service name for aws-sdk on Step Functions.


### How are you starting LocalStack?

With a docker-compose file

### Steps To Reproduce

1. Make sure the target state machine exists, in the provided definition it is arn:aws:states:eu-west-3:000000000000:stateMachine:my-state-machine
2. Create and execute a state machine using the provided definition.
3. Apply the updates explained above to see the second error and the state machine finally working.

### Environment

```markdown
- LocalStack: 3.0.3.dev20231207105008
```


### Anything else?

I doubt this issue is only related to aws-sdk:sfn:startExecution. I had a similar issue with aws-sdk:sqs:sendMessage. I think there might be a general issue with automatic Parameters conversion when using aws-sdk on LocalStack Step Functions.
self,
        aws_client,
        create_iam_role_for_sfn,
        create_state_machine,
        dynamodb_create_table,
        snapshot,
    ):
        snapshot.add_transformer(snapshot.transform.dynamodb_api())
        table_name = f"sfn_test_table_{short_uid()}"
        dynamodb_create_table(table_name=table_name, partition_key="id", client=aws_client.dynamodb)
        template = ST.load_sfn_template(ST.AWS_SDK_DYNAMODB_PUT_GET_ITEM)
        definition = json.dumps(template)
        exec_input = json.dumps(
            {
                "TableName": table_name,
                "Item": {"data": {"S": "HelloWorld"}, "id": {"S": "id1"}},
                "Key": {"id": {"S": "id1"}},
            }
        )
        create_and_record_execution(
            aws_client.stepfunctions,
            create_iam_role_for_sfn,
            create_state_machine,
            snapshot,
            definition,
            exec_input,
        )
    @markers.aws.validated
    def test_dynamodb_put_delete_item(