This is the documentation for the old GraphQL Yoga v4.
We recommend
upgrading to the latest GraphQL Yoga v5. Migrate to GraphQL Yoga
v5.
Integration with Google Cloud Platform
Google Cloud Platform (GCP) is a suite of cloud computing services powered by Google. It is easy to use GraphQL Yoga with GCP.
Prerequisites
You will first need to install the GCP command-line tool: gcloud
.
You can find instructions here .
If you already have gcloud
installed, make sure it is up to date with gcloud components update
.
Create a new project and make sure billing is enabled .
Running these examples requires you to have billing enabled on your GCP account. It should not cost more than a few cents, but don’t forget to clean up your project after you are done to avoid unexpected charges.
Cloud Functions
Cloud Functions is a serverless execution environment for building and connecting cloud services. With Cloud Functions, you write simple, single-purpose functions that are attached to events, such as an HTTP request.
It is probably the most straight forward way to deploy a Yoga server to GCP.
Installation
npm i @google-cloud/functions-framework graphql-yoga graphql
Don’t forget to add the main
field to your package.json
. Google Cloud Functions rely on it to
know which file to run.
This example uses ESM syntax, so you should set "type": "module"
in your package.json
.
Usage
import { createSchema, createYoga } from 'graphql-yoga'
export const graphql = createYoga({
schema: createSchema({
typeDefs: /* GraphQL */ `
type Query {
greetings: String
}
`,
resolvers: {
Query: {
greetings: () => 'This is the `greetings` field of the root `Query` type'
}
}
}),
graphqlEndpoint: '*'
})
You can now deploy your function with gcloud
CLI:
$ gcloud functions deploy graphql --runtime nodejs18 --trigger-http --allow-unauthenticated
You can now test your function by using the URL found in the httpsTrigger.url
property returned by
the previous command or by using the gcloud
CLI:
gcloud functions describe graphql
You can also check a full example on our GitHub repository here
Cloud Run
Cloud Run is the Platform as a Service by Google. It is straightforward to use Yoga with it.
Installation
Create a new Node project and add Yoga to its dependencies.
npm i graphql-yoga graphql
This example uses ESM syntax, so you should set "type": "module"
in your package.json
.
Add a start
script to your package.json
. Cloud Run needs to know how to start your application.
{
"name": "graphql-yoga-cloud-run-guide",
"version": "1.0.0",
"type": "module",
"main": "src/index.js",
"scripts": {
"start": "node ."
},
"dependencies": {
"graphql": "^16.6.0",
"graphql-yoga": "^3.9.1"
}
}
Usage
Create a GraphQL server with your schema. You can use any HTTP server; here we will use Node’s HTTP implementation.
import { createServer } from 'node:http'
import { createSchema, createYoga } from 'graphql-yoga'
const yoga = createYoga({
schema: createSchema({
typeDefs: /* GraphQL */ `
type Query {
greetings: String
}
`,
resolvers: {
Query: {
greetings: () => 'This is the `greetings` field of the root `Query` type'
}
}
})
})
const server = createServer(yoga)
const port = parseInt(process.env.PORT) || 4000
server.listen(port, () => {
console.info(`Server is running on http://localhost:${port}${yoga.graphqlEndpoint}`)
})
You can now deploy to Cloud Run. You can use all default values, except the last one, which allows unauthenticated access to your service.
$ gcloud run deploy --source .
If this is your first time using Cloud Run, enabling the service can take up to a few minutes to
be fully effective. If you encounter any 403 Forbidden
errors, please wait for 2 minutes and try
again.
You can now access your API using the URL provided by gcloud
. The default GraphQL endpoint is
/graphql
.
If you need to use TypeScript or any other tool that requires a build phase, such as code generation, add a Dockerfile to the root of your project so that Cloud Run can build a custom image for you.
You can also check a full example in our GitHub repository here