Show / Hide Table of Contents

Class DynamoDbDataSource

An AppSync datasource backed by a DynamoDB table.

Inheritance
object
BaseDataSource
BackedDataSource
DynamoDbDataSource
Implements
IGrantable
Inherited Members
BackedDataSource.GrantPrincipal
BaseDataSource.CreateFunction(string, IBaseAppsyncFunctionProps)
BaseDataSource.CreateResolver(string, IBaseResolverProps)
BaseDataSource.Ds
BaseDataSource.Name
BaseDataSource.Api
BaseDataSource.ServiceRole
Namespace: Amazon.CDK.AWS.AppSync
Assembly: Amazon.CDK.Lib.dll
Syntax (csharp)
public class DynamoDbDataSource : BackedDataSource, IGrantable
Syntax (vb)
Public Class DynamoDbDataSource Inherits BackedDataSource Implements IGrantable
Remarks

ExampleMetadata: infused

Examples
var api = new GraphqlApi(this, "Api", new GraphqlApiProps {
                Name = "demo",
                Definition = Definition.FromFile(Join(__dirname, "schema.graphql")),
                AuthorizationConfig = new AuthorizationConfig {
                    DefaultAuthorization = new AuthorizationMode {
                        AuthorizationType = AuthorizationType.IAM
                    }
                },
                XrayEnabled = true
            });

            var demoTable = new Table(this, "DemoTable", new TableProps {
                PartitionKey = new Attribute {
                    Name = "id",
                    Type = AttributeType.STRING
                }
            });

            var demoDS = api.AddDynamoDbDataSource("demoDataSource", demoTable);

            // Resolver for the Query "getDemos" that scans the DynamoDb table and returns the entire list.
            // Resolver Mapping Template Reference:
            // https://docs.aws.amazon.com/appsync/latest/devguide/resolver-mapping-template-reference-dynamodb.html
            demoDS.CreateResolver("QueryGetDemosResolver", new BaseResolverProps {
                TypeName = "Query",
                FieldName = "getDemos",
                RequestMappingTemplate = MappingTemplate.DynamoDbScanTable(),
                ResponseMappingTemplate = MappingTemplate.DynamoDbResultList()
            });

            // Resolver for the Mutation "addDemo" that puts the item into the DynamoDb table.
            demoDS.CreateResolver("MutationAddDemoResolver", new BaseResolverProps {
                TypeName = "Mutation",
                FieldName = "addDemo",
                RequestMappingTemplate = MappingTemplate.DynamoDbPutItem(PrimaryKey.Partition("id").Auto(), Values.Projecting("input")),
                ResponseMappingTemplate = MappingTemplate.DynamoDbResultItem()
            });

            //To enable DynamoDB read consistency with the `MappingTemplate`:
            demoDS.CreateResolver("QueryGetDemosConsistentResolver", new BaseResolverProps {
                TypeName = "Query",
                FieldName = "getDemosConsistent",
                RequestMappingTemplate = MappingTemplate.DynamoDbScanTable(true),
                ResponseMappingTemplate = MappingTemplate.DynamoDbResultList()
            });

Synopsis

Constructors

DynamoDbDataSource(Construct, string, IDynamoDbDataSourceProps)

An AppSync datasource backed by a DynamoDB table.

Properties

PROPERTY_INJECTION_ID

Uniquely identifies this class.

Constructors

DynamoDbDataSource(Construct, string, IDynamoDbDataSourceProps)

An AppSync datasource backed by a DynamoDB table.

public DynamoDbDataSource(Construct scope, string id, IDynamoDbDataSourceProps props)
Parameters
scope Construct
id string
props IDynamoDbDataSourceProps
Remarks

ExampleMetadata: infused

Examples
var api = new GraphqlApi(this, "Api", new GraphqlApiProps {
                Name = "demo",
                Definition = Definition.FromFile(Join(__dirname, "schema.graphql")),
                AuthorizationConfig = new AuthorizationConfig {
                    DefaultAuthorization = new AuthorizationMode {
                        AuthorizationType = AuthorizationType.IAM
                    }
                },
                XrayEnabled = true
            });

            var demoTable = new Table(this, "DemoTable", new TableProps {
                PartitionKey = new Attribute {
                    Name = "id",
                    Type = AttributeType.STRING
                }
            });

            var demoDS = api.AddDynamoDbDataSource("demoDataSource", demoTable);

            // Resolver for the Query "getDemos" that scans the DynamoDb table and returns the entire list.
            // Resolver Mapping Template Reference:
            // https://docs.aws.amazon.com/appsync/latest/devguide/resolver-mapping-template-reference-dynamodb.html
            demoDS.CreateResolver("QueryGetDemosResolver", new BaseResolverProps {
                TypeName = "Query",
                FieldName = "getDemos",
                RequestMappingTemplate = MappingTemplate.DynamoDbScanTable(),
                ResponseMappingTemplate = MappingTemplate.DynamoDbResultList()
            });

            // Resolver for the Mutation "addDemo" that puts the item into the DynamoDb table.
            demoDS.CreateResolver("MutationAddDemoResolver", new BaseResolverProps {
                TypeName = "Mutation",
                FieldName = "addDemo",
                RequestMappingTemplate = MappingTemplate.DynamoDbPutItem(PrimaryKey.Partition("id").Auto(), Values.Projecting("input")),
                ResponseMappingTemplate = MappingTemplate.DynamoDbResultItem()
            });

            //To enable DynamoDB read consistency with the `MappingTemplate`:
            demoDS.CreateResolver("QueryGetDemosConsistentResolver", new BaseResolverProps {
                TypeName = "Query",
                FieldName = "getDemosConsistent",
                RequestMappingTemplate = MappingTemplate.DynamoDbScanTable(true),
                ResponseMappingTemplate = MappingTemplate.DynamoDbResultList()
            });

Properties

PROPERTY_INJECTION_ID

Uniquely identifies this class.

public static string PROPERTY_INJECTION_ID { get; }
Property Value

string

Remarks

ExampleMetadata: infused

Implements

IGrantable
Back to top Generated by DocFX