### Is there an existing issue for this?

- [X] I have searched the existing issues

### Current Behavior

The Complete Multipart Upload operation generates the **InternalError** error for non-existing uploads.

### Expected Behavior

The Complete Multipart Upload operation generates the **NoSuchUpload** error for non-existing uploads.

### How are you starting LocalStack?

With a `docker run` command

### Steps To Reproduce

    docker run -it --rm -p 4566:4566 localstack/localstack

    aws s3api create-bucket --bucket test --endpoint-url http://localhost:4566 --create-bucket-configuration LocationConstraint=us-west-2

    aws s3api complete-multipart-upload --bucket test --endpoint-url http://localhost:4566 --key test --upload-id test

### Environment

```markdown
- OS: Windows 11
- LocalStack: latest
```


### Anything else?

The Abort Multipart Upload operation works correctly in LocalStack.

The official documentation: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html
Amazon S3 throws the correct **NoSuchUpload** error for both Abort and Complete operations.
routing_rules = website_config.get("RoutingRules", [])
        if len(routing_rules) == 0:
            raise MalformedXML()
        if len(routing_rules) > 50:
            raise "Something?"
        for routing_rule in routing_rules:
            redirect = routing_rule.get("Redirect", {})
            
            
            
            if "ReplaceKeyPrefixWith" in redirect and "ReplaceKeyWith" in redirect:
                raise InvalidRequest(
                    "You can only define ReplaceKeyPrefix or ReplaceKey but not both."
                )
            if "Condition" in routing_rule and not routing_rule.get("Condition", {}):
                raise InvalidRequest(
                    "Condition cannot be empty. To redirect all requests without a condition, the condition element shouldn't be present."
                )
            if (protocol := redirect.get("Protocol")) and protocol not in ("http", "https"):
                raise InvalidRequest(
                    "Invalid protocol, protocol can be http or https. If not defined the protocol will be selected automatically."
                )
def is_object_expired(
    context: RequestContext, bucket: BucketName, key: ObjectKey, version_id: str = None
) -> bool:
    moto_backend = get_moto_s3_backend(context)
    moto_bucket = get_bucket_from_moto(moto_backend, bucket)
    key_object = get_key_from_moto_bucket(moto_bucket, key, version_id=version_id)
    return is_key_expired(key_object=key_object)
def _create_redirect_for_post_request(