0

I would like to be able to access the GraphQL query inside of my AWS AppSync resolvers, but have not been able to figure out how to go about achieving this.

I use Terraform to create the resolver, like so:

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)
    }
}
EOF

  response_template = var.response_template
}

Then I have a JavaScript resolver like the one below:

exports.handler = (event, context, callback) => {
    console.log('VTL details: ', event);
    callback(null, event);
};

I suspect the solution is to pass the query in the request template payload in the Terraform code where I create the resolver, but I have been unable to find any information on how to do this, so any help would be much appreciated.

Happy Koala
  • 239
  • 1
  • 3
  • 10

1 Answers1

0

Figured out, thanks to JWK's answer to this question, how to do it:

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": $utils.toJson($context.info.selectionSetList)
    }
}
EOF

  response_template = var.response_template
}
Happy Koala
  • 239
  • 1
  • 3
  • 10