Class DynamoDbDataSource

java.lang.Object
software.amazon.jsii.JsiiObject
software.constructs.Construct
All Implemented Interfaces:
IGrantable, software.amazon.jsii.JsiiSerializable, software.constructs.IConstruct, software.constructs.IDependable

@Generated(value="jsii-pacmak/1.104.0 (build e79254c)", date="2024-11-06T23:25:04.452Z") @Stability(Stable) public class DynamoDbDataSource extends BackedDataSource
An AppSync datasource backed by a DynamoDB table.

Example:

 GraphqlApi api = GraphqlApi.Builder.create(this, "Api")
         .name("demo")
         .definition(Definition.fromFile(join(__dirname, "schema.graphql")))
         .authorizationConfig(AuthorizationConfig.builder()
                 .defaultAuthorization(AuthorizationMode.builder()
                         .authorizationType(AuthorizationType.IAM)
                         .build())
                 .build())
         .xrayEnabled(true)
         .build();
 Table demoTable = Table.Builder.create(this, "DemoTable")
         .partitionKey(Attribute.builder()
                 .name("id")
                 .type(AttributeType.STRING)
                 .build())
         .build();
 DynamoDbDataSource 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", BaseResolverProps.builder()
         .typeName("Query")
         .fieldName("getDemos")
         .requestMappingTemplate(MappingTemplate.dynamoDbScanTable())
         .responseMappingTemplate(MappingTemplate.dynamoDbResultList())
         .build());
 // Resolver for the Mutation "addDemo" that puts the item into the DynamoDb table.
 demoDS.createResolver("MutationAddDemoResolver", BaseResolverProps.builder()
         .typeName("Mutation")
         .fieldName("addDemo")
         .requestMappingTemplate(MappingTemplate.dynamoDbPutItem(PrimaryKey.partition("id").auto(), Values.projecting("input")))
         .responseMappingTemplate(MappingTemplate.dynamoDbResultItem())
         .build());
 //To enable DynamoDB read consistency with the `MappingTemplate`:
 demoDS.createResolver("QueryGetDemosConsistentResolver", BaseResolverProps.builder()
         .typeName("Query")
         .fieldName("getDemosConsistent")
         .requestMappingTemplate(MappingTemplate.dynamoDbScanTable(true))
         .responseMappingTemplate(MappingTemplate.dynamoDbResultList())
         .build());
 
  • Constructor Details

    • DynamoDbDataSource

      protected DynamoDbDataSource(software.amazon.jsii.JsiiObjectRef objRef)
    • DynamoDbDataSource

      protected DynamoDbDataSource(software.amazon.jsii.JsiiObject.InitializationMode initializationMode)
    • DynamoDbDataSource

      @Stability(Stable) public DynamoDbDataSource(@NotNull software.constructs.Construct scope, @NotNull String id, @NotNull DynamoDbDataSourceProps props)
      Parameters:
      scope - This parameter is required.
      id - This parameter is required.
      props - This parameter is required.