aws-cdk-lib.aws_appsync.RdsDataSource

class RdsDataSource (construct)

LanguageType name
.NETAmazon.CDK.AWS.AppSync.RdsDataSource
Gogithub.com/aws/aws-cdk-go/awscdk/v2/awsappsync#RdsDataSource
Javasoftware.amazon.awscdk.services.appsync.RdsDataSource
Pythonaws_cdk.aws_appsync.RdsDataSource
TypeScript (source)aws-cdk-lib » aws_appsync » RdsDataSource

Implements IConstruct, IDependable, IGrantable

An AppSync datasource backed by RDS.

Example

// Create username and password secret for DB Cluster
const secret = new rds.DatabaseSecret(this, 'AuroraSecret', {
  username: 'clusteradmin',
});

// The VPC to place the cluster in
const vpc = new ec2.Vpc(this, 'AuroraVpc');

// Create the serverless cluster, provide all values needed to customise the database.
const cluster = new rds.ServerlessCluster(this, 'AuroraCluster', {
  engine: rds.DatabaseClusterEngine.AURORA_MYSQL,
  vpc,
  credentials: { username: 'clusteradmin' },
  clusterIdentifier: 'db-endpoint-test',
  defaultDatabaseName: 'demos',
});

// Build a data source for AppSync to access the database.
declare const api: appsync.GraphqlApi;
const rdsDS = api.addRdsDataSource('rds', cluster, secret, 'demos');

// Set up a resolver for an RDS query.
rdsDS.createResolver('QueryGetDemosRdsResolver', {
  typeName: 'Query',
  fieldName: 'getDemosRds',
  requestMappingTemplate: appsync.MappingTemplate.fromString(`
  {
    "version": "2018-05-29",
    "statements": [
      "SELECT * FROM demos"
    ]
  }
  `),
  responseMappingTemplate: appsync.MappingTemplate.fromString(`
    $utils.toJson($utils.rds.toJsonObject($ctx.result)[0])
  `),
});

// Set up a resolver for an RDS mutation.
rdsDS.createResolver('MutationAddDemoRdsResolver', {
  typeName: 'Mutation',
  fieldName: 'addDemoRds',
  requestMappingTemplate: appsync.MappingTemplate.fromString(`
  {
    "version": "2018-05-29",
    "statements": [
      "INSERT INTO demos VALUES (:id, :version)",
      "SELECT * WHERE id = :id"
    ],
    "variableMap": {
      ":id": $util.toJson($util.autoId()),
      ":version": $util.toJson($ctx.args.version)
    }
  }
  `),
  responseMappingTemplate: appsync.MappingTemplate.fromString(`
    $utils.toJson($utils.rds.toJsonObject($ctx.result)[1][0])
  `),
});

Initializer

new RdsDataSource(scope: Construct, id: string, props: RdsDataSourceProps)

Parameters

  • scope Construct
  • id string
  • props RdsDataSourceProps

Construct Props

NameTypeDescription
apiIGraphqlApiThe API to attach this data source to.
secretStoreISecretThe secret containing the credentials for the database.
serverlessClusterIServerlessClusterThe serverless cluster to call to interact with this data source.
databaseName?stringThe name of the database to use within the cluster.
description?stringthe description of the data source.
name?stringThe name of the data source.
serviceRole?IRoleThe IAM service role to be assumed by AppSync to interact with the data source.

api

Type: IGraphqlApi

The API to attach this data source to.


secretStore

Type: ISecret

The secret containing the credentials for the database.


serverlessCluster

Type: IServerlessCluster

The serverless cluster to call to interact with this data source.


databaseName?

Type: string (optional, default: None)

The name of the database to use within the cluster.


description?

Type: string (optional, default: None)

the description of the data source.


name?

Type: string (optional, default: id of data source)

The name of the data source.


serviceRole?

Type: IRole (optional, default: Create a new role)

The IAM service role to be assumed by AppSync to interact with the data source.

Properties

NameTypeDescription
dsCfnDataSourcethe underlying CFN data source resource.
grantPrincipalIPrincipalthe principal of the data source to be IGrantable.
namestringthe name of the data source.
nodeNodeThe tree node.

ds

Type: CfnDataSource

the underlying CFN data source resource.


grantPrincipal

Type: IPrincipal

the principal of the data source to be IGrantable.


name

Type: string

the name of the data source.


node

Type: Node

The tree node.

Methods

NameDescription
createFunction(id, props)creates a new appsync function for this datasource and API using the given properties.
createResolver(id, props)creates a new resolver for this datasource and API using the given properties.
toString()Returns a string representation of this construct.

createFunction(id, props)

public createFunction(id: string, props: BaseAppsyncFunctionProps): AppsyncFunction

Parameters

  • id string
  • props BaseAppsyncFunctionProps

Returns

  • AppsyncFunction

creates a new appsync function for this datasource and API using the given properties.


createResolver(id, props)

public createResolver(id: string, props: BaseResolverProps): Resolver

Parameters

  • id string
  • props BaseResolverProps

Returns

  • Resolver

creates a new resolver for this datasource and API using the given properties.


toString()

public toString(): string

Returns

  • string

Returns a string representation of this construct.