Darshan Ambhaikar
Darshan Ambhaikar

Reputation: 785

How to get file size from AWS S3 "ObjectRemoved:Delete" event

Background

I'm storing some files (objects) in S3 bucket. Whenever any file gets deleted from S3 bucket my Lambda function gets triggered. The lambda function needs to subtract the object size from DynamoDB.

Problem: S3 deleteObject event does not send object Size

Sample S3 deleteObject event

{
  "Records": [
    {
      "eventVersion": "2.0",
      "eventTime": "1970-01-01T00:00:00.000Z",
      "requestParameters": {
        "sourceIPAddress": "127.0.0.1"
      },
      "s3": {
        "configurationId": "testConfigRule",
        "object": {
          "sequencer": "0A1B2C3D4E5F678901",
          "key": "HappyFace.jpg"
        },
        "bucket": {
          "arn": "arn:aws:s3:::mybucket",
          "name": "sourcebucket",
          "ownerIdentity": {
            "principalId": "EXAMPLE"
          }
        },
        "s3SchemaVersion": "1.0"
      },
      "responseElements": {
        "x-amz-id-2": "EXAMPLE123/5678abcdefghijklambdaisawesome/mnopqrstuvwxyzABCDEFGH",
        "x-amz-request-id": "EXAMPLE123456789"
      },
      "awsRegion": "us-east-1",
      "eventName": "ObjectRemoved:Delete",
      "userIdentity": {
        "principalId": "EXAMPLE"
      },
      "eventSource": "aws:s3"
    }
  ]
}

Please help me find solution for my use case.

Upvotes: 5

Views: 2710

Answers (1)

Javier
Javier

Reputation: 2776

A way to do it is to enable versioning and check the metadata of the last version.

To avoid having the deleted version forever, you could setup an expiration policy or explicitly delete the version. I'd probably use both to catch cases where the event processor (the lambda function) fails and could not delete the file.

Upvotes: 2

Related Questions