Class GraphQlApi<RESOLVERS>

The GraphQlApi construct sets up an AWS AppSync GraphQL API integrated with Cognito for authentication and DynamoDB for data storage. This construct facilitates the creation of a GraphQL API with various configurations, including custom domain, logging, schema definition, and authorization using Cognito User Pool and Identity Pool. It also provides methods to dynamically add resolvers and grant access to specific fields.

Example

const api = new GraphQlApi(this, 'MyGraphQlApi', {
apiName: 'MyAPI',
stageName: 'dev',
definitionFileName: 'schema.graphql',
authentication: myCognitoAuth,
singleTableDatastore: myDynamoDBTable,
});

// Add a Lambda resolver
api.addLambdaResolver('Query', 'getItem');

// Grant access to unauthenticated users for a specific query
api.grantAccessUnAuth('Query', 'getItem');

Type Parameters

  • RESOLVERS

    The type definition for the GraphQL resolvers.

Hierarchy

Constructors

  • Creates an instance of GraphQlApi.

    Type Parameters

    • RESOLVERS

    Parameters

    • scope: Construct

      The scope in which this construct is defined.

    • id: string

      The scoped construct ID.

    • props: GraphQlApiProps

      The properties of the GraphQlApi construct.

    Returns GraphQlApi<RESOLVERS>

Properties

_functions: {
    [operationId: string]: LambdaFunction;
} = {}

A collection of Lambda functions used as resolvers for the GraphQL API.

Type declaration

api: GraphqlApi

The AWS AppSync GraphQL API instance.

apiDomainName?: string
apiFQDN?: string
apiHostName?: string

The Cognito authentication configuration.

hostedZone?: IHostedZone
node: Node

The tree node.

The properties of the GraphQlApi construct.

tableDataSource?: DynamoDbDataSource

The optional DynamoDB data source for the GraphQL API.

Methods

  • Type Parameters

    • TYPE extends string | number | symbol

    • FIELDTYPE extends {}

    Parameters

    • typeName: TYPE
    • fieldName: keyof FIELDTYPE
    • Optional options: JsResolverOptions
      Optional

    Returns void

  • Type Parameters

    • TYPE extends string | number | symbol

    • FIELDTYPE extends {}

    Parameters

    • typeName: TYPE
    • fieldName: keyof FIELDTYPE
    • Optional options: Omit<VtlResolverOptions, "dataSource">
      Optional

    Returns void

  • Type Parameters

    • TYPE extends string | number | symbol

    • FIELDTYPE extends {}

    Parameters

    • typeName: TYPE
    • fieldName: keyof FIELDTYPE
    • dataSource: BaseDataSource
    • Optional options: JsResolverOptions
      Optional

    Returns void

  • Type Parameters

    • TYPE extends string | number | symbol

    • FIELDTYPE extends {}

    Parameters

    • typeName: TYPE
    • fieldName: keyof FIELDTYPE

    Returns LambdaFunction

  • Type Parameters

    • TYPE extends string | number | symbol

    • FIELDTYPE extends {}

    Parameters

    Returns void

  • Parameters

    • entryFile: string
    • typeName: string
    • fieldName: string

    Returns void

  • Parameters

    • fn: JsResolverConfig
    • typeName: string
    • fieldName: string

    Returns void

  • getFunctionForOperation

    Type Parameters

    • TYPE extends string | number | symbol

    • FIELDTYPE extends {}

    Parameters

    • typeName: TYPE
    • fieldName: keyof FIELDTYPE

    Returns LambdaFunction

  • Type Parameters

    • TYPE extends string | number | symbol

    • FIELDTYPE extends {}

    Parameters

    • grantee: IGrantable
    • typeName: TYPE
    • Rest ...fieldNames: (keyof FIELDTYPE)[]
      Rest

    Returns void

  • Type Parameters

    • TYPE extends string | number | symbol

    • FIELDTYPE extends {}

    Parameters

    • typeName: TYPE
    • Rest ...fieldNames: (keyof FIELDTYPE)[]
      Rest

    Returns void

  • Type Parameters

    • TYPE extends string | number | symbol

    • FIELDTYPE extends {}

    Parameters

    • typeName: TYPE
    • Rest ...fieldNames: (keyof FIELDTYPE)[]
      Rest

    Returns void

  • Parameters

    • data: string
    • vars: {
          [name: string]: string;
      } = {}
      • [name: string]: string

    Returns string

  • Returns a string representation of this construct.

    Returns string

  • Checks if x is a construct.

    Use this method instead of instanceof to properly detect Construct instances, even when the construct library is symlinked.

    Explanation: in JavaScript, multiple copies of the constructs library on disk are seen as independent, completely different libraries. As a consequence, the class Construct in each copy of the constructs library is seen as a different class, and an instance of one class will not test as instanceof the other class. npm install will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the constructs library can be accidentally installed, and instanceof will behave unpredictably. It is safest to avoid using instanceof, and using this type-testing method instead.

    Parameters

    • x: any

      Any object

    Returns x is Construct

    true if x is an object created from a class which extends Construct.

Generated using TypeDoc