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

# Type of request: This is a ...

[x] bug report
[ ] feature request

# Detailed description
VTL request containing an expression evaluated to String Concatenation does not work.

### Query
```
mutation createShop {
            createShop(shop: { shopName: "Apple" } ) {
              shopName
            }
          }
```

### VTL Template (**Works when deploy to Appsync on AWS services**)
```
{
  "version" : "2018-05-29",
  "operation" : "PutItem",
  "key" : {
    "PK": $util.dynamodb.toDynamoDBJson("SHOP#${ctx.args.shop.shopName}"),
    "SK": $util.dynamodb.toDynamoDBJson("PROFILE#$ctx.args.shop.shopName")
  },
  "attributeValues" : { "shopName": { "S": "Apple" }}
}
```

## Expected behavior
### Item stored in dynamodb 
```
{
            "PK": {
                "S": "SHOP#Apple"
            },
            "SK": {
                "S": "PROFILE#Apple"
            },
            "shopName": {
                "S": "Apple"
            }
        }
```


## Actual behavior
### Item stored in dynamodb 
```
{
            "PK": {
                "S": "SHOP#${ctx.args.shop.shopName}"
            },
            "SK": {
                "S": "PROFILE#$ctx.args.shop.shopName"
            },
            "shopName": {
                "S": "Apple"
            }
        }
```

# Steps to reproduce

## Command used to start LocalStack
docker-compose
````
version: '2.1'

services:
  localstack:
    container_name: "${LOCALSTACK_DOCKER_NAME-localstack_main}"
    image: localstack/localstack
    ports:
      - "4566-4700:4566-4700"
      - "443:443"
      - "${PORT_WEB_UI-8080}:${PORT_WEB_UI-8080}"
    environment:
      - SERVICES=serverless,cloudformation,dynamodb,iam,s3,appsync,edge
      - DEBUG=1
      - DATA_DIR=${DATA_DIR- }
      - PORT_WEB_UI=${PORT_WEB_UI- }
      - LAMBDA_EXECUTOR=${LAMBDA_EXECUTOR- }
      - KINESIS_ERROR_PROBABILITY=${KINESIS_ERROR_PROBABILITY- }
      - DOCKER_HOST=unix:///var/run/docker.sock
      - HOST_TMP_FOLDER=${TMPDIR}
      - LOCALSTACK_API_KEY=${LOCALSTACK_API_KEY}
    volumes:
      - "${TMPDIR:-/tmp/localstack}:/tmp/localstack"
      - "/var/run/docker.sock:/var/run/docker.sock"
````

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

...

result_data = result['Payload'].read()
        self.assertEqual(result['StatusCode'], 200)
        self.assertEqual(to_str(result_data).strip(), '{}')
        
        testutil.delete_lambda_function(TEST_LAMBDA_NAME_PY3)
    def test_handler_in_submodule(self):
        func_name = 'lambda-%s' % short_uid()
        zip_file = testutil.create_lambda_archive(
            load_file(TEST_LAMBDA_PYTHON), get_content=True,
            libs=TEST_LAMBDA_LIBS, runtime=LAMBDA_RUNTIME_PYTHON36,
            file_name='abc/def/main.py')
        testutil.create_lambda_function(func_name=func_name, zip_file=zip_file,
                                        handler='abc.def.main.handler', runtime=LAMBDA_RUNTIME_PYTHON36)
        
        result = self.lambda_client.invoke(FunctionName=func_name, Payload=b'{}')
        result_data = json.loads(result['Payload'].read())
        self.assertEqual(result['StatusCode'], 200)
        self.assertEqual(result_data['event'], json.loads('{}'))
    def test_python3_runtime_multiple_create_with_conflicting_module(self):
        original_do_use_docker = lambda_api.DO_USE_DOCKER
        try:
            
            lambda_api.DO_USE_DOCKER = False
            python3_with_settings1 = load_file(TEST_LAMBDA_PYTHON3_MULTIPLE_CREATE1, mode='rb')
            python3_with_settings2 = load_file(TEST_LAMBDA_PYTHON3_MULTIPLE_CREATE2, mode='rb')
            lambda_name1 = 'test1-%s' % short_uid()
            testutil.create_lambda_function(func_name=lambda_name1,
                                            zip_file=python3_with_settings1,
                                            runtime=LAMBDA_RUNTIME_PYTHON36,
                                            handler='handler1.handler')