Question:
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?
1 2 3 4 |
if (this._record.eventName === 'MODIFY' && this._record.NewImage!== this._record.OldImage ){ return this._remove(this._record.dynamodb); } |
Answer:
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.