I use serverless framework to deploy cloudFormation. I want to trigger lambda to deleteObject on my S3 bucket after I update my DynamoDB Table with certain attribute, eg. my table has account, user, icon, I only want when I update icon, it trigger Lambda to delete my iconObject on S3 bucket.
As I read the documentation on AWS, it seems the eventName of dynamoDB stream Event only have three status, REMOVE, MODIFY, INSERT.
Could I do as below? But how do I know it update icon instead other attribute like account or user?
if (this._record.eventName === 'MODIFY' && this._record.NewImage!== this._record.OldImage ){
return this._remove(this._record.dynamodb);
}
Your function can have multiple triggers. Each trigger acts as a client invoking your function independently. Each event that Lambda passes to your function has data from only one client or trigger. To process items from a stream or queue, you can create an event source mapping.
With DynamoDB Streams, you can trigger a Lambda function to perform additional work each time a DynamoDB table is updated. Lambda reads records from the stream and invokes your function synchronously with an event that contains stream records.
You are on the right track. If the DynamoDB StreamViewType is set to NEW_AND_OLD_IMAGES
then when record.eventName === 'MODIFY'
, record.dynamodb.NewImage
will contain the updated version of the item and record.dynamodb.OldImage
will contain what the item was before the update. You could then inspect the 2 objects and look for changes in the fields you are interested in.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With