Search code examples
graphqlaws-cliaws-appsync

How to send a GraphQL query to AWS AppSync from the commandline?


The AWS CLI for AppSync has a lovely array of functions to manage it remotely from the command line of my workstation such that mostly I do not have to use the browser console.

But to do a query I have to go into the web browser console and find GraphQl queries under AppSync. I can change all manner of things via the CLI, but I can't find a command that simply issues a graphql query.

Have I missed it? Is it there?
I don't want to look at this screen anymore...

AWS AppSync Queries


Solution

  • graphql-python/gql supports AWS AppSync since version 3.0.0rc0.

    It supports queries, mutation and even subscriptions on the realtime endpoint.

    It supports IAM, api key and JWT authentication methods.

    And it has a gql-cli script which allows you to execute queries, mutations and subscriptions from the command line.

    The documentation is available here

    For queries and mutations, use the --transport appsync_http argument:

    # Put the request in a file
    $ echo 'mutation createMessage($message: String!) {
      createMessage(input: {message: $message}) {
        id
        message
        createdAt
      }
    }' > mutation.graphql
    
    # Execute the request using gql-cli with --transport appsync_http
    $ cat mutation.graphql | gql-cli $AWS_GRAPHQL_API_ENDPOINT --transport appsync_http -V message:"Hello world!"
    

    For subscriptions, use the --transport appsync_websockets argument:

    echo "subscription{onCreateMessage{message}}" | gql-cli $AWS_GRAPHQL_API_ENDPOINT --transport appsync_websockets