Skip to content

GraphQLSchema ​

The GraphQLSchema resource allows you to manage AWS AppSync GraphQLSchemas for your applications. This resource helps define the shape of your API and manage its schema effectively.

Minimal Example ​

Create a basic GraphQL schema using a string definition and specify the API ID.

ts
import AWS from "alchemy/aws/control";

const basicSchema = await AWS.AppSync.GraphQLSchema("basicSchema", {
  Definition: `
    type Query {
      getUser(id: ID!): User
    }
    type User {
      id: ID!
      name: String
    }
  `,
  ApiId: "your-api-id-12345"
});

Advanced Configuration ​

You can also specify a schema definition stored in an S3 bucket for larger schemas.

ts
const advancedSchema = await AWS.AppSync.GraphQLSchema("advancedSchema", {
  DefinitionS3Location: "s3://your-bucket-name/graphql-schema.graphql",
  ApiId: "your-api-id-67890"
});

Adopting Existing Resources ​

If you want to adopt an existing GraphQL schema instead of creating a new one, you can set the adopt property to true.

ts
const existingSchema = await AWS.AppSync.GraphQLSchema("existingSchema", {
  ApiId: "your-api-id-12345",
  adopt: true
});

Schema with Multiple Types ​

Here's how to define a more complex schema with multiple types and queries.

ts
const complexSchema = await AWS.AppSync.GraphQLSchema("complexSchema", {
  Definition: `
    type Query {
      listUsers: [User]
      getPost(id: ID!): Post
    }
    type User {
      id: ID!
      name: String
      posts: [Post]
    }
    type Post {
      id: ID!
      title: String
      content: String
    }
  `,
  ApiId: "your-api-id-98765"
});