AppSync query resolvedor: expressionNames e expressionValues são necessários?

https: //docs.aws.amazon.com/appsync/latest/devguide/resolver-mapping-template-reference-dynamodb.html#aws-appsync-resolver-mapping-template-replate-reference-dynamodb-quer

documento @AppSync diz queexpressionNames eexpressionValues são campos opcionais, mas sempre são preenchidos por geração de código. Primeira pergunta, eles devem ser incluídos como uma prática recomendada ao trabalhar com o DynamoDB? Se sim, por quê?

AppSync resolvedor para uma consulta na chave de partição:

{
    "version": "2017-02-28",
    "operation": "Query",
    "query": {
        "expression": "#partitionKey = :partitionKey",
        "expressionNames": {
            "#partitionKey": "partitionKey"
        },
        "expressionValues": {
            ":partitionKey": {
                "S": "${ctx.args.partitionKey}"
            }
        }
    }
}

egunda questão, o que exatamente é a tradução leiga doexpression campo aqui no código acima? O que exatamente essa declaração está dizendo ao DynamoDB para fazer? Qual é o uso do# em"expression": "#partitionKey = :partitionKey" e os nomes e valores da expressão estão apenas formatando salvaguardas?

questionAnswers(1)

yourAnswerToTheQuestion