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"
});