如何在AWS AppSync解析器中获取GraphQL查询?
在AWS AppSync解析器中访问原始GraphQL查询
要在Lambda解析器中获取完整的GraphQL查询内容,你可以通过AppSync提供的VTL上下文变量$context.request来获取,其中queryString字段就是原始的查询文本。只需修改Terraform中的请求模板,将该字段传递给Lambda的payload即可。
步骤1:修改Terraform的AppSync解析器请求模板
更新request_template的payload部分,新增query字段,把$context.request.queryString传入:
resource "aws_appsync_resolver" "graphql_event_resolver" { api_id = aws_appsync_graphql_api.appsync.id type = "Query" field = "event" data_source = aws_appsync_datasource.graphql_datasource.name request_template = <<EOF { "version" : "2017-02-28", "operation": "Invoke", "payload": { "resolve": "event", "arguments": $util.toJson($context.arguments), "query": $util.toJson($context.request.queryString) } } EOF response_template = var.response_template }
步骤2:更新Lambda解析器代码
在Lambda的handler中,直接从传入的event对象里读取query字段即可:
exports.handler = (event, context, callback) => { console.log('原始GraphQL查询:', event.query); console.log('VTL details: ', event); callback(null, event); };
额外说明
$context.request还包含其他有用的请求元数据,你可以按需添加到payload中:
$context.request.variables:查询中使用的变量键值对$context.request.headers:请求头信息$context.request.operationName:指定的GraphQL操作名称
内容的提问来源于stack exchange,提问作者Happy Koala
相关产品推荐
相关产品推荐

