Sakar
06/21/2022, 8:01 AMconst table = new Table(stack, "Table", {
cdk: {
table: dynamodb.Table.fromTableArn(
stack,
"ec.subscriptions",
"arn:aws:dynamodb:ap-south-1:146331168322:table/ec.subscriptions"
),
stream: true,
consumers: {
consumer1: "functions/lambda.handler",
},
},
});
I have not set any stream or trigger in my DynamoDB. I want to enable stream and trigger from SST.Adrian Schweizer
06/21/2022, 9:32 AMSakar
06/21/2022, 1:49 PMtable: dynamodb.Table.fromTableAttributes(stack, "ec.subscriptions", {
tableArn:
"arn:aws:dynamodb:ap-south-1:146331168322:table/ec.subscriptions",
tableStreamArn:
"arn:aws:dynamodb:ap-south-1:146331168322:table/ec.subscriptions/stream/2022-06-21T13:37:35.767",
}),
and added consumers like this:
table.addConsumers(stack, {
myConsumer: {
function: {
handler: "functions/hello.handler",
},
},
});
Know it deployed without any error.
I will test my consumers and give my feedback.Frank
Sakar
06/22/2022, 6:09 AMAdrian Schweizer
06/23/2022, 11:51 AMconst myEventSource = new DynamoEventSource(bla);
(replace bla with proper parameters)
2. Get the lambda function you want to be called by DynamoDB events from your SST API definition by doing const myLambda = api.getFunction("GET /myRoute");
(use the correct route definition as parameter)
3. Attach the DynamoEventSource to your lambda by doing myLambda.addEventSource(mySource);
4. Modify your DynamoEventSource to add the FilterCriteria (seems it's not possible directly using CDK yet):
const cfnSourceMapping = myEventSource.node.defaultChild as CfnEventSourceMapping
cfnSourceMapping.addPropertyOverride('FilterCriteria', {
Filters: [
{
Pattern:
JSON.stringify({
// Only capture DELETE events whose status IS deletion_requested"
dynamodb: {
OldImage: {
status: {S: ['banned']},
},
},
eventName: ['REMOVE'],
}),
},
],
})
Adrian Schweizer
06/23/2022, 11:53 AMAdrian Schweizer
06/23/2022, 11:54 AMAdrian Schweizer
06/23/2022, 2:03 PMAdrian Schweizer
06/23/2022, 2:05 PMAdrian Schweizer
06/23/2022, 2:16 PMAdrian Schweizer
06/23/2022, 2:21 PMconst table = new Table(stack, "Table", {
consumers: {
consumer1: {
function: "src/consumer1.main",
cdk: {
eventSource: myEventSource,
},
},
consumer2: "src/consumer2.main",
},
});